elasticsearch 集群搭建及启动常见错误
1.系统环境
三台服务器(最好是单数台,跟master选举方式有关),确保机器互相ping的通,且都需要装了jdk 8环境,机器IP和 elasticsearch 的节点名称如下:
cluster name |
node name |
IP Addr |
说明 |
local_ES |
node-01 |
192.168.2.10 |
|
local_ES |
node-02 |
192.168.2.11 |
|
local_ES |
node-03 |
192.168.2.12 |
|
2.安装部署
官网下载linux下安装包,https://www.elastic.co/downloads/past-releases,我们使用的版本是6.7.2,使用 wget 命令下载文件。
$> wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gz
解压到 opt 目录,命令如下:
$> tar -xvf elasticsearch-6.7.2.tar.gz -C /opt
由于安全原因,不能用 root 用户运行,所以需要添加 es 组和 es 用户,并赋予其文件夹权限,命令如下:
$> groupadd es
$> useradd es -g es -p es
$> chown es:es /opt/elasticsearch-6.7.2
$> chown es /opt/elasticsearch-6.7.2 -R
设置最大线程数量,如果不进行设置,会出现如下异常:
max number of threads [3818] for user [es] is too low, increase to at least [4096]
修改文件:
$> vi /etc/security/limits.conf
增加文件内容如下:
* soft nproc 4096
* hard nproc 4096
设置 elasticsearch 进程打开文件最大数量,如果不进行设置,会出现如下异常:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
修改文件:
$> vi /etc/security/limits.conf
增加文件内容如下:
* soft nofile 65536
* hard nofile 65536
设置最大虚拟内存,如果不进行设置,会出现如下异常:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改文件:
$> vi /etc/sysctl.conf
增加文件内容如下:
vm.max_map_count=262144
然后执行 sysctl -p 来生效修改
3.安装插件
安装中文分词插件,插件的 Github 地址为 https://github.com/medcl/elasticsearch-analysis-ik/ ,使用 bin 目录下的 elasticsearch-plugin 命令来进行安装,命令如下:
$> ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.2/elasticsearch-analysis-ik-6.7.2.zip
4.集群配置
通过 cluster.name 属性配置集群的名字,用于唯一标识一个集群,不同的集群,其 cluster.name 不同,集群名字相同的所有节点自动组成一个集群。如果不配置改属性,默认值是:elasticsearch。当启动一个结点时,该结点会自动寻找相同集群名字的主结点;如果找到主结点,该结点加入集群中;如果未找到主结点,该结点成为主结点。集群相关配置如下:
属性 |
缺省值 |
描述 |
cluster.name |
federated_cluster |
Elasticsearch 集群名称。使用集群可将单独 Process Federation Server 绑定到单个分布式系统中。参与集群的所有服务器都必须具有相同的集群名称。 |
node.name |
node1 |
Elasticsearch 节点名。集群中的每个 Process Federation Server 都必须具有唯一节点名。 |
transport.tcp.port |
9300 |
用于某个集群中 Elasticsearch 节点之间的通信的端口。 |
discovery.zen.ping.unicasts.hosts |
localhost |
提供其他 Elasticsearch 服务节点的单点广播发现功能。配置集群中基于主机 TCP 端口的其他 Elasticsearch 服务的逗号分隔列表。 例如: discovery.zen.ping.unicast.hosts: ["192.168.2.10", "192.168.2.11","192.168.2.12"]
有关更多信息,请参阅 Elasticsearch 文档 。 |
5.配置属性
属性 |
缺省值 |
描述 |
cluster.name |
federated_cluster |
Elasticsearch 集群名称。使用集群可将单独 Process Federation Server 绑定到单个分布式系统中。参与集群的所有服务器都必须具有相同的集群名称。 |
node.name |
node1 |
Elasticsearch 节点名。集群中的每个 Process Federation Server 都必须具有唯一节点名。 |
node.master |
true |
指示某个节点是否符合成为主节点的条件。主节点管理 Elasticsearch 集群的状态。在运行时,Elasticsearch 服务会自动提名某一个合格的集群成员成为主节点。 仅当您想要对专用主节点和数据节点采用高级配置时,才将该值设置为 false。此类型的配置并不常用。 |
node.data |
true |
指示节点是否为数据节点。数据节点包含并管理索引的一部分。 仅当您想要对专用主节点和数据节点采用高级配置时,才将该值设置为 false。此类型的配置并不常用。 |
network.host |
127.0.0.1 |
将绑定地址设置为特定的IP |
http.port |
9200 |
如果启用了 HTTP 端口,那么此属性指定由 Elasticsearch 服务使用的端口。 |
http.cors.enabled |
true |
如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。 |
http.cors.allowed.origin |
localhost |
如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。 |
transport.tcp.port |
9300 |
用于某个集群中 Elasticsearch 节点之间的通信的端口。 |
discovery.zen.minimum_master_nodes |
1 |
指示某个集群定额所需的 Process Federation Server 的数量。 缺省值为 1 表示单服务器环境。对于生产环境,请将该值设置为组成定额所需的 Process Federation Server 的数量。例如,如果在集群中总计有三个 Process Federation Server,请将该值设置为"2",如果在集群中总计有五个 Process Federation Server,请将该值设置为"3"。 有关更多信息,请参阅 Elasticsearch 文档。 |
discovery.zen.ping.multicast.enabled |
false |
通过发送节点所接收和响应的一个或多个多点广播请求来提供对其他 Elasticsearch 服务节点的多点广播 ping 发现功能。有关更多信息,请参阅 Elasticsearch 文档。 |
discovery.zen.ping.unicasts.hosts |
localhost |
提供其他 Elasticsearch 服务节点的单点广播发现功能。配置集群中基于主机 TCP 端口的其他 Elasticsearch 服务的逗号分隔列表。 例如: discovery.zen.ping.unicast.hosts="localhost:9300,localhost:9301,localhost:9302
有关更多信息,请参阅 Elasticsearch 文档 。 |
discovery.zen.ping.timeout |
3s |
Elastic 搜索节点等待加入 Elasticsearch 集群的时间。 |