first commit
This commit is contained in:
@@ -0,0 +1,442 @@
|
||||
name: nebula-stack
|
||||
|
||||
x-logging: &logging
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
x-nebula: &nebula
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- SYS_PTRACE
|
||||
logging: *logging
|
||||
|
||||
x-es-env: &es-env
|
||||
cluster.name: nebula-elasticsearch
|
||||
discovery.seed_hosts: ${ES01_IP}:9300,${ES02_IP}:9300,${ES03_IP}:9300
|
||||
cluster.initial_master_nodes: es01,es02,es03
|
||||
bootstrap.memory_lock: "${ES_MEMORY_LOCK}"
|
||||
network.host: "0.0.0.0"
|
||||
xpack.security.enabled: "true"
|
||||
xpack.security.http.ssl.enabled: "false"
|
||||
xpack.security.transport.ssl.enabled: "true"
|
||||
xpack.security.transport.ssl.verification_mode: certificate
|
||||
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
|
||||
xpack.security.transport.ssl.truststore.path: certs/elastic-stack-ca.p12
|
||||
xpack.security.transport.ssl.keystore.password: ${ES_CERT_PASSWORD}
|
||||
xpack.security.transport.ssl.truststore.password: ${ES_CERT_PASSWORD}
|
||||
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
|
||||
ES_JAVA_OPTS: ${ES_JAVA_OPTS}
|
||||
TAKE_FILE_OWNERSHIP: "true"
|
||||
cluster.routing.allocation.disk.threshold_enabled: "${ES_DISK_THRESHOLD}"
|
||||
ingest.geoip.downloader.enabled: "false"
|
||||
|
||||
x-es-node: &es-node
|
||||
image: docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION}
|
||||
user: "0:0"
|
||||
restart: unless-stopped
|
||||
logging: *logging
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
depends_on:
|
||||
es-certs:
|
||||
condition: service_completed_successfully
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- 'curl -fsS -u "elastic:$$ELASTIC_PASSWORD" http://127.0.0.1:9200/_cluster/health >/dev/null'
|
||||
interval: 15s
|
||||
timeout: 10s
|
||||
retries: 20
|
||||
start_period: 90s
|
||||
|
||||
services:
|
||||
es-certs:
|
||||
image: docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION}
|
||||
user: "0:0"
|
||||
restart: "no"
|
||||
logging: *logging
|
||||
environment:
|
||||
ES_CERT_PASSWORD: ${ES_CERT_PASSWORD}
|
||||
ES01_IP: ${ES01_IP}
|
||||
ES02_IP: ${ES02_IP}
|
||||
ES03_IP: ${ES03_IP}
|
||||
entrypoint: ["bash", "-ec"]
|
||||
command:
|
||||
- |
|
||||
if [ -s /certs/elastic-certificates.p12 ] && [ -s /certs/elastic-stack-ca.p12 ]; then
|
||||
exit 0
|
||||
fi
|
||||
rm -f /certs/elastic-certificates.p12 /certs/elastic-stack-ca.p12
|
||||
bin/elasticsearch-certutil ca \
|
||||
--silent \
|
||||
--out /certs/elastic-stack-ca.p12 \
|
||||
--pass "$$ES_CERT_PASSWORD"
|
||||
bin/elasticsearch-certutil cert \
|
||||
--silent \
|
||||
--ca /certs/elastic-stack-ca.p12 \
|
||||
--ca-pass "$$ES_CERT_PASSWORD" \
|
||||
--pass "$$ES_CERT_PASSWORD" \
|
||||
--name nebula-es \
|
||||
--dns es01,es02,es03 \
|
||||
--ip "$$ES01_IP,$$ES02_IP,$$ES03_IP,127.0.0.1" \
|
||||
--out /certs/elastic-certificates.p12
|
||||
chown 1000:0 /certs/elastic-certificates.p12 /certs/elastic-stack-ca.p12
|
||||
chmod 600 /certs/elastic-certificates.p12 /certs/elastic-stack-ca.p12
|
||||
volumes:
|
||||
- es_certs:/certs
|
||||
networks:
|
||||
- backend
|
||||
|
||||
es01:
|
||||
<<: *es-node
|
||||
hostname: es01
|
||||
environment:
|
||||
<<: *es-env
|
||||
node.name: es01
|
||||
network.publish_host: ${ES01_IP}
|
||||
ports:
|
||||
- "127.0.0.1:9200:9200"
|
||||
volumes: &es-volumes
|
||||
- esdata01:/usr/share/elasticsearch/data
|
||||
- es_certs:/usr/share/elasticsearch/config/certs:ro
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${ES01_IP}
|
||||
|
||||
es02:
|
||||
<<: *es-node
|
||||
hostname: es02
|
||||
environment:
|
||||
<<: *es-env
|
||||
node.name: es02
|
||||
network.publish_host: ${ES02_IP}
|
||||
volumes:
|
||||
- esdata02:/usr/share/elasticsearch/data
|
||||
- es_certs:/usr/share/elasticsearch/config/certs:ro
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${ES02_IP}
|
||||
|
||||
es03:
|
||||
<<: *es-node
|
||||
hostname: es03
|
||||
environment:
|
||||
<<: *es-env
|
||||
node.name: es03
|
||||
network.publish_host: ${ES03_IP}
|
||||
volumes:
|
||||
- esdata03:/usr/share/elasticsearch/data
|
||||
- es_certs:/usr/share/elasticsearch/config/certs:ro
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${ES03_IP}
|
||||
|
||||
metad0:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-metad:${NEBULA_VERSION}
|
||||
hostname: metad0
|
||||
environment:
|
||||
USER: root
|
||||
command: &meta-cmd
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${METAD0_IP}
|
||||
- --ws_ip=${METAD0_IP}
|
||||
- --port=9559
|
||||
- --ws_http_port=19559
|
||||
- --data_path=/data/meta
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
healthcheck: &meta-health
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${METAD0_IP}/9559'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- meta0:/data/meta
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${METAD0_IP}
|
||||
|
||||
metad1:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-metad:${NEBULA_VERSION}
|
||||
hostname: metad1
|
||||
environment:
|
||||
USER: root
|
||||
command:
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${METAD1_IP}
|
||||
- --ws_ip=${METAD1_IP}
|
||||
- --port=9559
|
||||
- --ws_http_port=19559
|
||||
- --data_path=/data/meta
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${METAD1_IP}/9559'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- meta1:/data/meta
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${METAD1_IP}
|
||||
|
||||
metad2:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-metad:${NEBULA_VERSION}
|
||||
hostname: metad2
|
||||
environment:
|
||||
USER: root
|
||||
command:
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${METAD2_IP}
|
||||
- --ws_ip=${METAD2_IP}
|
||||
- --port=9559
|
||||
- --ws_http_port=19559
|
||||
- --data_path=/data/meta
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${METAD2_IP}/9559'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- meta2:/data/meta
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${METAD2_IP}
|
||||
|
||||
storaged0:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-storaged:${NEBULA_VERSION}
|
||||
hostname: storaged0
|
||||
environment:
|
||||
USER: root
|
||||
command: &storage-cmd
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${STORAGED0_IP}
|
||||
- --ws_ip=${STORAGED0_IP}
|
||||
- --port=9779
|
||||
- --ws_http_port=19779
|
||||
- --data_path=/data/storage
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
depends_on: &meta-ready
|
||||
metad0:
|
||||
condition: service_healthy
|
||||
metad1:
|
||||
condition: service_healthy
|
||||
metad2:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${STORAGED0_IP}/9779'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- storage0:/data/storage
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${STORAGED0_IP}
|
||||
|
||||
storaged1:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-storaged:${NEBULA_VERSION}
|
||||
hostname: storaged1
|
||||
environment:
|
||||
USER: root
|
||||
command:
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${STORAGED1_IP}
|
||||
- --ws_ip=${STORAGED1_IP}
|
||||
- --port=9779
|
||||
- --ws_http_port=19779
|
||||
- --data_path=/data/storage
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
depends_on: *meta-ready
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${STORAGED1_IP}/9779'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- storage1:/data/storage
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${STORAGED1_IP}
|
||||
|
||||
storaged2:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-storaged:${NEBULA_VERSION}
|
||||
hostname: storaged2
|
||||
environment:
|
||||
USER: root
|
||||
command:
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${STORAGED2_IP}
|
||||
- --ws_ip=${STORAGED2_IP}
|
||||
- --port=9779
|
||||
- --ws_http_port=19779
|
||||
- --data_path=/data/storage
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
depends_on: *meta-ready
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${STORAGED2_IP}/9779'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- storage2:/data/storage
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${STORAGED2_IP}
|
||||
|
||||
graphd:
|
||||
<<: *nebula
|
||||
image: vesoft/nebula-graphd:${NEBULA_VERSION}
|
||||
hostname: graphd
|
||||
environment:
|
||||
USER: root
|
||||
command:
|
||||
- --meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559
|
||||
- --local_ip=${GRAPHD_IP}
|
||||
- --ws_ip=${GRAPHD_IP}
|
||||
- --port=9669
|
||||
- --ws_http_port=19669
|
||||
- --logtostderr=true
|
||||
- --redirect_stdout=false
|
||||
depends_on: *meta-ready
|
||||
ports:
|
||||
- "127.0.0.1:9669:9669"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${GRAPHD_IP}/9669'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${GRAPHD_IP}
|
||||
|
||||
storaged-listener:
|
||||
image: vesoft/nebula-storaged:${NEBULA_VERSION}
|
||||
hostname: storaged-listener
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- SYS_PTRACE
|
||||
logging: *logging
|
||||
environment:
|
||||
USER: root
|
||||
entrypoint: ["bash", "-ec"]
|
||||
command:
|
||||
- |
|
||||
mkdir -p /data/listener /logs
|
||||
exec /usr/local/nebula/bin/nebula-storaged \
|
||||
--daemonize=false \
|
||||
--containerized=true \
|
||||
--meta_server_addrs=${METAD0_IP}:9559,${METAD1_IP}:9559,${METAD2_IP}:9559 \
|
||||
--local_ip=${LISTENER_IP} \
|
||||
--ws_ip=${LISTENER_IP} \
|
||||
--port=9789 \
|
||||
--ws_http_port=19789 \
|
||||
--heartbeat_interval_secs=10 \
|
||||
--listener_path=/data/listener \
|
||||
--data_path=/data \
|
||||
--log_dir=/logs \
|
||||
--logtostderr=true \
|
||||
--redirect_stdout=false
|
||||
depends_on: *meta-ready
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/${LISTENER_IP}/9789'"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 18
|
||||
start_period: 20s
|
||||
volumes:
|
||||
- listener0:/data
|
||||
networks:
|
||||
backend:
|
||||
ipv4_address: ${LISTENER_IP}
|
||||
|
||||
studio:
|
||||
image: vesoft/nebula-graph-studio:${STUDIO_VERSION}
|
||||
hostname: studio
|
||||
restart: unless-stopped
|
||||
logging: *logging
|
||||
depends_on:
|
||||
- graphd
|
||||
ports:
|
||||
- "127.0.0.1:7001:7001"
|
||||
networks:
|
||||
- backend
|
||||
|
||||
console:
|
||||
image: vesoft/nebula-console:${NEBULA_VERSION}
|
||||
profiles: ["ops"]
|
||||
entrypoint: ["nebula-console"]
|
||||
command: ["-addr", "graphd", "-port", "9669", "-u", "root", "-p", "nebula"]
|
||||
stdin_open: true
|
||||
tty: true
|
||||
networks:
|
||||
- backend
|
||||
|
||||
ops:
|
||||
image: vesoft/nebula-console:${NEBULA_VERSION}
|
||||
profiles: ["ops"]
|
||||
entrypoint: ["sh", "-c"]
|
||||
environment:
|
||||
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD}
|
||||
STORAGED0_IP: ${STORAGED0_IP}
|
||||
STORAGED1_IP: ${STORAGED1_IP}
|
||||
STORAGED2_IP: ${STORAGED2_IP}
|
||||
ES01_IP: ${ES01_IP}
|
||||
ES02_IP: ${ES02_IP}
|
||||
ES03_IP: ${ES03_IP}
|
||||
LISTENER_IP: ${LISTENER_IP}
|
||||
OPS_COMMAND: verify
|
||||
command:
|
||||
- |
|
||||
sed 's/\r$$//' /scripts/cluster.sh | sh -s "$${OPS_COMMAND:-verify}"
|
||||
volumes:
|
||||
- ./scripts/cluster.sh:/scripts/cluster.sh:ro
|
||||
networks:
|
||||
- backend
|
||||
|
||||
networks:
|
||||
backend:
|
||||
name: nebula-stack-net
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: ${DOCKER_SUBNET}
|
||||
|
||||
volumes:
|
||||
es_certs:
|
||||
esdata01:
|
||||
esdata02:
|
||||
esdata03:
|
||||
meta0:
|
||||
meta1:
|
||||
meta2:
|
||||
storage0:
|
||||
storage1:
|
||||
storage2:
|
||||
listener0:
|
||||
Reference in New Issue
Block a user