ES-部署(docker-compose)

参考资料

http://www.baiyp.ren/elasticsearch-集群部署.html

说明

  • 一个服务器,三个es服务节点,一个kibana容器,一个elasticsearch-head服务节点。
  • es版本为7.17.5。
  • 服务器地址:192.168.127.142。
  • elasticsearch 不建议使用docker,容器部署不适合有状态服务。这里是为了学习方便。

安装流程

  • 安装docker
    • 安装docker-compose
      • 打开https://github.com/docker/compose/releases/tag/v2.14.1 页面找到docker-compose-linux-x86_64
      • 上传到/usr/local/bin目录下,改名为docker-compose
      • 使用docker-compose --version命令测试。
  • 初始化环境
    • 虚拟机新建虚拟服务器,名称elasticsearch。
    • 防火墙初始化
    • 修改Liunx句柄数
      • 查看最大句柄
      sysctl -a | grep vm.max_map_count
      
      • 修改句柄数
      vi /etc/sysctl.conf
      
      在末尾添加
      vm.max_map_count=262144
      
      • 让系统读取这个新的配置
      sysctl -p
      
      • 检查,如果返回值为vm.max_map_count = 262144证明修改成功。
       sysctl vm.max_map_count
      
      • 句柄就是用户可以同时打开的文件句柄(包括文件、套接字等)的数量。
    • 修改最大线程数
      vi /etc/security/limits.conf
      
      # 添加以下内容
      * soft nofile 65536
      * hard nofile 65536
      * soft nproc 4096
      * hard nproc 4096
      
      • limits.conf用于设置系统资源限制的配置文件。它可以帮助管理员限制用户或进程能够使用的系统资源量。
        • 每一行表示对一个用户或用户组的限制,格式为<domain> <type> <item> <value>。其中domain:限制的对象,用户/用户组(@groupname)/所有用户(*);type表示限制类型,如soft(软限制)、hard(硬限制)和 -(不设置限制)等;item表示限制的资源;value表示限制的具体数量。
        • 软限制是超过会提示,硬限制是超过会阻塞等待。
        • 第一行和第二行表示:限制系统中所有用户可以最多打开的文件数为65536。
        • 第三行和第四行表示:限制所有用户可以最多启动的进程数为4096。
    • 重新启动服务
      reboot
      
  • 创建挂载目录
    • 创建ES节点配置目录
    mkdir -p /etc/es/elasticsearch/node-{1..3}/{config,plugins}
    
    • 创建ES节点数据目录
    mkdir -p /home/es/elasticsearch/node-{1..3}/{data,log}
    
    • 创建kibana配置目录
    mkdir -p /etc/es/kibana/config
    
    • 目录授权
    chmod 777 /etc/es/elasticsearch/node-{1..3}/{config,plugins}
    
    chmod 777 /home/es/elasticsearch/node-{1..3}/{data,log}
    
    chmod 777 /etc/es/kibana/config
    
  • 下载分词器
    • 打开下载页面,地址 https://github.com/medcl/elasticsearch-analysis-ik/releases,下载7.17.5版本分词器。
    • 切换上传目录
      mkdir -p /home/download/es/ik/ && cd /home/download/es/ik/
      
    • 上传
    • 解压
      unzip elasticsearch-analysis-ik-7.17.5.zip
      
    • 删除zip压缩包,并返回上级
      rm -rf elasticsearch-analysis-ik-7.17.5.zip && cd ../
      
    • 复制到对应目录
      cp -R ik/ /etc/es/elasticsearch/node-1/plugins/
      
      cp -R ik/ /etc/es/elasticsearch/node-2/plugins/
      
      cp -R ik/ /etc/es/elasticsearch/node-3/plugins/
      
  • 编写配置文件
    • node-1
      vi /etc/es/elasticsearch/node-1/config/elasticsearch.yml 
      
      #集群名称  
      cluster.name: elastic
      #当前该节点的名称
      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
      #设置映射端口
      http.port: 9200
      #内部节点之间沟通端口
      transport.tcp.port: 9300
      # 寻找集群中的主节点,默认值为127.0.0.1:9300,也就是自己。如果要发现已存在的群集需要填写对应集群的服务节点信息,如果单节点可以忽略。es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,建议把所有的节点都写上。
      discovery.seed_hosts: ["node-1","node-2","node-3"]
      #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,
      #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,
      #如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
      cluster.initial_master_nodes: ["node-1","node-2","node-3"]
      #在群集完全重新启动后阻止初始恢复,直到启动N个节点
      #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用
      gateway.recover_after_nodes: 2
      #删除索引是是否需要显示其名称,默认为显示
      #action.destructive_requires_name: true
      #禁用安全配置,否则查询的时候会提示警告
      xpack.security.enabled: false
      #配置允许跨域访问
      http.cors.enabled: true
      http.cors.allow-origin: "*"
      
    • node-2
      vi /etc/es/elasticsearch/node-2/config/elasticsearch.yml 
      
      #集群名称  
      cluster.name: elastic
      #当前该节点的名称
      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
      #设置映射端口
      http.port: 9200
      #内部节点之间沟通端口
      transport.tcp.port: 9300
      #寻找集群中的主节点,默认值为127.0.0.1:9300,也就是自己。如果要发现已存在的群集需要填写对应集群的服务节点信息,如果单节点可以忽略。es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,建议把所有的节点都写上。
      discovery.seed_hosts: ["node-1","node-2","node-3"]
      #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,
      #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,
      #如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
      cluster.initial_master_nodes: ["node-1","node-2","node-3"]
      #在群集完全重新启动后阻止初始恢复,直到启动N个节点
      #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用
      gateway.recover_after_nodes: 2
      #删除索引是是否需要显示其名称,默认为显示
      #action.destructive_requires_name: true
      #禁用安全配置,否则查询的时候会提示警告
      xpack.security.enabled: false
      #配置允许跨域访问
      http.cors.enabled: true
      http.cors.allow-origin: "*"
      
    • node-3
      vi /etc/es/elasticsearch/node-3/config/elasticsearch.yml 
      
      #集群名称  
      cluster.name: elastic
      #当前该节点的名称
      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
      #设置映射端口
      http.port: 9200
      #内部节点之间沟通端口
      transport.tcp.port: 9300
      #寻找集群中的主节点,默认值为127.0.0.1:9300,也就是自己。如果要发现已存在的群集需要填写对应集群的服务节点信息,如果单节点可以忽略。es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,建议把所有的节点都写上。
      discovery.seed_hosts: ["node-1","node-2","node-3"]
      #当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,
      #其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,
      #如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
      cluster.initial_master_nodes: ["node-1","node-2","node-3"]
      #在群集完全重新启动后阻止初始恢复,直到启动N个节点
      #简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用
      gateway.recover_after_nodes: 2
      #删除索引是是否需要显示其名称,默认为显示
      #action.destructive_requires_name: true
      #禁用安全配置,否则查询的时候会提示警告
      xpack.security.enabled: false
      #配置允许跨域访问
      http.cors.enabled: true
      http.cors.allow-origin: "*"
      
    • kibana
      vi /etc/es/kibana/config/kibana.yml
      
      server.port: 5601
      server.host: "0.0.0.0"
      elasticsearch.hosts: ["http://node-1:9200","http://node-2:9200","http://node-3:9200"]
      
      #下面两项,需要开启RBAC时需要打开配合es使用
      #elasticsearch.username: "user"
      #elasticsearch.password: "pass"
      # 设置中文
      i18n.locale: "zh-CN"
      
  • 创建docker-compose文件
    • 创建目录并打开
      mkdir -p /opt/docker/es && vi /opt/docker/es/docker-compose.yaml
      
    • 编写文件
      version: "3"
      services:
          node-1:
              image: elasticsearch:7.17.5
              container_name: node-1
              environment:
                  - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
                  - "TZ=Asia/Shanghai"
              ulimits:
                  memlock:
                      soft: -1
                      hard: -1
                  nofile:
                      soft: 65536
                      hard: 65536
              ports:
                  - "9200:9200"
              logging:
                  driver: "json-file"
                  options:
                      max-size: "50m"
              volumes:
                  - /etc/es/elasticsearch/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
                  - /etc/es/elasticsearch/node-1/plugins:/usr/share/elasticsearch/plugins
                  - /home/es/elasticsearch/node-1/data:/usr/share/elasticsearch/data
                  - /home/es/elasticsearch/node-1/log:/usr/share/elasticsearch/log
              networks:
                  - elastic
          node-2:
              image: elasticsearch:7.17.5
              container_name: node-2
              environment:
                  - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
                  - "TZ=Asia/Shanghai"
              ulimits:
                  memlock:
                      soft: -1
                      hard: -1
                  nofile:
                      soft: 65536
                      hard: 65536
              ports:
                  - "9201:9200"
              logging:
                  driver: "json-file"
                  options:
                      max-size: "50m"
              volumes:
                  - /etc/es/elasticsearch/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
                  - /etc/es/elasticsearch/node-2/plugins:/usr/share/elasticsearch/plugins
                  - /home/es/elasticsearch/node-2/data:/usr/share/elasticsearch/data
                  - /home/es/elasticsearch/node-2/log:/usr/share/elasticsearch/log
              networks:
                  - elastic
          node-3:
              image: elasticsearch:7.17.5
              container_name: node-3
              environment:
                  - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
                  - "TZ=Asia/Shanghai"
              ulimits:
                  memlock:
                      soft: -1
                      hard: -1
                  nofile:
                      soft: 65536
                      hard: 65536
              ports:
                  - "9202:9200"
              logging:
                  driver: "json-file"
                  options:
                      max-size: "50m"
              volumes:
                  - /etc/es/elasticsearch/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
                  - /etc/es/elasticsearch/node-3/plugins:/usr/share/elasticsearch/plugins
                  - /home/es/elasticsearch/node-3/data:/usr/share/elasticsearch/data
                  - /home/es/elasticsearch/node-3/log:/usr/share/elasticsearch/log
              networks:
                  - elastic
          kibana:
              container_name: kibana
              image: kibana:7.17.5
              volumes:
                  - /etc/es/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
              ports:
                  - 5601:5601
              networks:
                  - elastic
          elasticsearch-head:
              image: wallbase/elasticsearch-head:6-alpine
              container_name: elasticsearch-head
              environment:
                  TZ: 'Asia/Shanghai'
              ports:
                  - '9100:9100'
              networks:
                  - elastic
      networks:
          elastic:
              driver: bridge
      
  • 启动
    docker-compose up -d
    
  • 验证
    • 查看docker容器 docker-compose ps
    • 查看kibana,打开:http://192.168.127.142:5601
    • 查看es,打开:http://192.168.127.142:9200
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田秋浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值