mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-28 17:34:17 -04:00
If xpack.ml.use_auto_machine_memory_percent is not explicitly set to true then the default value (false) means ML will only use 30% of the available memory making it impractical to run the ELSER model. This is useful for users wanting to get started with semantic search.The single node docker instructions have been updated with a command that gives the container enough memory to run the ELSER model and enables xpack.ml.use_auto_machine_memory_percent. For the multi-node guide the docker compose file is updated to enable the ml setting for every node in the cluster.
232 lines
8 KiB
YAML
232 lines
8 KiB
YAML
version: "2.2"
|
|
|
|
services:
|
|
setup:
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
|
|
volumes:
|
|
- certs:/usr/share/elasticsearch/config/certs
|
|
user: "0"
|
|
command: >
|
|
bash -c '
|
|
if [ x${ELASTIC_PASSWORD} == x ]; then
|
|
echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
|
|
exit 1;
|
|
elif [ x${KIBANA_PASSWORD} == x ]; then
|
|
echo "Set the KIBANA_PASSWORD environment variable in the .env file";
|
|
exit 1;
|
|
fi;
|
|
if [ ! -f config/certs/ca.zip ]; then
|
|
echo "Creating CA";
|
|
bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
|
|
unzip config/certs/ca.zip -d config/certs;
|
|
fi;
|
|
if [ ! -f config/certs/certs.zip ]; then
|
|
echo "Creating certs";
|
|
echo -ne \
|
|
"instances:\n"\
|
|
" - name: es01\n"\
|
|
" dns:\n"\
|
|
" - es01\n"\
|
|
" - localhost\n"\
|
|
" ip:\n"\
|
|
" - 127.0.0.1\n"\
|
|
" - name: es02\n"\
|
|
" dns:\n"\
|
|
" - es02\n"\
|
|
" - localhost\n"\
|
|
" ip:\n"\
|
|
" - 127.0.0.1\n"\
|
|
" - name: es03\n"\
|
|
" dns:\n"\
|
|
" - es03\n"\
|
|
" - localhost\n"\
|
|
" ip:\n"\
|
|
" - 127.0.0.1\n"\
|
|
> config/certs/instances.yml;
|
|
bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
|
|
unzip config/certs/certs.zip -d config/certs;
|
|
fi;
|
|
echo "Setting file permissions"
|
|
chown -R root:root config/certs;
|
|
find . -type d -exec chmod 750 \{\} \;;
|
|
find . -type f -exec chmod 640 \{\} \;;
|
|
echo "Waiting for Elasticsearch availability";
|
|
until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
|
|
echo "Setting kibana_system password";
|
|
until curl -s -X POST --cacert config/certs/ca/ca.crt -u "elastic:${ELASTIC_PASSWORD}" -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done;
|
|
echo "All done!";
|
|
'
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"]
|
|
interval: 1s
|
|
timeout: 5s
|
|
retries: 120
|
|
|
|
es01:
|
|
depends_on:
|
|
setup:
|
|
condition: service_healthy
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
|
|
volumes:
|
|
- certs:/usr/share/elasticsearch/config/certs
|
|
- esdata01:/usr/share/elasticsearch/data
|
|
ports:
|
|
- ${ES_PORT}:9200
|
|
environment:
|
|
- node.name=es01
|
|
- cluster.name=${CLUSTER_NAME}
|
|
- cluster.initial_master_nodes=es01,es02,es03
|
|
- discovery.seed_hosts=es02,es03
|
|
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
|
|
- bootstrap.memory_lock=true
|
|
- xpack.security.enabled=true
|
|
- xpack.security.http.ssl.enabled=true
|
|
- xpack.security.http.ssl.key=certs/es01/es01.key
|
|
- xpack.security.http.ssl.certificate=certs/es01/es01.crt
|
|
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
|
|
- xpack.security.transport.ssl.enabled=true
|
|
- xpack.security.transport.ssl.key=certs/es01/es01.key
|
|
- xpack.security.transport.ssl.certificate=certs/es01/es01.crt
|
|
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
|
|
- xpack.security.transport.ssl.verification_mode=certificate
|
|
- xpack.license.self_generated.type=${LICENSE}
|
|
- xpack.ml.use_auto_machine_memory_percent=true
|
|
mem_limit: ${MEM_LIMIT}
|
|
ulimits:
|
|
memlock:
|
|
soft: -1
|
|
hard: -1
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 120
|
|
|
|
es02:
|
|
depends_on:
|
|
- es01
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
|
|
volumes:
|
|
- certs:/usr/share/elasticsearch/config/certs
|
|
- esdata02:/usr/share/elasticsearch/data
|
|
environment:
|
|
- node.name=es02
|
|
- cluster.name=${CLUSTER_NAME}
|
|
- cluster.initial_master_nodes=es01,es02,es03
|
|
- discovery.seed_hosts=es01,es03
|
|
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
|
|
- bootstrap.memory_lock=true
|
|
- xpack.security.enabled=true
|
|
- xpack.security.http.ssl.enabled=true
|
|
- xpack.security.http.ssl.key=certs/es02/es02.key
|
|
- xpack.security.http.ssl.certificate=certs/es02/es02.crt
|
|
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
|
|
- xpack.security.transport.ssl.enabled=true
|
|
- xpack.security.transport.ssl.key=certs/es02/es02.key
|
|
- xpack.security.transport.ssl.certificate=certs/es02/es02.crt
|
|
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
|
|
- xpack.security.transport.ssl.verification_mode=certificate
|
|
- xpack.license.self_generated.type=${LICENSE}
|
|
- xpack.ml.use_auto_machine_memory_percent=true
|
|
mem_limit: ${MEM_LIMIT}
|
|
ulimits:
|
|
memlock:
|
|
soft: -1
|
|
hard: -1
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 120
|
|
|
|
es03:
|
|
depends_on:
|
|
- es02
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
|
|
volumes:
|
|
- certs:/usr/share/elasticsearch/config/certs
|
|
- esdata03:/usr/share/elasticsearch/data
|
|
environment:
|
|
- node.name=es03
|
|
- cluster.name=${CLUSTER_NAME}
|
|
- cluster.initial_master_nodes=es01,es02,es03
|
|
- discovery.seed_hosts=es01,es02
|
|
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
|
|
- bootstrap.memory_lock=true
|
|
- xpack.security.enabled=true
|
|
- xpack.security.http.ssl.enabled=true
|
|
- xpack.security.http.ssl.key=certs/es03/es03.key
|
|
- xpack.security.http.ssl.certificate=certs/es03/es03.crt
|
|
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
|
|
- xpack.security.transport.ssl.enabled=true
|
|
- xpack.security.transport.ssl.key=certs/es03/es03.key
|
|
- xpack.security.transport.ssl.certificate=certs/es03/es03.crt
|
|
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
|
|
- xpack.security.transport.ssl.verification_mode=certificate
|
|
- xpack.license.self_generated.type=${LICENSE}
|
|
- xpack.ml.use_auto_machine_memory_percent=true
|
|
mem_limit: ${MEM_LIMIT}
|
|
ulimits:
|
|
memlock:
|
|
soft: -1
|
|
hard: -1
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 120
|
|
|
|
kibana:
|
|
depends_on:
|
|
es01:
|
|
condition: service_healthy
|
|
es02:
|
|
condition: service_healthy
|
|
es03:
|
|
condition: service_healthy
|
|
image: docker.elastic.co/kibana/kibana:${STACK_VERSION}
|
|
volumes:
|
|
- certs:/usr/share/kibana/config/certs
|
|
- kibanadata:/usr/share/kibana/data
|
|
ports:
|
|
- ${KIBANA_PORT}:5601
|
|
environment:
|
|
- SERVERNAME=kibana
|
|
- ELASTICSEARCH_HOSTS=https://es01:9200
|
|
- ELASTICSEARCH_USERNAME=kibana_system
|
|
- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
|
|
- ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
|
|
mem_limit: ${MEM_LIMIT}
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 120
|
|
|
|
volumes:
|
|
certs:
|
|
driver: local
|
|
esdata01:
|
|
driver: local
|
|
esdata02:
|
|
driver: local
|
|
esdata03:
|
|
driver: local
|
|
kibanadata:
|
|
driver: local
|