环境背景:Ubuntu 20.04 LTS、es-7.7.0、docker-19.03.8、docker-compose-1.25.5
参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls-docker.html
一、新建文件
1.1 在目录/data/operations下分别创建如下3个文件
1.1.1 .env文件内容
# Use an es_ prefix for all volumes and networks created by docker-compose
# COMPOSE_PROJECT_NAME=es
CERTS_DIR_ES=/usr/share/elasticsearch/config/certs
CERTS_DIR_KIBANA=/usr/share/kibana/config/certs
CERTS_DIR_LOGSTASH=/usr/share/logstash/config/certs
CERTS_DIR_FILEBEAT=/usr/share/filebeat/config/certs
ELASTIC_PASSWORD=123456
PWD=/data/operations
1.1.2 create-certs.yml文件内容
version: '3'
services:
create_certs:
container_name: create_certs
image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
command: >
bash -c '
if [[ ! -f /certs/bundle.zip ]]; then
bin/elasticsearch-certutil cert --silent --pem --in config/instances.yml -out /certs/bundle.zip;
unzip /certs/bundle.zip -d /certs;
fi;
chown -R 1000:0 /certs
'
user: "0"
# working_dir: /usr/share/elasticsearch
volumes:
- ${PWD}/config/certs:/certs
- ${PWD}/config/instances.yml:/usr/share/elasticsearch/config/instances.yml
1.1.3 es-docker-compose.yml文件内容
version: '3.8'
networks:
es-shared:
external:
name: es-shared
services:
es01:
container_name: es01
image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
environment:
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
CERTS_DIR_ES: ${CERTS_DIR_ES}
ES_JAVA_OPTS: -Xms512m -Xmx512m
# xpack.license.self_generated.type: trial
volumes:
- /data/operations/data/es01:/usr/share/elasticsearch/data
- /data/operations/config/certs/es01:${CERTS_DIR_ES}/es01
- /data/operations/config/certs/ca:${CERTS_DIR_ES}/ca
- ${PWD}/config/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
networks:
- es-shared
healthcheck:
test: curl --cacert ${CERTS_DIR_ES}/ca/ca.crt -s https://localhost:9200 >/dev/null; if [[ $$? == 52 ]]; then echo 0; else echo 1; fi
interval: 30s
timeout: 10s
retries: 5
es02:
container_name: es02
image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
environment:
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
CERTS_DIR_ES: ${CERTS_DIR_ES}
ES_JAVA_OPTS: -Xms512m -Xmx512m
# xpack.license.self_generated.type: trial
volumes:
- /data/operations/data/es02:/usr/share/elasticsearch/data
- /data/operations/config/certs/es02:${CERTS_DIR_ES}/es02
- /data/operations/config/certs/ca:${CERTS_DIR_ES}/ca
- ${PWD}/config/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9201:9200
networks:
- es