docker、docker-compose部署elasticsearch集群

docker-compose部署elasticsearch集群

一、部署思路

模擬部署了六個(gè)節(jié)點(diǎn),其中兩個(gè)master節(jié)點(diǎn),不做數(shù)據(jù)存儲(chǔ),四個(gè)data節(jié)點(diǎn),用來存儲(chǔ)數(shù)據(jù)

注意:

  1. 本文使用docker-compose進(jìn)行部署,沒有安裝的先自行安裝

  2. 本文的elasticsearch集群使用docker進(jìn)行部署,開發(fā)學(xué)習(xí)環(huán)境中可以這么使用,在生產(chǎn)環(huán)境中還是不要這樣部署,熟悉elasticsearch原理的就會(huì)清楚,單機(jī)部署elasticsearch集群基本無法起到什么作用。

二、配置文件

1、目錄結(jié)構(gòu)

      docker-compose.yml
      data
        es00
        es01
        es02
        es03
        es04
        es05
      config
        es00
          elasticsearch.yml
        es01
          elasticsearch.yml
        es02
          elasticsearch.yml
        es03
          elasticsearch.yml
        es04
          elasticsearch.yml
        es05
          elasticsearch.yml
      logs
        es00
        es01
        es02
        es03
        es04
        es05

2、docker-compose.yml

version: '2'
services:
  cerebro:
    image: lmenezes/cerebro:0.8.4
    container_name: cerebro
    ports:
      - "9000:9000"
    command:
      - -Dhosts.0.host=http://es01:9201
    networks:
      - esnet
  kibana:
    image: kibana:7.3.0
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://es01:9201
      # 需要將Kibana配置文件中的小寫轉(zhuǎn)換成大寫,然后這個(gè)才能用于變量,才能被設(shè)置到
      - I18N_LOCALE=zh-CN
      - xpack.monitoring.ui.container.elasticsearch.enabled=false
    ports:
      - 5601:5601
    networks:
      - esnet
  es00:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es00
    restart: always
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "ES_JAVA_OPTS=-Des.insecure.allow.root=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es00:/usr/share/elasticsearch/data
      - ./config/es00/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/es00:/usr/share/elasticsearch/logs
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - esnet
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es01
    restart: always
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "ES_JAVA_OPTS=-Des.insecure.allow.root=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es01:/usr/share/elasticsearch/data
      - ./config/es01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/es01:/usr/share/elasticsearch/logs
    ports:
      - 9201:9201
      - 9301:9301
    networks:
      - esnet
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es02
    restart: always
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es02:/usr/share/elasticsearch/data
      - ./config/es02/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/es02:/usr/share/elasticsearch/logs
    depends_on:
      - es01
    networks:
      - esnet
    ports:
      - 9202:9202
      - 9302:9302
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es03
    restart: always
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es03:/usr/share/elasticsearch/data
      - ./config/es03/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/es03:/usr/share/elasticsearch/logs
    depends_on:
      - es01
    networks:
      - esnet
    ports:
      - 9203:9203
      - 9303:9303
  es04:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es04
    restart: always
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es04:/usr/share/elasticsearch/data
      - ./config/es04/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/es04:/usr/share/elasticsearch/logs
    depends_on:
      - es01
    networks:
      - esnet
    ports:
      - 9204:9204
      - 9304:9304
  es05:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
    container_name: es05
    restart: always
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es05:/usr/share/elasticsearch/data
      - ./config/es05/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/es05:/usr/share/elasticsearch/logs
    depends_on:
      - es01
    networks:
      - esnet
    ports:
      - 9205:9205
      - 9305:9305

networks:
  esnet:

3、master 節(jié)點(diǎn)

1、es00
cluster.name: es-cluster
node.name: es00
node.master: true
node.data: false
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
# transport.tcp.port: [9300,9302,9303,9304,9305]
# discovery.zen.ping.unicast.hosts: ["es01","es02","es03","es04","es05"]
cluster.initial_master_nodes: ["es00","es01"]
discovery.seed_hosts: ["es00","es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

2、es01
cluster.name: es-cluster
node.name: es01
node.master: true
node.data: false
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9201
# transport.tcp.port: [9300,9302,9303,9304,9305]
# discovery.zen.ping.unicast.hosts: ["es01","es02","es03","es04","es05"]
cluster.initial_master_nodes: ["es00","es01"]
discovery.seed_hosts: ["es00","es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

4、data節(jié)點(diǎn)

1、es02
cluster.name: es-cluster
node.name: es02
node.master: false
node.data: true
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9202
# transport.tcp.port: [9300,9302,9303,9304,9305]
# discovery.zen.ping.unicast.hosts: ["es01","es02","es03","es04","es05"]
cluster.initial_master_nodes: ["es00","es01"]
discovery.seed_hosts: ["es00","es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

2、es03
cluster.name: es-cluster
node.name: es03
node.master: false
node.data: true
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9203
# transport.tcp.port: [9300,9302,9303,9304,9305]
# discovery.zen.ping.unicast.hosts: ["es01","es02","es03","es04","es05"]
cluster.initial_master_nodes: ["es00","es01"]
discovery.seed_hosts: ["es00","es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

1、es04
cluster.name: es-cluster
node.name: es04
node.master: false
node.data: true
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9204
# transport.tcp.port: [9300,9302,9303,9304,9305]
# discovery.zen.ping.unicast.hosts: ["es01","es02","es03","es04","es05"]
cluster.initial_master_nodes: ["es00","es01"]
discovery.seed_hosts: ["es00","es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

1、es05
cluster.name: es-cluster
node.name: es05
node.master: false
node.data: true
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9205
# transport.tcp.port: [9300,9302,9303,9304,9305]
# discovery.zen.ping.unicast.hosts: ["es01","es02","es03","es04","es05"]
cluster.initial_master_nodes: ["es00","es01"]
discovery.seed_hosts: ["es00","es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

cluster.name: es-cluster
node.name: es02
node.master: false
node.data: true
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9202
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["es01","es02","es03"]
cluster.initial_master_nodes: ["es01"]

http.cors.enabled: true
http.cors.allow-origin: "*"

xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

三、集群啟動(dòng)

1、啟動(dòng)

在docker-compose.yml文件目錄下

docker-compose up -d 

2、停止

docker-compose stop 

3、如果啟動(dòng)后無法訪問,查看日志排查問題(會(huì)有使用root用戶無法啟動(dòng)es的問題,需要排查)

docker logs -f -t --tail=500 es01

無法啟動(dòng)的原因

1、會(huì)有使用root用戶無法啟動(dòng)es的問題,需要排查(新建系統(tǒng)用戶啟動(dòng)es集群)

2、需要修改文件夾權(quán)限 chmod 777 -R [文件夾] (data、log、config 幾個(gè)文件夾改權(quán)限)

三、集群安裝分詞器

6.1 進(jìn)入docker容器

docker exec -it es01/bin/bash

6.2 下載安裝分詞器

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip

文件地址:https://download.csdn.net/download/iampatrick_star/87131975?spm=1001.2014.3001.5503

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容