Docker Elasticsearch集群部署 您所在的位置:网站首页 vm集群部署 Docker Elasticsearch集群部署

Docker Elasticsearch集群部署

2023-06-16 22:28| 来源: 网络整理| 查看: 265

Docker Elasticsearch集群部署 1 环境2 服务器3 部署3.1 节点一3.2 节点二3.3 节点三3.4 查看集群是否成功 4 注意事项4.1 运行elasticsearch启动参数4.2 修改虚拟内存最大映射数4.3 各节点无法组成集群,各自都是master的解决办法 5 参考博客

1 环境

(1)Centos7 (2)Docker 23.0.1 (3)Elasticsearch 7.16.3

2 服务器 名称ip地址内存节点一192.16.109.11316G节点二192.16.109.11416G节点三192.16.109.11516G 3 部署

在三个服务器节点上执行如下操作:

准备映射目录 切换到/home目录中,创建elasticsearch目录,切换到elasticsearch目录中。

cd /home/ mkdir elasticsearch cd elasticsearch

临时启动elasticsearch

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.16.3

复制容器中配置目录到磁盘目录

cd /home/elasticsearch docker cp elasticsearch:/usr/share/elasticsearch/config . docker cp elasticsearch:/usr/share/elasticsearch/data . docker cp elasticsearch:/usr/share/elasticsearch/plugins .

授予elasticsearch目录及子目录改文件及子文件所有权限

chmod -R 777 elasticsearch

移除临时启动elasticsearch容器

docker stop elasticsearch docker rm elasticsearch 3.1 节点一

修改/home/elasticsearch/config/elasticsearch.yml配置文件

# 集群名称 所有节点名称一致 cluster.name: es-clusters # 当前该节点的名称,每个节点不能重复es-node-1,es-node-2,es-node-3 node.name: es-node-1 # 当前该节点是不是有资格竞选主节点 node.master: true # 当前该节点是否存储数据 node.data: true # 设置为公开访问 network.host: 0.0.0.0 # 设置其它节点和该节点交互的本机器的ip地址,三台各自为 network.publish_host: 192.16.109.113 # 设置映射端口 http.port: 9200 # 内部节点之间沟通端口 transport.tcp.port: 9300 # 支持跨域访问 http.cors.enabled: true http.cors.allow-origin: "*" # 配置集群的主机地址 discovery.seed_hosts: ["192.16.109.113","192.16.109.114","192.16.109.115"] # 初始主节点,使用一组初始的符合主条件的节点引导集群 cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3"] # 节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂 discovery.zen.ping_timeout: 30s # 配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1 discovery.zen.minimum_master_nodes: 2 # 禁用交换内存,提升效率 bootstrap.memory_lock: false

正式运行elasticsearch

docker run --name=elasticsearch-node-1 -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms4g -Xmx4g" \ -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/data:/usr/share/elasticsearch/data \ -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ --restart=always \ -d elasticsearch:7.16.3 3.2 节点二

修改/home/elasticsearch/config/elasticsearch.yml配置文件

# 集群名称 所有节点名称一致 cluster.name: es-clusters # 当前该节点的名称,每个节点不能重复es-node-1,es-node-2,es-node-3 node.name: es-node-2 # 当前该节点是不是有资格竞选主节点 node.master: true # 当前该节点是否存储数据 node.data: true # 设置为公开访问 network.host: 0.0.0.0 # 设置其它节点和该节点交互的本机器的ip地址,三台各自为 network.publish_host: 192.16.109.114 # 设置映射端口 http.port: 9200 # 内部节点之间沟通端口 transport.tcp.port: 9300 # 支持跨域访问 http.cors.enabled: true http.cors.allow-origin: "*" # 配置集群的主机地址 discovery.seed_hosts: ["192.16.109.113","192.16.109.114","192.16.109.115"] # 初始主节点,使用一组初始的符合主条件的节点引导集群 cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3"] # 节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂 discovery.zen.ping_timeout: 30s # 配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1 discovery.zen.minimum_master_nodes: 2 # 禁用交换内存,提升效率 bootstrap.memory_lock: false

正式运行elasticsearch

docker run --name=elasticsearch-node-2 -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms4g -Xmx4g" \ -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/data:/usr/share/elasticsearch/data \ -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ --restart=always \ -d elasticsearch:7.16.3 3.3 节点三

修改/home/elasticsearch/config/elasticsearch.yml配置文件

# 集群名称 所有节点名称一致 cluster.name: es-clusters # 当前该节点的名称,每个节点不能重复es-node-1,es-node-2,es-node-3 node.name: es-node-3 # 当前该节点是不是有资格竞选主节点 node.master: true # 当前该节点是否存储数据 node.data: true # 设置为公开访问 network.host: 0.0.0.0 # 设置其它节点和该节点交互的本机器的ip地址,三台各自为 network.publish_host: 192.16.109.115 # 设置映射端口 http.port: 9200 # 内部节点之间沟通端口 transport.tcp.port: 9300 # 支持跨域访问 http.cors.enabled: true http.cors.allow-origin: "*" # 配置集群的主机地址 discovery.seed_hosts: ["192.16.109.113","192.16.109.114","192.16.109.115"] # 初始主节点,使用一组初始的符合主条件的节点引导集群 cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3"] # 节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂 discovery.zen.ping_timeout: 30s # 配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1 discovery.zen.minimum_master_nodes: 2 # 禁用交换内存,提升效率 bootstrap.memory_lock: false

正式运行elasticsearch

docker run --name=elasticsearch-node-3 -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms4g -Xmx4g" \ -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/elasticsearch/data:/usr/share/elasticsearch/data \ -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ --restart=always \ -d elasticsearch:7.16.3 3.4 查看集群是否成功

在浏览器上输入http://任一节点ip:9200/_cat/nodes?pretty查看集群信息,出现如下信息就代表集群搭建成功了。

192.16.109.113 20 99 1 0.03 0.04 0.06 cdfhilmrstw * es-node-3 192.16.109.114 12 99 3 0.03 0.05 0.06 cdfhilmrstw - es-node-1 192.16.109.114 56 89 2 0.19 0.12 0.13 cdfhilmrstw - es-node-2 4 注意事项 4.1 运行elasticsearch启动参数

注意:我们启动参数设置的-e ES_JAVA_OPTS="-Xms4g -Xmx4g",根据服务器内存实际情况调整。 ● Xms 为jvm启动是分配的最大内存 ● Xmx 为jvm运行过程分配的最大内存

4.2 修改虚拟内存最大映射数

系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上。 sudo vi /etc/sysctl.conf

#添加参数 vm.max_map_count = 655360

重新加载/etc/sysctl.conf配置

sysctl -p 4.3 各节点无法组成集群,各自都是master的解决办法

(1)关闭所有节点,或者直接删除容器 (2)在三个节点上清空/home/elasticsearch/data节点数据

cd /home/elasticsearch/data rm -rf *

(3)重新启动所有节点

5 参考博客

1.docker进行ElasticSearch集群部署 2.Elasticsearch集群搭建及各节点无法组成集群,各自都是master的解决办法



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有