首页 > 其他分享 >docker swarm 搭建ES集群

docker swarm 搭建ES集群

时间:2023-01-12 20:15:12浏览次数:36  
标签:node elastic swarm master ES elasticsearch docker es

docker swarm 部署ES集群

0. 环境准备

修改系统配置,在所有主机中,编辑 /etc/sysctl.conf,追加以下内容:

vm.max_map_count=262144

保存后,执行sysctl -p

1. docker-compose文件准备

docker-compose-es-cluster.yml

version: '3.3'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.2
    environment:
      - ELASTICSEARCH_URL=http://es_master:9200
      - ELASTICSEARCH_HOSTS=http://es_master:9200
      - ELASTICSEARCH_USERNAME=elastic
      - ELASTICSEARCH_PASSWORD=vsUZGKNvjWRtTKPmDG
    ports:
      - 5601:5601
    networks:
      - elastic
    deploy:
      mode: replicated
      replicas: 1
      resources:
        limits:
          memory: 800M
      placement:
        constraints:
          - node.role==manager
  es_master:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.8
    environment:
      - node.name=es_master
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es_node
      - cluster.initial_master_nodes=es_master,es_node
      - network.host=0
      - network.publish_host=_eth0_
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - path.repo=/usr/share/elasticsearch/backups
      - xpack.security.enabled=true
      - xpack.security.audit.enabled=false
      - xpack.security.transport.ssl.enabled=false
      - ELASTIC_PASSWORD=vsUZGKNvjWRtTKPmDG
    volumes:
      - es_master_data:/usr/share/elasticsearch/data
      - es_master_logs:/usr/share/elasticsearch/logs
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - elastic
    deploy:
      mode: replicated
      replicas: 1
      resources:
        limits: # es_maseter 资源使用上限
          cpus: "0.50"
          memory: 1G
        reservations: # es_maseter 随时可以使用的资源
          cpus: "0.25"
          memory: 1G
      placement:
        constraints:
          - node.role==manager # 部署位置
  es_node:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.8
    environment:
      - node.name=es_node
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es_master
      - cluster.initial_master_nodes=es_node,es_master
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - path.repo=/usr/share/elasticsearch/backups
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=vsUZGKNvjWRtTKPmDG
    volumes:
      - es_node_data:/usr/share/elasticsearch/data
      - es_node_logs:/usr/share/elasticsearch/logs
    networks:
      - elastic
    deploy:
      mode: replicated
      replicas: 2
      resources:
        limits:
          cpus: "0.50"
          memory: 1G
        reservations:
          cpus: "0.25"
          memory: 1G
      placement:
        constraints:
          - node.role==manager

volumes:
  es_master_data:
    driver: local
  es_master_logs:
    driver: local
  es_node_data:
    driver: local
  es_node_logs:
    driver: local

networks:
  elastic:
    driver: overlay # 必须使用swarm类型的网络

2. 部署服务

部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。

$ docker stack deploy -c docker-compose-es-cluster.yml es

验证ES服务:打开浏览器输入 任一节点IP:9200 即可看到各节点运行状态。如下图所示:

此时ES已成功启动,但是还需要验证集群是否搭建成功。

验证集群:打开浏览器输入 任一节点IP:9200/_cluster/health 即可看到集群状态。如下图所示:

验证Kibana:打开浏览器输入 任一节点IP:5601 能看到kibana的登录页则表示成功。

3. 查看服务

$ docker service ls
ID             NAME           MODE         REPLICAS   IMAGE                                                  PORTS
ou62f7ff0ast   es_es_master   replicated   1/1        docker.elastic.co/elasticsearch/elasticsearch:7.17.8   *:9200->9200/tcp, *:9300->9300/tcp
6pyqh40a2jox   es_es_node     replicated   2/2        docker.elastic.co/elasticsearch/elasticsearch:7.17.8   
kpc66kphr4mb   es_kibana      replicated   1/1        docker.elastic.co/kibana/kibana:7.6.2                  *:5601->5601/tcp

4. 常见问题解决

1. 找不到master节点

报错信息摘要:master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes ...

解决方案:这种情况一般可以在服务down掉之后,删除相关的volume,然后重新部署。但是生产环境慎用down操作。服务启动之后如果需要重启可以通过重新执行docker stack deploy -c docker-compose-es-cluster.yml es来使得配置生效。

标签:node,elastic,swarm,master,ES,elasticsearch,docker,es
From: https://www.cnblogs.com/JentZhang/p/17047797.html

相关文章

  • ES6-Map
    一。怎么用constm=newMap();console.log(m);//{size:0}m.set('a',1);//添加键、值m.set('b',2);console.log(m);//......
  • AtCoder Beginner Contest 134
    AtCoderBeginnerContest134https://atcoder.jp/contests/abc134A-Dodecagon#include<bits/stdc++.h>usingnamespacestd;intmain(){inta;cin......
  • DAMS峰会:解读ES搜索平台、AI中台、DataOps、机器学习等大数据技术精要(转)
    DAMS峰会:解读ES搜索平台、AI中台、DataOps、机器学习等大数据技术精要                       dbaplus社群    ......
  • kafka(kraft模式)3.*集群容器部署 docker-compose
    一、创建yml文件要修改部分1.修改宿主机ipKAFKA_CFG_ADVERTISED_LISTENERS2.修改挂载路径version:"3.6"services:kafka1:container_name:kafka1image:......
  • Kubernetes组件简介
    Kubernetes组件简介Kubernetes(简称k8s)致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。k8s是什么一个基于容器技术的分布式架构一个一站式......
  • freeswitch的多租户模式
      概述freeswitch是一款简单好用的VOIP开源软交换平台。现在的VOIP服务越来越倾向于云端服务,包括呼叫中心云服务,线路云平台。而云平台对多个客户的服务就需要做好......
  • python requests函数处理文件上传
    问题:如何使用python的requests函数来发送一个“文件上传”的接口? 一:首先得打开文件,file={'文件参数名':open('文件路径','rb')} “文件路径”好理解,但是“......
  • element el-progress进度条下放跟随进度展示文字
    以我的思路来看这个下方展示文字就是首先能获取到这个进度条的百分比是多少通过el-progress组件源码我们可以看到content函数来获取到这个进度条的百分比content(){......
  • KingbaseES的表空间
    1、表空间的概念KingbaseES中的表空间允许在文件系统中定义用来存放表示数据库对象的文件的位置。在KingbaseES中表空间实际上就是给表指定一个存储目录。2、表空间的作......
  • library initialization failed - unable to allocate file descriptor table - out o
    1.报错日志libraryinitializationfailed-unabletoallocatefiledescriptortable-outofmemory/cm-server/aiboxCloud-web/boot/entrypoint.sh:line2:  ......