使用docker快速部署Elasticsearch集群的方法

2020-06-17 06:52:06易采站长站整理

锁定进程的物理内存地址避免交换(swapped)来提高性能

- http.cors.enabled=true

- http.cors.allow-origin=*

开启cors以便使用Head插件

- "ES_JAVA_OPTS=-Xms512m -Xmx512m"

JVM内存大小配置

- "discovery.zen.ping.unicast.hosts=elasticsearch_n0,elasticsearch_n1,elasticsearch_n2"

- "discovery.zen.minimum_master_nodes=2"

由于

5.2.1
后的版本是不支持多播的,所以需要手动指定集群各节点的
tcp
数据交互地址,用于集群的
节点发现
failover
,默认缺省
9300
端口,如设定了其它端口需另行指定,这里我们直接借助容器通信,也可以将各节点的
9300
映射至宿主机,通过网络端口通信。

设定

failover
选取的
quorum = nodes/2 + 1

当然,也可以挂载自己的配置文件,

ES
镜像的配置文件是
/usr/share/elasticsearch/config/elasticsearch.yml
,挂载如下:


volumes:
- path/to/local/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro

docker-compose.yml


version: '3'
services:
elasticsearch_n0:
image: elasticsearch:6.6.2
container_name: elasticsearch_n0
privileged: true
environment:
- cluster.name=elasticsearch-cluster
- node.name=node0
- node.master=true
- node.data=true
- bootstrap.memory_lock=true
- http.cors.enabled=true
- http.cors.allow-origin=*
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch_n0,elasticsearch_n1,elasticsearch_n2"
- "discovery.zen.minimum_master_nodes=2"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./data/node0:/usr/share/elasticsearch/data
- ./logs/node0:/usr/share/elasticsearch/logs
ports:
- 9200:9200
elasticsearch_n1:
image: elasticsearch:6.6.2
container_name: elasticsearch_n1
privileged: true
environment:
- cluster.name=elasticsearch-cluster
- node.name=node1
- node.master=true
- node.data=true
- bootstrap.memory_lock=true
- http.cors.enabled=true
- http.cors.allow-origin=*
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"