此处部署为单个服务器启动三个elasticsearch容器
问题:本打算在三个服务器上单独部署elasticsearch 容器,elasticsearch.yml 注册用的宿主机ip,但是容器之间通信发现用的是容器内部ip,导致节点之间通信失败,只能发现master节点,待大佬们解疑答惑
-
修改 max_map_count 否则启动失败,提示该值设置为262144
-
分别创建三个节点配置文件挂载目录 -
拉取 elasticsearch 镜像
-
docker pull elasticsearch:7.14.0
-
先启动一个容器,并将配置文件复制出来 -
docker run --name es01 -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -v /opt/es01/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -p 9200:9200 -p 9300:9300 elasticsearch:7.14.0
-
docker cp es01:/usr/share/elasticsearch/config/elasticsearch.yml /opt/es01/config
-
修改 es01 elasticsearch.yml
-
# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-node1
# 启用该物理机器所有网卡网络访问
network.host: 0.0.0.0
http.host: 0.0.0.0
# 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
# 当前节点是否可以被选举为master节点,是:true、否:false
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 设置节点之间通信的端口
transport.tcp.port: 9300
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: 192.168.202.128:9300
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: es-node1
# elasticsearch和其他节点通信的地址,如果不设置的话 会自动获取
network.publish_host: 192.168.202.128
# host地址,默认为network.host
transport.host: 0.0.0.0
# 设置这个集群,有多少个节点有master候选资格,如果集群较大官方建议为2-4个
discovery.zen.minimum_master_nodes: 1
-
docker restart es01 -
复制 elasticsearch.yml 到其他两个 es 挂载目录
-
es02 elasticsearch.yml -
cluster.name: es-cluster
node.name: es-node2
network.host: 0.0.0.0
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
transport.tcp.port: 9301
discovery.seed_hosts: 192.168.202.128:9300
cluster.initial_master_nodes: es-node1
network.publish_host: 192.168.202.128
transport.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
-
es03 elasticsearch.yml -
cluster.name: es-cluster
node.name: es-node3
network.host: 0.0.0.0
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
transport.tcp.port: 9302
discovery.seed_hosts: 192.168.202.128:9300
cluster.initial_master_nodes: es-node1
network.publish_host: 192.168.202.128
transport.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
-
启动es02 、 es03 -
docker run --name es02 -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -v /opt/es02/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -p 9201:9200 -p 9301:9300 elasticsearch:7.14.0
docker run --name es03 -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -v /opt/es03/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -p 9202:9200 -p 9302:9300 elasticsearch:7.14.0
-
es 启动较慢,别着急 ,访问接口 http://192.168.202.128:9200/_cat/nodes -
172.17.0.2 72 97 1 0.08 0.11 0.14 cdfhilmrstw * es-node1
172.17.0.4 53 97 1 0.08 0.11 0.14 cdfhilmrstw - es-node3
172.17.0.3 69 97 1 0.08 0.11 0.14 cdfhilmrstw - es-node2
-
显示以上信息表示集群搭建成功 -
安装 elasticsearch-head 可视化界面
-
#拉取镜像
docker pull mobz/elasticsearch-head:5
#创建容器
docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
#启动容器
docker start elasticsearch-head
or
docker start 容器id (docker ps -a 查看容器id )
-
启动成功后访问 http://192.168.202.128:9100/ -
|