docker swarm的应用----docker集群的构建
一、docker安裝
這里我們安裝docker-ce 的18.03版本
yum??? -y remove docker? 刪除原有版本
#安裝依賴包
[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
#添加docker的CE版本的yum源配置文件
[root@Docker ~]# curl?? https://download.docker.com/linux/centos/docker-ce.repo??? -o????? /etc/yum.repos.d/docker-ce.repo
安裝CE版本的docker
#yum -y install docker-ce
#啟動docker
# systemctl start docker
# systemctl enable docker?? #添加開機(jī)啟動
# docker version #查看docker版本
二、鏡像操作
我們查看鏡像公有倉庫中的鏡像,
docker? search? --filter-stars=50? tomcat??? #查看鏡像倉庫中星級在50 以上的tomcat鏡像
因為本項目,要用到tomcat鏡像,我們下載鏡像
docker? pull?? tomcat?? #tomcat? 為鏡像地址及倉庫和標(biāo)簽
下載后查看一下,docker?? images
三、創(chuàng)建容器集群
docker-swarm是基于docker平臺實現(xiàn)的集群技術(shù),他可以通過幾條簡單的指令快速的創(chuàng)建一個docker集群,接著在集群的共享網(wǎng)絡(luò)上部署應(yīng)用,最終實現(xiàn)分布式的服務(wù)。相比起zookeeper等集群管理框架來說,swarm顯得十分輕量,作為一個工具,它把節(jié)點的加入、管理、發(fā)現(xiàn)等復(fù)雜的操作都濃縮為幾句簡單的命令,并且具有自動發(fā)現(xiàn)節(jié)點和調(diào)度的算法,還支持自定制。使用 Swarm 操作集群,會使用戶感覺就像是在一臺主機(jī)上進(jìn)行操作。SwarmKit 將節(jié)點分為兩類:
工作節(jié)點(Worker ):負(fù)責(zé)通過執(zhí)行容器運行任務(wù)。SwarmKit 的默認(rèn)執(zhí)行器為 Docker 容器執(zhí)行器(Docker Container Executor)。
(1)內(nèi)建分布式存儲,不要額外的數(shù)據(jù)庫
(2)支持 Rolling update
(3 容器高可用
(4)通過 TLS 保證了節(jié)點之間通訊的安全
管理節(jié)點(Manager ):負(fù)責(zé)接收和響應(yīng)用戶請求,將集群狀態(tài)調(diào)節(jié)到最終狀態(tài)。在 SwarmKit
中,用戶可以動態(tài)調(diào)整節(jié)點的角色,即在 Manager 和 Worker 之間轉(zhuǎn)換。
實驗環(huán)境:
這里選擇三臺主機(jī)運行 Swarm,依次為:
node1 192.168.1.23
node2 192.168.1.27
node3 192.168.1.28
基本環(huán)境配置
3 臺主機(jī)確保時間一致 ntp
3 臺主機(jī)均關(guān)閉 selinux,開啟路由轉(zhuǎn)發(fā)。
3 臺主機(jī)根據(jù)上面的實驗環(huán)境描述修改主機(jī)名和 ip 地址
系統(tǒng)環(huán)境準(zhǔn)備
準(zhǔn)備系統(tǒng)環(huán)境, 配置 host 列表
3 臺主機(jī)均修改/etc/hosts 文件,添加所有主機(jī)的 ip 地址和主機(jī)名的映射記錄
以?master 為例子,其他節(jié)點同
vim? /etc/hosts
192.168.1.23? master
192.168.1.27? slave1
192.168.1.28? slave2
主要使用三個新的命令行工具創(chuàng)建一個 swarm 集群:
docker swarm 開啟 swarm 模式; 加入 Swarm 集群; 配置集群參數(shù)
docker node 查詢集群節(jié)點信息; 提升/移除一個管理節(jié)點; 管理 swarm 節(jié)點主機(jī)
docker service 創(chuàng)建管理 service
在?master 上初始化 swram 集群:
注意:你只需要在一個 master 上初始化 swarm 集群,其他 node 加入這個集群就行了, 所以運行.docker?? swarm? init? --advertise-addr? 192.168.1.23:2377
根據(jù)命令的提示:
以manager服務(wù)器角色加入 swarm 集群需要運行如下命令:
先docker? swarm join-token? manager? 獲取manager的token,再執(zhí)行以下命令:
docker swarm? join 加入到 master創(chuàng)建的集群
我們以其他節(jié)點服務(wù)器,以 worker 角色加入 swarm 集群需要運行如下命令:
先docker? swarm join-token? worker? 獲取worker的token,再執(zhí)行以下命令:
docker swarm? join 加入到 master創(chuàng)建的集群
查看 swarm 集群 node 列表
我們一共要加入兩臺,然后我們再看節(jié)點情況
docker?? node? ls
一共是三個,一個master, 兩個從節(jié)點
集群創(chuàng)建完畢
四、在 swarm 集群上運行 docker 應(yīng)用
概念解釋:service
Docker swarm 引入了服務(wù)的概念,一個服務(wù)由多個任務(wù)組成,一個任務(wù)即一個運行的容器。
下面我們可以使用之前 pull的 tomcat 鏡像啟動服務(wù),
docker service create --replicas 2 --name judge_swarm -p 8080:8080 --network=swarm_test?? tomcat
docker service create 命令創(chuàng)建一個 service.
--name 標(biāo)簽命名 service 為 judge_swarm
--replicas 標(biāo)簽來聲明?2 個運行實體(即容器副本數(shù))
?使用 docker service ls 查看服務(wù)
?我們到各個節(jié)點上去看,docker? ps -a
可以看到
?每個節(jié)點上啟動了一個容器實例,我們更改容器內(nèi) tomcat 服務(wù)的主頁
docker? exec? -it? 21b?? /bin/bash
docker?cp? ? index.jsp?? 21b:/usr/local/tomcat/webapps/web
docker? cp? server.xml?? 21b:/usr/local/tomcat/conf/
讓每個tomcat容器實例顯示不同的網(wǎng)頁,在瀏覽器上輸入 http://master? ip:8080/web
?刷新界面可以看到服務(wù)是輪詢顯示頁面的,也就是該集群實現(xiàn)了負(fù)載均衡。
同時,如果負(fù)載過大,我們還可以拓展該服務(wù)上的容器實例,本例拓展為4個,
docker? service? scale?? judge_swarm=4
管理器會根據(jù)節(jié)點情況,在不同節(jié)點另外啟動兩個實例
本案例是在master 上啟動了兩個容器實例
?
?docker?? swarm? 的應(yīng)用,器群部署完畢。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/mushou/p/9508450.html
總結(jié)
以上是生活随笔為你收集整理的docker swarm的应用----docker集群的构建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cad计算机绘图实操视频,cad工程制图
- 下一篇: Linux系统运维之路