镜像:https://www.docker.elastic.co/r/elasticsearch/elasticsearch
with Docker Compose
Is Docker Compose supported for a single node Elasticsearch setup? – Elastic Stack / Elasticsearch
sysctl -w vm.max_map_count=262144
chmod 777 -R ./data/
--- version: '3' services: elasticsearch: container_name: es01 image: docker.elastic.co/elasticsearch/elasticsearch:7.17.22 environment: - 'ES_JAVA_OPTS=-Xms2g -Xmx2g' - 'bootstrap.memory_lock=true' - 'discovery.type=single-node' ports: - 9200:9200 networks: - elastic ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 volumes: - ./data/elasticsearch/:/usr/share/elasticsearch/data/ - /etc/localtime:/etc/localtime kibana: image: docker.elastic.co/kibana/kibana:7.17.22 container_name: kib01 environment: LOGGING_ROOT_LEVEL: error ports: - 5601:5601 networks: - elastic volumes: - ./data/kibana:/usr/share/kibana/data/ - /etc/localtime:/etc/localtime networks: elastic:
注意事项
1)版本不同,集群配置方法不同。例如 Elasticsearch 6.8.6 与 7.6.2 的集群配置方法是不同的。
第一步、服务搭建
跳过服务部署步骤,详细参考 Elasticsearch on CentOS 笔记。
第二步、调整配置
修改每台主机的/etc/elasticsearch/elasticsearch.yml文件,修改以下地方:
# 设置集群的名称 cluster.name: production-elasticsearch-cluster # 设置节点的名称,取当前主机名。 node.name: ${HOSTNAME} # 设置集群节点 discovery.zen.ping.unicast.hosts: ["10.0.0.1", "10.0.0.2", "10.0.0.3"]
第三步、重启服务
重启每台主机的 Elasticsearch 服务。
第四步、查看状态
执行curl -s http://ipaddress:9200/_cluster/state/?pretty | less命令,如果产生类似如下输出,则表示集群正常:
{ "cluster_name" : "elasticsearch-cluster", "cluster_uuid" : "Mq7wyMd9Rw2nMQHhrPB-PA", "version" : 13, "state_uuid" : "ZnWe0IL_TRiH1hgwQSEz-g", "master_node" : "4LLJp6NQTbGJmTcNmkHeSg", "blocks" : { }, "nodes" : { "Gq1ngfj_SlSCtY1gpjZsmg" : { "name" : "esclus-02", "ephemeral_id" : "XFYlGhtMRYy5KOtcZl__5w", "transport_address" : "10.10.50.218:9300", "attributes" : { "ml.machine_memory" : "8203100160", "ml.max_open_jobs" : "20", "xpack.installed" : "true", "ml.enabled" : "true" } }, "4LLJp6NQTbGJmTcNmkHeSg" : { "name" : "esclus-01", "ephemeral_id" : "UQwkjF1kSU2sKwREgDZSOA", "transport_address" : "10.10.50.217:9300", "attributes" : { "ml.machine_memory" : "8203100160", "xpack.installed" : "true", "ml.max_open_jobs" : "20", "ml.enabled" : "true" } }, "Si-Ou_b-QBKuHQvOZ5fz-g" : { "name" : "esclus-03", "ephemeral_id" : "GY1mHaTiRheXSqxZbAKEHQ", "transport_address" : "10.10.50.219:9300", "attributes" : { "ml.machine_memory" : "8203100160", "ml.max_open_jobs" : "20", "xpack.installed" : "true", "ml.enabled" : "true" } } }, ......
参考文献
How To Set Up a Production Elasticsearch Cluster on CentOS 7
Elasticsearch Reference [7.5] » REST APIs » Cluster APIs » Cluster state API