软件:elasticsearch-7.3.2

问题

假设三台主机

  • centos0701 后续生命周期管理定位hot节点
  • centos0702 后续生命周期管理定位warm节点
  • centos0703 后续生命周期管理定位cold节点

我们希望在每台主机上安装es实例,并且将三个es实例构成集群。


解决

这里使用docker方式安装。

修改三台主机hosts

# vim /etc/hosts

192.168.73.131 centos0701
192.168.73.132 centos0702
192.168.73.133 centos0703

docker安装需要拉取镜像或者已有的镜像导入scp分发镜像/安装包

scp es-7.3.2.tar centos0701:/home/docker-images

装载镜像/解压缩es

docker load -i es-7.3.2.tar

三台机器ssh免密登录(非必须)

ssh-keygen -t rsa
ssh-copy-id centos0701
ssh-copy-id centos0702
ssh-copy-id centos0703

如果三台机器开启了防火墙,则需要开放防火墙端口,这里开启的是es使用的9200端口(http外部访问)和9300端口(集群间通信)

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9300/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-port

修改es的配置文件,如果是docker方式,则需要将配置文件挂载。

#  vim es.yml
#集群名
cluster.name: "test"
##本机节点名,根据不同的机器修改不同的名称
node.name: "node-1"
## 当前节点是否可以被选举为master节点,是:true、否:false
node.master: true
##集群生命周期节点配置hot/warm/cold
##这两项配置是为节点增加标签,具体名称并不是写死的,这个名称与后面模板和策略配置有关,后面会用到
node.attr.box_type: hot
node.attr.rack: rack1
##数据和日志存放位置,这里写的是docker内部的存放位置,后续可以挂载。
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
## 主机访问的端口号和网关,docker安装方式下publish_host必须写成es容器宿主机的ip否则会解析成docker的内部ip导致无法建立集群。
network.bind_host: 0.0.0.0
network.publish_host: 192.168.73.131
http.port: 9200
##设置节点之间通信的端口
transport.tcp.port: 9300
## es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
## es7之后,不可使用旧版discovery.zen.ping.unicast.hosts这个参数,而用discovery.seed_hosts替换
discovery.seed_hosts: ["192.168.73.131","192.168.73.132","192.168.73.133"]
## 集群从节点中选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

三台机器启动docker或者运行es

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 \
-v /home/moon/ELK/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/moon/ELK/es/data:/usr/share/elasticsearch/data \
-v /home/moon/ELK/es/logs:/usr/share/elasticsearch/logs \
--name es docker.elastic.co/elasticsearch/elasticsearch:7.3.2

一台机器启动kibana,这里在centos0701主机上运行。

docker run --name kibana -d -e "ELASTICSEARCH_URL=http://192.168.73.131:9200" -e "SERVER_PORT=5601"  -e "SERVER_HOST=0.0.0.0" -p 5601:5601 docker.elastic.co/kibana/kibana:7.3.2

如果打开kibana网址显示kibana server is not ready yet,并且如果kibana日志显示No living connections的错误,则手动进入容器修改kibana.yml文件。如果是压缩包安装,则直接修改kibana.yml文件。具体修改server.host和elasticsearch.hosts。

server.host: 0.0.0.0
elasticsearch.hosts: [ "http://192.168.73.131:9200" ]

看到集群信息即说明集群搭建成功,游览器输入一下网址查询集群信息。

http://{es的ip地址}:9200/_cat/nodes?v