docker-compose构建elasticsearch集群

运行环境

centos 7.4.1708(mini)
docker 18.06.1-ce
docker-compose 1.26.2

镜像环境

docker.elastic.co/elasticsearch/elasticsearch:6.4.0
docker.elastic.co/kibana/kibana:6.4.0

创建数据、日志、配置文件夹

//数据文件夹
mkdir -p /data/elasticsearch/data/{master,note1,note2}
//日志文件夹
mkdir -p /data/elasticsearch/log/{master,note1,note2}
//配置文件夹
mkdir -p /data/elasticsearch/conf

docker-compose文件

version: '3'
services:
  elasticsearch_n0:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.0
    container_name: elasticsearch_n0
    entrypoint: ["sh", "/home/docker-es-plugins.sh"]
    privileged: true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/node0:/usr/share/elasticsearch/data
      - ./logs/node0:/usr/share/elasticsearch/logs
      - .:/home
      - ./conf/master.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - elastic
          
  elasticsearch_n1:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.0
    container_name: elasticsearch_n1
    entrypoint: ["sh", "/home/docker-es-plugins.sh"]
    privileged: true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/node1:/usr/share/elasticsearch/data
      - ./logs/node1:/usr/share/elasticsearch/logs
      - .:/home
      - ./conf/node1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9201:9200
      - 9301:9300
    networks:
      - elastic
          
  elasticsearch_n2:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.4.0
    container_name: elasticsearch_n2
    entrypoint: ["sh", "/home/docker-es-plugins.sh"]
    privileged: true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/node2:/usr/share/elasticsearch/data
      - ./logs/node2:/usr/share/elasticsearch/logs
      - .:/home
      - ./conf/node2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9202:9200
      - 9302:9300
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:6.4.0 
    container_name: kibana
    environment:
      - SERVER_NAME=kibana
      - ELASTICSEARCH_URL=http://elasticsearch_n0:9200
      - XPACK_MONITORING_ENABLED=true
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch_n0
          
networks:
  elastic:
    driver: bridge

注意:/data/docker-es-plugins.sh是安装 ik 分词的脚本,亦可使用已安装 ik 的 elasticsearch 镜像

master.yml文件

bootstrap.memory_lock: false
cluster.name: elasticsearch-cluster
node.name: elasticsearch_n0
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: elasticsearch_n0:9300,elasticsearch_n1:9300,elasticsearch_n2:9300
discovery.zen.minimum_master_nodes: 2

path.logs: /usr/share/elasticsearch/logs
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.audit.enabled: true

note1.yml文件

bootstrap.memory_lock: false
cluster.name: elasticsearch-cluster
node.name: elasticsearch_n1
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: elasticsearch_n0:9300,elasticsearch_n1:9300,elasticsearch_n2:9300
discovery.zen.minimum_master_nodes: 2

path.logs: /usr/share/elasticsearch/logs
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.audit.enabled: true

note2.yml文件跟note1.yml类似,需要注意的是修改node.name: elasticsearch_n2

docker-es-plugins.sh 文件

在docker-compose中运行shell脚本或命令,可使用entrypoint

#!/bin/bash
# 离线安装,需要下载安装包
cp /home/analysis-ik /usr/share/elasticsearch/plugins -r
# 在线安装
#bin/elasticsearch-plugin install analysis-icu
#bin/elasticsearch-plugin install analysis-smartcn
#bin/elasticsearch-plugin install --batch https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip

exec /usr/local/bin/docker-entrypoint.sh elasticsearch

运行

docker-compose up -d

运行一段时间后,检查其节点
运行成功

文件架构

├── analysis-ik
│   ├── commons-codec-1.9.jar
│   ├── commons-logging-1.2.jar
│   ├── config
│   │   ├── extra_main.dic
│   │   ├── extra_single_word.dic
│   │   ├── extra_single_word_full.dic
│   │   ├── extra_single_word_low_freq.dic
│   │   ├── extra_stopword.dic
│   │   ├── IKAnalyzer.cfg.xml
│   │   ├── main.dic
│   │   ├── preposition.dic
│   │   ├── quantifier.dic
│   │   ├── stopword.dic
│   │   ├── suffix.dic
│   │   └── surname.dic
│   ├── elasticsearch-analysis-ik-6.4.0.jar
│   ├── httpclient-4.5.2.jar
│   ├── httpcore-4.4.4.jar
│   ├── plugin-descriptor.properties
│   └── plugin-security.policy
├── conf
│   ├── master.yml
│   ├── node1.yml
│   └── node2.yml
├── data
│   ├── node0
│   ├── node1
│   └── node2
├── docker-compose.yml
├── docker-es-plugins.sh
└── logs
    ├── node0
    ├── node1
    └── node2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值