基於swarm的elasticsearch集羣搭建

es集羣構建:

1、安裝head插件:

  for Elasticsearch 5.x: docker run -p 9100:9100 mobz/elasticsearch-head:5

  ( docker run -p 9100:9100 10.211.121.26/library/elasticsearch-head )

   出現問題

      head主控頁面是可以顯示的,但是顯示連接失敗

      “集羣健康值: 未連接”

   解決方案

    修改elasticsearch.yml文件

    vim $ES_HOME$/config/elasticsearch.yml

    # 增加如下字段

    http.cors.enabled: true

    http.cors.allow-origin: "*"


  運行:docker run -d -p 9100:9100 --name eshead 10.211.121.26/library/elasticsearch-head:5


2、安裝中文分頁插件:

  use elasticsearch-plugin to install ( version > v5.5.1 ):

  ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip


3、修改系統參數:sysctl -w vm.max_map_count=262144



4、啓動elasticsearch集羣:

  master:

      docker run -d  -p 9200:9200 -p 9300:9300 -v /data0/elasticsearch/data:/usr/share/elasticsearch/data  -v /data0/elasticsearch/logs:/usr/share/elasticsearch/logs  --name elasticsearch 10.211.121.26/library/elasticsearch:5.5.1_ik


      docker cp  elasticsearch.yml  elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml


  data:

    docker run -d  -p 9200:9200 -p 9300:9300 -v /data0/elasticsearch/data:/usr/share/elasticsearch/data  -v /data0/elasticsearch/logs:/usr/share/elasticsearch/logs  --name elasticsearch 10.211.121.26/library/elasticsearch:5.5.1_ik


    docker cp  elasticsearch.yml  elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml


5、啓動kibana

 docker run --name kibana -e ELASTICSEARCH_URL=http://10.39.10.224:9200 -p 5601:5601 -d kibana:5.5.1




 



##################################################

如下爲yml配置文件es.yml :



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=10.0.0.3, -E, discovery.zen.minimum_master_nodes=1 ]

    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

      #目錄必須在主機節點存在


    networks:

       esnet:

    deploy:

      replicas: 3

      #默認是使用的vip模式,集羣無法搭建成功。添加dnsrr後ok

      endpoint_mode: dnsrr

      placement:

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


  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:

        #ipv4_address: 12.0.0.100


  eshead:

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

    ports:

      - '9100:9100'

    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將自動完成集羣創建操作。

#

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章