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

版权声明:未经许可不得转载 https://blog.csdn.net/qq_35299863/article/details/83624300

如果单独使用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
先用Dockerfile把时区改下:
FROM elasticsearch:5.6-alpine
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo ‘Asia/Shanghai’ >/etc/timezone
重新built,然后镜像打tag,推到我们自己的镜像仓库,作为基础镜像
2:把CI/CD所需要的文件全部放在git仓库:
在这里插入图片描述
看下我们的Dockerfile:
在这里插入图片描述
看下es各个配置
在这里插入图片描述
在这里插入图片描述
3:jenkins上部署发布:创建自由风格的job
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于我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下就可以看到集群状态了
在这里插入图片描述
默认es镜像没有curl,我是从集群下其他docker容器里面看的
在这里插入图片描述
在这里插入图片描述
这个时候集群下跑个tengine就可以代理出去提供服务了,关于tengine前面已经说过了。下篇介绍tengine代理elasticsearch集群,以及kibana实现CI/CD
欢迎留言
下篇:https://blog.csdn.net/qq_35299863/article/details/83658048

猜你喜欢

转载自blog.csdn.net/qq_35299863/article/details/83624300
今日推荐