目前我们 es 使用的基本上都是集群,1 主 1 从基本可以满足测试环境的需求,如果使用 docker run 的方式,那么需要该 2 个配置文件中的部分配置,然后再用 dockerrun 起来,这样也可以但是需要修改很多配置文件,相对比较繁琐一些,最近在研究 docker-compose,便想使用 docker-compose 来启动,所有需要用到的配置在一个地方进行设置,同时后期还可以使用其他的一些方法自动改此部分的配置,那么以后集群组件维护起来会方便很多。
docker run --name thunder-es_1 --net=host -d -v /data/project/esconfig/thunder-es-1.yml:/usr/share/elasticsearch/config/elasticsearch.yml 192.168.109.81:5000/es:5.5.1 elasticsearch
docker run --name thunder-es_2 --net=host -d -v /data/project/esconfig/thunder-es-1.yml:/usr/share/elasticsearch/config/elasticsearch.yml 192.168.109.81:5000/es:5.5.1 elasticsearch
# 配置文件中需要修改以下参数
cluster.name:es-cluster
node.name:node-1
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["192.168.109.101:9401","192.168.109.101:9402"]
# 如果允许header访问则增加以下配置
http.cors.enabled: true
http.cors.allow-origin: "*"
docker-compose -f es-cluster.yml up -d
输入地址查看集群状态:
http://192.168.109.102:9208/_cat/health?v
#es-cluster.yml 文件说明 重要参数说明
version: '2.2'
services:
elasticsearch: #服务名称
image: es-cluster:5.5.1 #使用的镜像,该镜像是在官网的镜像基础上增加了允许head访问的配置项,其他内容与官网完全一样。
container_name: elasticsearch #容器名称,可与服务报名保持一致
hostname: elasticsearch #容器机器名,可与容器名称和服务报名保持一致
environment:
- cluster.name=docker-cluster #集群名称,两个节点需要保持一致
- bootstrap.memory_lock=true #可根据需要配置
- node.name=node-0 #节点名称,与另外一个节点区分开
- "xpack.security.enabled=false" #xpack是否需要密码登录,打开后暂时不知道默认密码是多少
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9208:9200 #重要:该集群对外出去的http端口号
- 9308:9300 #重要:该集群对外映射出去的transport端口号
networks: #可以使用自建网络
- esnet
elasticsearch2:
image: es-cluster:5.5.1
container_name: elasticsearch2
hostname: elasticsearch2
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- node.name=node-1
- "xpack.security.enabled=false"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch"
ulimits:
memlock:
soft: -1
hard: -1
networks:
- esnet
networks:
esnet:
Dockerfile
#新生成的镜像基于官网中的es进行创建
FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.1
MAINTAINER by juanzi
#WORKDIR /data
RUN echo "http.cors.enabled: true">>/usr/share/elasticsearch/config/elasticsearch.yml
RUN echo "http.cors.allow-origin: \"*\" " >>/usr/share/elasticsearch/config/elasticsearch.yml
生成镜像命令:
docker build -t es-cluster:5.5.1 .
查看镜像:
docker images |grep "es-cluster"