Docker搭建ElasticSearch集群
鉴于网上很多ES集群搭建方式十分繁琐且ES版本较低,所以梳理出一套基于Docker的测试环境下的ES集群搭建流程,也不一定说Docker搭建一定就是最好的方法,但是Docker搭建集群一定是最快的方法。来吧,自己动手试一试。
世间方式千万种,今天给大家介绍一种一键启动的ES集群的搭建方式–使用docker-compose
(负责实现对Docker容器集群的快速编排)。废话不多说上干货!
前置操作
创建各个ES节点的文件挂载路径,本文配置路径保持和前文一样,懒得去动了。Docker搭建ES+Head+Kibana,如果你有其他需要请自行了断!
[root@localhost home]# ll
总用量 4
-rw-r--r--. 1 root root 2557 9月 8 20:22 docker-compose.yml
drwx------. 12 xianglei xianglei 202 8月 30 17:18 xianglei
drwxr-xr-x. 5 xianglei root 45 9月 7 21:49 xianglei1
drwx------. 12 xianglei root 202 9月 3 20:15 xianglei2
drwx------. 12 xianglei root 202 9月 3 20:14 xianglei3
[root@localhost home]#
赋予ES节点挂载路径非Root用户权限
chown -R xianglei /文件夹路径
避免不必要的问题,修改vm.max_map_count
# 直接执行
sysctl -w vm.max_map_count=262144
# 在/etc/sysctl.conf文件最后添加一行 永久生效
vm.max_map_count=262144
无脑CV操作
可以直接把我的docker-compose.yml文件拷贝过去,就上面的配置信息的含义,我相信大家用排查法可以自己类比。
version: '3.3'
services:
ESmaster:
image: elasticsearch:7.6.2
container_name: ESmaster
environment:
- =ESmaster
- =EScluster
- discovery.seed_hosts=my_elastcsearch2,my_elastcsearch3
- cluster.initial_master_nodes=ESmaster,my_elastcsearch2,my_elastcsearch3
- bootstrap.memory_lock=true
- http.port=9201
- node.master=true
- node.data=true
- http.cors.allow-origin=*
- http.cors.enabled=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/xianglei1/data/data:/usr/share/elasticsearch/data
- /home/xianglei1/logs:/usr/share/elasticsearch/logs
- /home/xianglei1/plugins:/usr/share/elasticsearch/plugins
ports:
- 9201:9201
networks:
- mynet
my_elastcsearch2:
image: elasticsearch:7.6.2
container_name: my_elastcsearch2
environment:
- =my_elastcsearch2
- =EScluster
- discovery.seed_hosts=ESmaster,my_elastcsearch3
- cluster.initial_master_nodes=ESmaster,my_elastcsearch2,my_elastcsearch3
- bootstrap.memory_lock=true
- http.port=9202
- node.master=true
- node.data=true
- http.cors.allow-origin=*
- http.cors.enabled=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/xianglei2/data/data:/usr/share/elasticsearch/data
- /home/xianglei2/logs:/usr/share/elasticsearch/logs
- /home/xianglei2/plugins:/usr/share/elasticsearch/plugins
ports:
- 9202:9202
networks:
- mynet
my_elastcsearch3:
image: elasticsearch:7.6.2
container_name: my_elastcsearch3
environment:
- =my_elastcsearch3
- =EScluster
- discovery.seed_hosts=ESmaster,my_elastcsearch2
- cluster.initial_master_nodes=ESmaster,my_elastcsearch2,my_elastcsearch3
- bootstrap.memory_lock=true
- http.port=9203
- node.master=true
- node.data=true
- http.cors.allow-origin=*
- http.cors.enabled=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/xianglei3/data/data:/usr/share/elasticsearch/data
- /home/xianglei3/logs:/usr/share/elasticsearch/logs
- /home/xianglei3/plugins:/usr/share/elasticsearch/plugins
ports:
- 9203:9203
networks:
- mynet
networks:
mynet:
driver: bridge
对于这里的Kibana和head容器,大家可以参考前文配置即可Docker搭建ES+Head+Kibana
需要注意的一点:
- 我的集群使用的是一个新的network,具体细节可以查看得知,目前的叫做
home_mynet
,所以你在启动Kibana的时候需要修改配置信息中ES节点地址,以及启动时–net 修改为–net home_mynet
[root@localhost home]# docker network list
NETWORK ID NAME DRIVER SCOPE
58436ed85c2d bridge bridge local
2398670cf8e3 home_mynet bridge local
d1bd2ce47aa8 host host local
692d4bd9fbfd mynetwork bridge local
478f5a96a153 none null local
[root@localhost home]#
执行docker-compose.yml
# 在你自定义写有docker-compose.yml的路径下执行(会打印日志信息)
docker-compose up
# 后台方式启动
docker-compose up -d
查看集群容器启动情况
[root@localhost home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c8255a53173 kibana:7.6.2 "/usr/local/bin/dumb…" 22 minutes ago Up 22 minutes 0.0.0.0:5601->5601/tcp kibana
783c863324f8 elasticsearch:7.6.2 "/usr/local/bin/dock…" 34 minutes ago Up 34 minutes 9200/tcp, 9300/tcp, 0.0.0.0:9202->9202/tcp my_elastcsearch2
ab54ac7515f3 elasticsearch:7.6.2 "/usr/local/bin/dock…" 34 minutes ago Up 34 minutes 9200/tcp, 9300/tcp, 0.0.0.0:9201->9201/tcp ESmaster
180536eda65b elasticsearch:7.6.2 "/usr/local/bin/dock…" 34 minutes ago Up 34 minutes 9200/tcp, 9300/tcp, 0.0.0.0:9203->9203/tcp my_elastcsearch3
3d18a3b987e1 mobz/elasticsearch-head:5 "/bin/sh -c 'grunt s…" 9 days ago Up 33 minutes 0.0.0.0:9100->9100/tcp elasticsearch-head
[root@localhost home]#
查看一下效果
Head
至此ES集群搭建就完成了!
但是我还是需要强调的是目前的环境只适合测试环境学习使用
。严格意义上来讲并不算是个集群,同时生产环境的ES配置信息将会更加复杂。
但是呢,万事开头难!搭建集群这种经历本不应该浪费我们大量的学习时间,对于一个开发者来说如何利用高性能的ES集群去实现业务才是最终的目的。
下期预告:ELK环境搭建