基于swarm的elasticsearch集群部署

举报
在别处 发表于 2019/01/27 13:46:11 2019/01/27
【摘要】 基于swarm的es集群部署: elasticsearch如果直接在物理机上安装的话,需要去考虑一些服务的编排以及配置一致性问题。后期运维的时候服务的升级和回滚都会比较麻烦。使用docker来搭建的话,就可以使用swarm这样的集群管理工具来对整个集群进行管理,会带来很多有利的特性。swarm部署方便简单,这边不赘述,主要描述一些es部署的细节内容。1、修改/usr/share/el...

基于swarm的es集群部署:


     elasticsearch如果直接在物理机上安装的话,需要去考虑一些服务的编排以及配置一致性问题。后期运维的时候服务的升级和回滚都会比较麻烦。使用docker来搭建的话,就可以使用swarm这样的集群管理工具来对整个集群进行管理,会带来很多有利的特性。swarm部署方便简单,这边不赘述,主要描述一些es部署的细节内容。



1、修改/usr/share/elasticsearch/config/elasticsearch.yml  配置文件 ,添加

# head插件配置

http.cors.enabled: true

http.cors.allow-origin: "*"

network.host: 0.0.0.0

transport.tcp.port: 9300

http.port: 9200


完成后,我们可以把elasticsearch镜像打包更新,存储到私有regirsty中。



2、es.yml ,用于使用docker stack deploy  部署:

version: '3.2'

services:

  es_master:

    image: '10.211.121.26/library/elasticsearch:5.5.1_ik'

    command: [ elasticsearch, -E, network.host=0.0.0.0, -E, discovery.zen.ping.unicast.hosts=es_master, -E, discovery.zen.minimum_master_nodes=1, -E, node.master=true ]

    volumes:

      - /data0/elasticsearch/data:/usr/share/elasticsearch/data

      - /data0/elasticsearch/logs:/usr/share/elasticsearch/logs

      #目录必须在主机节点存在,这边容器重启时,es数据才不会丢失。


    networks:

       esnet:

    deploy:

      replicas: 3

      endpoint_mode: dnsrr   

      placement:

        #限定容器运行在对应标签节点

        constraints: [node.labels.app_role == elasticsearch]


  #nginx做代理,实现es集群入口访问: 

  nginx:

    image: 'nginx:1'

    ports:

       - '9200:9200'

    command: |

      /bin/bash -c "echo '

      server {

        listen 9200;

        add_header X-Frame-Options "SAMEORIGIN";

        location / {

           #proxy_pass http://elasticsearch:9200;

            proxy_pass http://es_master:9200;

            proxy_http_version 1.1;

            proxy_set_header Connection keep-alive;

            proxy_set_header Upgrade $$http_upgrade;

            proxy_set_header Host $$host;

            proxy_set_header X-Real-IP $$remote_addr;

            proxy_cache_bypass $$http_upgrade;

        }

      }' | tee /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"


    networks:

       esnet:


#eshead 网络插件,实现es集群可视化管理。

  eshead:

    image: '10.211.121.26/library/elasticsearch-head:5'

    ports:

      - '9100:9100'

    networks:

      esnet:


  kibana:

    image: kibana:5.5.1

    ports:

     - '5601:5601'

    environment:

     - ELASTICSEARCH_URL=http://es_master:9200

    networks:

      esnet:



networks:

   esnet:

    driver: overlay

    ipam:

      driver: default

      config:

      - subnet: 12.0.0.0/24



在主机上给指定的node 添加 elasticsearch 标签,限制es节点运行在指定主机上。

#  docker node  update  --label-add app_role=elasticsearch  nodename

#在swarm  master节点运行: docker stack deploy -c es.yml  es001  ,docker将自动完成集群创建操作。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。