docker-swarm集群下创建elasticsearch集群以及CI/CD

如果单独使用docker跑es,所在宿主机(虚拟机)挂了,es就不能使用了,下面介绍下如何在docker-swarm集群下创建es集群,集群机器任一一台挂了都不会影响es的使用,这才是我们要的高可用架构
1:swarm集群创建之前已经说了,这里就不提了
所有集群服务器都要执行
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
接下来在swarm集群下创建es集群:
docker pull elasticsearch:5.6-alpine
然后把镜像打tag,推到我们自己的镜像仓库,作为基础镜像
2:把CI/CD所需要的文件全部放在git仓库:
docker-swarm集群下创建elasticsearch集群以及CI/CD
看下我们的Dockerfile:
docker-swarm集群下创建elasticsearch集群以及CI/CD
看下es各个配置
docker-swarm集群下创建elasticsearch集群以及CI/CD
docker-swarm集群下创建elasticsearch集群以及CI/CD
3:jenkins上部署发布:创建自由风格的job
docker-swarm集群下创建elasticsearch集群以及CI/CD
docker-swarm集群下创建elasticsearch集群以及CI/CD
docker-swarm集群下创建elasticsearch集群以及CI/CD
由于我jenkins所在集群和es一样,所以后面直接做了更新对应服务,如果你的不在一个集群下,需要远程过去执行更新
注释:第一次由于没有服务所以不能直接更新服务,我们在集群下创建服务即可:(先jenkins构建第一个镜像),jenkins的job名称既是git上配置文件的名称,又是swarm下服务的名称
docker service create --name test_es --network cdel --endpoint-mode=dnsrr --update-failure-action rollback harbor.XXX.com/swarm/test_es:1
这里有个重点哦:–endpoint-mode=dnsrr不能使用swarm默认的vip,要不然es集群起不来
其他4个服务同理,全部发布后,你从docker下就可以看到集群状态了
docker-swarm集群下创建elasticsearch集群以及CI/CD
默认es镜像没有curl,我是从集群下其他docker容器里面看的
docker-swarm集群下创建elasticsearch集群以及CI/CD
docker-swarm集群下创建elasticsearch集群以及CI/CD
这个时候集群下跑个tengine就可以代理出去提供服务了,希望对大家有帮助
欢迎留言