docker-compose 部署 elasticsearch 集羣

目錄結構

├── config                       配置目錄
│   ├── es.yml                   es配置文件
│   ├── es1.yml                  es1配置文件
│   ├── es2.yml                  es2配置文件
└── docker-compose.yml           docker-compose配置文件

docker-compose.yml

version: "2"
services:
  es:
    image: elasticsearch:5.6-alpine
    container_name: es
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    networks:
      - net-es
  es1:
    image: elasticsearch:5.6-alpine
    container_name: es1
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    ports:
      - "9201:9200"
      - "9301:9300"
    volumes:
      - ./config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    networks:
      - net-es
  es2:
    image: elasticsearch:5.6-alpine
    container_name: es2
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    ports:
      - "9202:9200"
      - "9302:9300"
    volumes:
      - ./config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    networks:
      - net-es
networks:
  net-es:

es.yml

cluster.name: my-test
node.name: es
node.master: true
node.data: true

network.host: es
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"

discovery.zen.ping.unicast.hosts: ["es:9300", "es1:9300", "es2:9300"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 5s

bootstrap.memory_lock: true
action.destructive_requires_name: true

es1.yml

cluster.name: my-test
node.name: es1
node.master: true
node.data: true

network.host: es1
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"

discovery.zen.ping.unicast.hosts: ["es:9300", "es1:9300", "es2:9300"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 5s

bootstrap.memory_lock: true
action.destructive_requires_name: true

es2.yml

cluster.name: my-test
node.name: es2
node.master: false
node.data: true

network.host: es2
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"

discovery.zen.ping.unicast.hosts: ["es:9300", "es1:9300", "es2:9300"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 5s

bootstrap.memory_lock: true
action.destructive_requires_name: true

使用

  1. 安裝 dockerdocker-compose
  2. 執行命令 docker-compose up -d
  3. 打開 chrome 瀏覽器的插件 ElasticSearch Head, 效果如下圖
    這裏寫圖片描述

本例子選擇了 eses1master
若想方便看日誌, 也可將 logs 掛載出來, 例如在 docker-compose.ymlesvolumes 加上
- ./logs/es/:/usr/share/elasticsearch/logs/:rw
同理 data 掛載出來可加上
- ./data/es/:/usr/share/elasticsearch/data/:rw





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