• 第三十三章 Docker实现es集群


    一、拉取es镜像文件

    [root@docker001 ~]# docker pull elasticsearch:7.16.1
    

    二、创建ES挂载目录并授权

    #1.创建挂载目录
    mkdir -p /opt/docker/elasticsearch/node-1/config
    mkdir -p /opt/docker/elasticsearch/node-1/data
    mkdir -p /opt/docker/elasticsearch/node-1/log
    mkdir -p /opt/docker/elasticsearch/node-1/plugins
    
    mkdir -p /opt/docker/elasticsearch/node-2/config
    mkdir -p /opt/docker/elasticsearch/node-2/data
    mkdir -p /opt/docker/elasticsearch/node-2/log
    mkdir -p /opt/docker/elasticsearch/node-2/plugins
    
    mkdir -p /opt/docker/elasticsearch/node-3/config
    mkdir -p /opt/docker/elasticsearch/node-3/data
    mkdir -p /opt/docker/elasticsearch/node-3/log
    mkdir -p /opt/docker/elasticsearch/node-3/plugins
    
    #2.授权
    chmod -R 777 /opt/docker/elasticsearch/
    
    #3.说明
    #存放配置文件的文件夹
    mkdir -p /opt/docker/elasticsearch/node-1/config
    #存放数据的文件夹
    mkdir -p /opt/docker/elasticsearch/node-1/data
    #存放运行日志的文件夹
    mkdir -p /opt/docker/elasticsearch/node-1/log
    #存放IK分词插件的文件夹
    mkdir -p /opt/docker/elasticsearch/node-1/plugins
    

    三、编写ES配置文件

    #1.node-1的elasticsearch.yml
    [root@docker001 ~]# vim /opt/docker/elasticsearch/node-1/config/elasticsearch.yml
    #集群名称
    cluster.name: my-es
    #当前该节点的名称
    node.name: node-1
    #是不是有资格竞选主节点
    node.master: true
    #是否存储数据
    node.data: true
    #最大集群节点数
    node.max_local_storage_nodes: 3
    #给当前节点自定义属性(可以省略)
    #node.attr.rack: r1
    #数据存档位置
    path.data: /usr/share/elasticsearch/data
    #日志存放位置
    path.logs: /usr/share/elasticsearch/log
    #是否开启时锁定内存(默认为是)
    #bootstrap.memory_lock: true
    #设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址,然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0
    network.host: 0.0.0.0
    #设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
    network.publish_host: 192.168.13.81
    #设置映射端口
    http.port: 9200
    #内部节点之间沟通端口
    transport.tcp.port: 9300
    #集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
    #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
    discovery.seed_hosts: ["192.168.13.81:9300","192.168.13.81:9301","192.168.13.81:9302"]
    #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
    cluster.initial_master_nodes: ["node-1","node-2","node-3"]
    #在群集完全重新启动后阻止初始恢复,直到启动N个节点
    #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
    gateway.recover_after_nodes: 2
    #删除索引是是否需要显示其名称,默认为显示
    #action.destructive_requires_name: true
    #跨域问题解决
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    #2.node-2的elasticsearch.yml
    [root@docker001 ~]# vim /opt/docker/elasticsearch/node-2/config/elasticsearch.yml
    #集群名称
    cluster.name: my-es
    #当前该节点的名称
    node.name: node-2
    #是不是有资格竞选主节点
    node.master: true
    #是否存储数据
    node.data: true
    #最大集群节点数
    node.max_local_storage_nodes: 3
    #给当前节点自定义属性(可以省略)
    #node.attr.rack: r1
    #数据存档位置
    path.data: /usr/share/elasticsearch/data
    #日志存放位置
    path.logs: /usr/share/elasticsearch/log
    #是否开启时锁定内存(默认为是)
    #bootstrap.memory_lock: true
    #设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址,
    #然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0
    network.host: 0.0.0.0
    #设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
    network.publish_host: 192.168.13.81
    #设置映射端口
    http.port: 9201
    #内部节点之间沟通端口
    transport.tcp.port: 9301
    #集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
    #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
    discovery.seed_hosts: ["192.168.13.81:9300","192.168.13.81:9301","192.168.13.81:9302"]
    #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,
    #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
    cluster.initial_master_nodes: ["node-1","node-2","node-3"]
    #在群集完全重新启动后阻止初始恢复,直到启动N个节点
    #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
    gateway.recover_after_nodes: 2
    #删除索引是是否需要显示其名称,默认为显示
    #action.destructive_requires_name: true
    #跨域问题解决
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    #3.node-3的elasticsearch.yml
    [root@docker001 ~]# vim /opt/docker/elasticsearch/node-3/config/elasticsearch.yml
    #集群名称
    cluster.name: my-es
    #当前该节点的名称
    node.name: node-3
    #是不是有资格竞选主节点
    node.master: true
    #是否存储数据
    node.data: true
    #最大集群节点数
    node.max_local_storage_nodes: 3
    #给当前节点自定义属性(可以省略)
    #node.attr.rack: r1
    #数据存档位置
    path.data: /usr/share/elasticsearch/data
    #日志存放位置
    path.logs: /usr/share/elasticsearch/log
    #是否开启时锁定内存(默认为是)
    #bootstrap.memory_lock: true
    #设置网关地址,我是被这个坑死了,这个地址我原先填写了自己的实际物理IP地址,然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0
    network.host: 0.0.0.0
    #设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
    network.publish_host: 192.168.13.81
    #设置映射端口
    http.port: 9202
    #内部节点之间沟通端口
    transport.tcp.port: 9302
    #集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
    #es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
    discovery.seed_hosts: ["192.168.13.81:9300","192.168.13.81:9301","192.168.13.81:9302"]
    ##当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,
    #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
    cluster.initial_master_nodes: ["node-1","node-2","node-3"]
    #在群集完全重新启动后阻止初始恢复,直到启动N个节点
    #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
    gateway.recover_after_nodes: 2
    #删除索引是是否需要显示其名称,默认为显示
    #action.destructive_requires_name: true
    #跨域问题解决
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

    四、修改系统配置

    [root@docker001 ~]# echo vm.max_map_count=655360 >> /etc/sysctl.conf 
    [root@docker001 ~]# sysctl -p
    

    五、启动ES容器

    #1.node-1
    docker run \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -d -p 9200:9200 -p 9300:9300 \
    -v /opt/docker/elasticsearch/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /opt/docker/elasticsearch/node-1/plugins:/usr/share/elasticsearch/plugins \
    -v /opt/docker/elasticsearch/node-1/data:/usr/share/elasticsearch/data \
    -v /opt/docker/elasticsearch/node-1/log:/usr/share/elasticsearch/log \
    --name es-node-1 \
    elasticsearch:7.16.1
    
    #2.node-2
    docker run \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -d -p 9201:9201 -p 9301:9301 \
    -v /opt/docker/elasticsearch/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /opt/docker/elasticsearch/node-2/plugins:/usr/share/elasticsearch/plugins \
    -v /opt/docker/elasticsearch/node-2/data:/usr/share/elasticsearch/data \
    -v /opt/docker/elasticsearch/node-2/log:/usr/share/elasticsearch/log \
    --name es-node-2 \
    elasticsearch:7.16.1
    
    #3.node-3
    docker run \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -d -p 9202:9202 -p 9302:9302 \
    -v /opt/docker/elasticsearch/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /opt/docker/elasticsearch/node-3/plugins:/usr/share/elasticsearch/plugins \
    -v /opt/docker/elasticsearch/node-3/data:/usr/share/elasticsearch/data/ \
    -v /opt/docker/elasticsearch/node-3/log:/usr/share/elasticsearch/log \
    --name es-node-3 \
    elasticsearch:7.16.1
    

    六、查看ES集群

    [root@docker001 ~]# docker ps
    CONTAINER ID   IMAGE                       COMMAND                  CREATED              STATUS              PORTS                                                                                                      NAMES
    e56c630729c1   elasticsearch:7.16.1        "/bin/tini -- /usr/l…"   4 seconds ago        Up 2 seconds        9200/tcp, 0.0.0.0:9202->9202/tcp, :::9202->9202/tcp, 9300/tcp, 0.0.0.0:9302->9302/tcp, :::9302->9302/tcp   es-node-3
    bcead06fc0b4   elasticsearch:7.16.1        "/bin/tini -- /usr/l…"   12 seconds ago       Up 10 seconds       9200/tcp, 0.0.0.0:9201->9201/tcp, :::9201->9201/tcp, 9300/tcp, 0.0.0.0:9301->9301/tcp, :::9301->9301/tcp   es-node-2
    197d3313fce4   elasticsearch:7.16.1        "/bin/tini -- /usr/l…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp                       es-node-1
    

    七、验证ES集群

    输入IP+Port,本机192.168.13.81:9200,输入正确的用户名和修改过后的密码即可正常登陆。
    

    image

    image

    八、安装head插件

    #1.拉取镜像
    [root@docker001 ~]# docker pull mobz/elasticsearch-head:5
    
    #2.启动es-head容器
    [root@docker001 ~]# docker run \
    -itd \
    -p 9100:9100 \
    -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
    --restart always \
    --privileged=true \
    --name es_head \
    mobz/elasticsearch-head:5
    

    九、浏览器访问

    浏览器访问ip:9100,连接es填入http://192.168.13.81:9200点击连接看到状态为绿色表示正常。
    

    image

  • 相关阅读:
    进度条简单实现
    bootstrap学习(二)-----Modal模态框
    PL/SQL Developer登入时候报ORA-12638: 身份证明检索失败的解决办法
    pdf.js在IIS中配置使用笔记
    JSON数据查询方法
    Visual Studio 2013 错误提示“未找到与约束匹配”的修正
    WebStorm 11激活方法
    Xamarin开发Android笔记:使用ZXing进行连续扫描
    Xamarin开发IOS笔记:切换输入法时输入框被遮住
    Xamarin开发Android笔记:拍照或相册选取图片角度问题
  • 原文地址:https://www.cnblogs.com/jhno1/p/16451664.html
Copyright © 2020-2023  润新知