1. 程式人生 > >docker叢集下建立elasticsearch叢集以及CI/CD

docker叢集下建立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
先用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