Elasticsearch搭建集群

121

修改配置

1
vi /etc/sysctl.conf

在最后一行新增

1
vm.max_map_count=262144

立即生效

1
/sbin/sysctl -p

修改es节点配置

第一个节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#集群名称 cluster.name: my-es #当前该节点的名称 node.name: node-1 #是不是有资格竞选主节点 node.master: true #是否存储数据 node.data: true #最大集群节点数 #node.max_local_storage_nodes: 3 #给当前节点自定义属性(可以省略) #node.attr.rack: r1 #是否开启时锁定内存(默认为是) #bootstrap.memory_lock: true #设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址, #然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0 network.host: 0.0.0.0 #设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址, #如果是docker安装节点的IP将会是配置的IP而不是docker网管ip network.publish_host: 192.168.239.129 #设置映射端口 http.port: 9201 #内部节点之间沟通端口 transport.tcp.port: 9301 #集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写 #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上 discovery.seed_hosts: ["192.168.239.129:9300","192.168.239.129:9301","192.168.239.129:9302"] #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了, #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者, #如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上 cluster.initial_master_nodes: ["node-1","node-2","node-3"] #在群集完全重新启动后阻止初始恢复,直到启动N个节点 #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用, gateway.recover_after_nodes: 1 #删除索引是是否需要显示其名称,默认为显示 #action.destructive_requires_name: true #可以跨域访问 http.cors.enabled: true http.cors.allow-origin: "*"

第二个节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#集群名称 cluster.name: my-es #当前该节点的名称 node.name: node-2 #是不是有资格竞选主节点 node.master: true #是否存储数据 node.data: true #最大集群节点数 node.max_local_storage_nodes: 3 #给当前节点自定义属性(可以省略) #node.attr.rack: r1 #是否开启时锁定内存(默认为是) #bootstrap.memory_lock: true #设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址, #然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0 network.host: 0.0.0.0 #设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址, #如果是docker安装节点的IP将会是配置的IP而不是docker网管ip network.publish_host: 192.168.239.129 #设置映射端口 http.port: 9201 #内部节点之间沟通端口 transport.tcp.port: 9301 #集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写 #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上 discovery.seed_hosts: ["192.168.239.129:9300","192.168.239.129:9301","192.168.239.129:9302"] #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了, #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者, #如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上 cluster.initial_master_nodes: ["node-1","node-2","node-3"] #在群集完全重新启动后阻止初始恢复,直到启动N个节点 #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用, gateway.recover_after_nodes: 2 #删除索引是是否需要显示其名称,默认为显示 #action.destructive_requires_name: true #可以跨域访问 http.cors.enabled: true http.cors.allow-origin: "*"

遇到问题

启动失败

启动代码

1
2
3
4
5
6
7
8
9
10
11
docker run --name es1 -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /home/elasticsearch/es1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ --privileged=true -d elasticsearch:7.14.0 docker run --name es2 -p 9201:9201 -p 9301:9301 \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /home/elasticsearch/es2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d --privileged=true elasticsearch:7.14.0

启动时设置了内存,报错:ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: initial heap size [67108864] not equal to maximum heap size [134217728]; this can cause resize pauses

把xms和xmx设置一样大小启动成功

目录