docker實現swarm+compose部署服務

Docker技術swarm+compose部署服務node

1、實驗環境linux

選擇三臺主機運行swarm,依次爲:nginx

Node1:manager    192.168.111.10docker

Node2:manager    192.168.111.11vim

Node3        192.168.111.12centos

1、基本環境配置tomcat

  3臺保持一致時間 ntp服務器

  3臺關閉selinux,開啓路由轉發網絡

wKiom1nYG02j3CLCAAAYctO4HAE621.png

wKiom1nYG1jS0N7YAAAg9jyO9aI176.png

  3臺主機根據上面環境修改主機名和IP地址ssh

2、配置host

node1爲例

#vim  /etc/hosts

wKioL1nYGxaTuy3KAAAchHb-qZo640.png

33臺開啓宿主機的端口

wKioL1nYGyGRuYwsAAB1QJrWlaQ917.png

4配置全部節點的密鑰登陸

配置如下節點密鑰互信,在node1上免密鑰登陸各節點,只在node1上執行生成sshkey

wKiom1nYG3nTa0wZAABFZipxUTQ785.png

node1發佈sshkey到各個節點

#ssh-copy-id  node1

#ssh-copy-id  node2

#ssh-copy-id  node3

測試密鑰登陸

wKioL1nYGzbBg5ixAAAR8jaOChM099.png

5、在全部主機上安裝docker最新版本(才能支持compose的版本3

下載docker

#curl  -fsSL   https://get.docker.com/ | sh

啓動docker

wKiom1nYHCvybLazAAAhLc0eMjs559.png

查看docker版本

wKiom1nYHDnjO9BKAAANm5CNuNs887.png

docker  swarm 簡介:

Docker  engine1.12集成了swarm集羣工具

三個命令行工具建立一個swarm集羣

Docker  swarm:開啓swarm模式;加入swarm集羣;配置集羣參數

Docker  node查詢集羣節點信息;提高/移除一個管理節點;管理swarm節點主機。

Docker service建立管理service

可查看docker  --help

6、建立docker swarm集羣

node1上初始化docker  swarm

wKioL1nYG_nS-2Q2AABpxDXo7Dk529.png

node2已加入work

wKioL1nYHAagl1y5AAA9t2rdevU701.png

node3已加入

wKiom1nYHGDy-ykCAAAiUPJn1lw154.png

#docker  node  ls    查看節點個數

wKiom1nYHHGSgdXyAAA0m8w9XIk957.png

爲了使swarm集羣實現高可用,避免出現單點故障,咱們但願創建多個manager集羣 ,經過Docker  node  promote  節點名,

node1上使node2work模式提高到manager

wKioL1nYHDLhlS5PAAANoZyIlec074.png

wKiom1nYHJLBQ0NYAAAqmLrqzfc611.png-wh_50

7node1上製做私有倉庫

#docker  pull  registry:2    下載私有倉庫鏡像

#docker  p_w_picpaths

wKioL1nYHGSSZXwgAAAUIth4v54017.png

注意:默認狀況下,registry2 會將倉庫存放於容器的/var/lib/registry 目錄下,這樣若是容器被刪除,
則存放於容器中的鏡像也會丟失,因此咱們通常狀況下會指定本地一個目錄掛載到容器的
/var/lib/registry 下,兩個目錄下都有!
·registry 的默認存儲路徑是/var/lib/registry,只是個臨時目錄,一段時間以後就會消失
·因此使用-v 參數,指定個本地持久的路徑 

wKioL1nYHHTDmv7SAABF2XwJUxg573.png

wKiom1nYHM2R6WEIAAANuyjkpNE090.png

返回{"repositories":[]} 說明 registry 服務工做正常.
注: 鏡像信息存放在/var/lib/registry 目錄下,所以這裏將宿主機目錄映射到/var/lib/registry 

3都指向 registry 服務器

修改/usr/lib/systemd/system/docker.service,修改後保存退出 

#vim  /usr/lib/systemd/system/docker.service

wKioL1nYHO6D3PakAAARtQXZ-aA592.png

#systemctl   daemon-reload          先加載

#systemctl   restart   docker         再重啓docker

經過swarm配合compose實現swarm高可用羣集服務。

8、在node1上安裝compose

networks: compose file V3, 容許咱們經過networks關鍵字定義一個基於 Docker0 網絡的 subnet。而後將咱們的服務添加到這個subnet中。這樣作的好處實現了服務之間的隔離,一旦咱們不須要這組服務了,咱們能夠經過命令「docker-compose down

安裝docker-compose

wKiom1nYHU2RdtLuAAB62fYaGoQ575.png

只需在node1主機安裝docker-compose

#pip  install   docker-compose                  安裝compose

#ln  -s   /usr/bin/docker-compose  /usr/local/bin/   作軟鏈接

#docker-compose   -v    查看compose版本

wKioL1nYHQ7iBW1MAAANwLRrHsM077.png

9node2上配置各服務鏡像

基礎鏡像:

192.168.111.10:5000/centos:centos7

nginx服務鏡像:

wKiom1nYHXaTcjCsAAAbIGdXhmU828.png

dockerfile:

wKioL1nYHTrjfzx8AABBvVKtJYA249.png

nginx.conf

wKiom1nYHaWBGUOWAABarhWna0Y814.png

192.168.111.10:5000/centos:nginx33

Tomcat1配置

服務鏡像:

wKioL1nYHXGwNaVEAAA0NI41P44042.png

Dockerfile

wKiom1nYHdTSAXvQAABwPAhVk-0027.png

Tomcat主配置文件server.xml

wKioL1nYHZOB4MelAABCbIiK1uk073.png

編輯首頁文件index.jsp

docker compose+swarm www.tomcat111.com

注意Tomcat2配置和tomcat1相似只需改動tomcat1的index.jsp

docker compose+swarm www.tomcat222.com

192.168.111.10:5000/centos:tomcat01

192.168.111.10:5000/centos:tomcat02

Tomcat配置完畢

wKiom1nYJwvi6YmrAAANgm7Rnms621.png

wKiom1nYJxmAJZn3AAAOXikowPU987.png

10、在node1編輯compose文件

#mkdir  /docker-compose

#vim   docker-compose.yml

wKiom1nYJybDBWD_AABsjNVqFlA425.png

注意:在建立網絡的時候會生成一個默認網絡

運行docker stack deploy結合swarm實現多服務管理

Docker stack 命令是docker-compose下的

#docker  stack  deploy  自定義名字   --compose-file=***.yml

wKioL1nYJuSyZprlAAAfpg95z4g258.png

#docker  service  ls

wKioL1nYJwjSnyxDAAA0WPwKpMo935.png

#docker   network  ls    查看網絡

wKioL1nYJxfTXxunAAA9e_PAN0g763.png

#docker   ps  -a  

wKiom1nYJ3WhU0McAAA-HHGjAcc288.png

node2

#docker  service  ls

wKioL1nYJ6DDZyzNAAAyvaF2rjQ508.png

#docker  network  ls

wKioL1nYJ6-RzxALAAA7w-xfw2s111.png

#docker  ps  -a

wKiom1nYKAqyrpO4AAAvdR9mYIc266.png

node3

#docker network ls   

wKioL1nYJ8fDVJK9AAA1OUBDTt0484.png

#docker  ps  -a

wKiom1nYKCCBOkikAAAt03un7oI653.png

客戶端驗證:http://192.168.111.10

wKioL1nYJ9-yU_7lAAB9bGDIOzc799.png

wKiom1nYKDnxQLoKAACEux9aTwI391.png

相關文章
相關標籤/搜索