DockerElasticsearch集群部署的操作过程,


目录
  • 1 环境
  • 2 服务器
  • 3部署
    • 3.1 节点一
    • 3.2 节点二
    • 3.3 节点三
    • 3.4 查看集群是否成功
  • 4 注意事项
    • 4.1 运行elasticsearch启动参数
    • 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的解决办法

    到此这篇关于Docker Elasticsearch集群部署的文章就介绍到这了,更多相关Docker Elasticsearch集群内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

    您可能感兴趣的文章:
    • docker安装Elasticsearch7.6集群并设置密码的方法步骤
    • docker安装ElasticSearch:7.8.0集群的详细教程
    • docker安装Elasticsearch7.6集群并设置密码
    • 使用docker快速部署Elasticsearch集群的方法
    • 使用Docker Compose搭建部署ElasticSearch的配置过程
    • Docker部署ElasticSearch和ElasticSearch-Head的实现
    • Docker 简单部署 ElasticSearch的实现方法

    相关内容