集群搭建
环境准备
ip | node.name |
172.16.10.109 | node-1 |
172.16.10.110 | node-2 |
172.16.10.111 | node-3 |
配置文件
[es@elk /opt/elk/elasticsearch-6.2.3]$ ls
bin config data lib LICENSE.txt logs modules NOTICE.txt plugins README.textile
[es@elk /opt/elk/elasticsearch-6.2.3]$ cd config/
[es@elk /opt/elk/elasticsearch-6.2.3/config]$ ls
elasticsearch.yml jvm.options log4j2.properties
主配置文件 | java相关配置 | 日志配置 |
elasticsearch.yml | jvm.options | log4j2.properties |
配置elasticsearch
1. 备份主配置文件
[es@elk /opt/elk/elasticsearch-6.2.3/config]$ cp elasticsearch.yml elasticsearch.yml.bak
[es@elk /opt/elk/elasticsearch-6.2.3/config]$ ls
elasticsearch.yml elasticsearch.yml.bak jvm.options log4j2.properties
2. 编辑主配置文件
第一台机器
[es@elk /opt/elk/elasticsearch-6.2.3/config]$ vim elasticsearch.yml
[es@elk /opt/elk/elasticsearch-6.2.3/config]$ cat elasticsearch.yml
cluster.name: myescluster
#节点设置
node.name: "node-1"
node.master: true
node.data: true
#禁用swap
bootstrap.memory_lock: true
#组成集群的节点
discovery.zen.ping.unicast.hosts: ["172.16.10.109","172.16.10.110", "172.16.10.111"]
#该属性定义的是为了组成一个集群,相互连接的候选主结点的最小数目
discovery.zen.minimum_master_nodes: 2
#网络ip配置
network.host: 172.16.10.109
transport.tcp.port: 9300
http.port: 9200
第二台机器
[es@elk-1 /opt/elk/elasticsearch-6.2.3/config]$ cat elasticsearch.yml
cluster.name: myescluster
#节点设置
node.name: "node-2"
node.master: true
node.data: true
#禁用swap
bootstrap.memory_lock: true
#组成集群的节点
discovery.zen.ping.unicast.hosts: ["172.16.10.109","172.16.10.110", "172.16.10.111"]
#该属性定义的是为了组成一个集群,相互连接的候选主结点的最小数目
discovery.zen.minimum_master_nodes: 2
#网络ip配置
network.host: 172.16.10.110
transport.tcp.port: 9300
http.port: 9200
第三台机器
[es@elk-2 /opt/elk/elasticsearch-6.2.3/config]$ cat elasticsearch.yml
cluster.name: myescluster
#节点设置
node.name: "node-3"
node.master: true
node.data: true
#禁用swap
bootstrap.memory_lock: true
#组成集群的节点
discovery.zen.ping.unicast.hosts: ["172.16.10.109","172.16.10.110", "172.16.10.111"]
#该属性定义的是为了组成一个集群,相互连接的候选主结点的最小数目
discovery.zen.minimum_master_nodes: 2
#网络ip配置
network.host: 172.16.10.111
transport.tcp.port: 9300
http.port: 9200
3. 启动
[es@elk /opt/elk/elasticsearch-6.2.3]$ bin/elasticsearch -d
[es@elk-1 /opt/elk/elasticsearch-6.2.3]$ bin/elasticsearch -d
[es@elk-2 /opt/elk/elasticsearch-6.2.3]$ bin/elasticsearch -d
4. 访问
http://172.16.10.109:9200/
http://172.16.10.109:9200/_cluster/stats?pretty
http://172.16.10.109:9200/_cluster/health
http://172.16.10.109:9200/_cluster/health
问题:这个接口访问不了,说明集群没起来
1. 检查3台机器是否都启动elasticsearch服务
2. 删除 data 目录里的数据,重启elasticsearch服务
解决:删除/data里的数据,重启elasticsearch服务
[es@elk /opt/elk/elasticsearch-6.2.3]$ cd data/
[es@elk /opt/elk/elasticsearch-6.2.3/data]$ ls
nodes
[es@elk /opt/elk/elasticsearch-6.2.3/data]$ rm -rf *
由于是直接在一台单机模式配置好以后拷贝到另一台机器上的搭建的集群模式,原机器的单机模式是运行过一段时间后,又在这个基础上搭建的集群模式。
存在data数据log等信息,拷贝到另一台机器上,这些文件没有删除,里面包含了一些唯一的id之类的信息,当启动集群时,id之类的冲突。
因此报错,将集群中每台机器上的配置文件中指定的存放data的文件夹删除,再启动,问题解决。