Centos7中搭建docker-elasticsearch集群服务和管理

采用Swarm集群模式部署elasticsearch master node 和 data node的记录

创建docker_gwbridge网络配置,注意避免subnet和节点主机网络冲突,所有节点都需要执行

1
2
3
4
5
6
docker network create \
--subnet 10.11.0.0/16 \
--opt com.docker.network.bridge.name=docker_gwbridge \
--opt com.docker.network.bridge.enable_icc=false \
--opt com.docker.network.bridge.enable_ip_masquerade=true \
docker_gwbridge

创建es专用的overlay集群网络

1
docker network create --driver overlay --subnet 10.10.0.3/16 es_net

创建manager节点

1
docker swarm init

工作节点加入到集群

1
docker swarm join ******

查看所有节点

1
docker node ls

启用portainer服务

1
2
3
4
5
6
7
8
9
10
11
12
docker volume create portainer_data

docker service create \
--name portainer \
--publish 9001:9000 \
--replicas=1 \
--network=ingress \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=volume,src=portainer_data,dst=/data \
portainer/portainer \
-H unix:///var/run/docker.sock

修改所有节点宿主机内存配置

1
sudo sysctl -w vm.max_map_count=262144

创建永久挂载目录先,切记得需要在所有node上都创建好,否则会报错

1
2
mkdir /pintu_search/data
chmod -R 777 /pintu_search/data

启用服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker service create \
--name elasticsearch \
--publish 9200:9200 \
--publish 9300:9300 \
--network=ingress \
--mode global \
--mount type=bind,src="/pintu_search/data",dst="/usr/share/elasticsearch/data" \
--env SERVICE_NAME=elasticsearch \
--env node.master=true \
--env node.data=true \
--env "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
--env bootstrap.memory_lock=true \
--env "--ulimits nofile=65536:65536" \
--env "--ulimits memlock=-1:-1" \
--env discovery.zen.minimum_master_nodes=1 \
--env path.data=/usr/share/elasticsearch/data \
docker.elastic.co/elasticsearch/elasticsearch:6.2.4

启动kibana服务

1
2
3
4
5
6
7
docker service create \
--name kibana \
--publish 5601:5601 \
--network=es_net \
--replicas 1 \
--env ELASTICSEARCH_URL=http://172.16.19.206:9200 \
docker.elastic.co/kibana/kibana:6.2.4

修改x-pack密码

1
./bin/x-pack/setup-passwords interactive