溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

搭建Swarm群集

發(fā)布時(shí)間:2020-08-03 07:01:28 來(lái)源:網(wǎng)絡(luò) 閱讀:404 作者:居思涵 欄目:云計(jì)算

一、Swarm簡(jiǎn)介

Swarm項(xiàng)目,通過(guò)把多個(gè)Docker Engine聚集在一起,形成一個(gè)打的docker-engine,對(duì)外提供容器的群集服務(wù)。同時(shí),這個(gè)群集對(duì)外提供Swarm API,用戶(hù)可以像使用Docker Engine一樣使用Docker群集。
Swarm是個(gè)一套較為簡(jiǎn)單的工具,用以管理Docker群集,使得Docker群集暴露給用戶(hù)時(shí)相當(dāng)于一個(gè)虛擬的整體。Swarm使用標(biāo)準(zhǔn)的Docker API接口作為其前端訪(fǎng)問(wèn)入口,換言之,各種形式的Docker Client(dockerclient in go,docker_py,docker等)均可以直接與Swarm通信,Swarm幾乎全部用Go語(yǔ)言來(lái)完成開(kāi)發(fā)的。
搭建Swarm群集

二、Swarm工作原理

1、Swarm
群集的管理和編排是使用嵌入到Docker引擎的SwarmKit,可以在Docker初始化時(shí)啟動(dòng)Swarm模式或者加入已存在的Swarm
2、Node
一個(gè)節(jié)點(diǎn)(node)是已加入到swarm的Docker引擎的實(shí)列當(dāng)部署應(yīng)用到集群,你將會(huì)提交服務(wù)定義到管理節(jié)點(diǎn),接著Manager管理節(jié)點(diǎn)調(diào)度任務(wù)到worker節(jié)點(diǎn),manager節(jié)點(diǎn)還執(zhí)行維護(hù)集群的狀態(tài)的編排和群集管理功能,work節(jié)點(diǎn)接收并執(zhí)行來(lái)自manager節(jié)點(diǎn)的任務(wù)。通常,manager節(jié)點(diǎn)也可以是worker節(jié)點(diǎn),work節(jié)點(diǎn)會(huì)報(bào)告當(dāng)前狀態(tài)給manager節(jié)點(diǎn)。
3、服務(wù)(Service)
服務(wù)是要在work節(jié)點(diǎn)上要執(zhí)行任務(wù)的定義,它在工作這節(jié)點(diǎn)上執(zhí)行,當(dāng)創(chuàng)建服務(wù)的時(shí),需要指定容器鏡像。
4、任務(wù)(Task)
任務(wù)是在docker容器中執(zhí)行的命令,manager節(jié)點(diǎn)根據(jù)指定數(shù)量的任務(wù)副本分配任務(wù)給work節(jié)點(diǎn)。

三、Swarm各個(gè)模塊的功能

docker swarm:集群管理,子命令由init,join,leave,updata。(docker swarm -help查看幫助)
docker service:服務(wù)創(chuàng)建,子命令由create,inspect,update,remove,tasks。(docker service -help查看幫助)
node是加入到swarm集群中的一個(gè)docker引擎實(shí)體,可以在一臺(tái)物理機(jī)上運(yùn)行多個(gè)node,node分為:
1)Manager node(管理節(jié)點(diǎn)):執(zhí)行集群的管理功能,維護(hù)集群的狀態(tài),選覺(jué)一個(gè)leader節(jié)點(diǎn)去執(zhí)行調(diào)度任務(wù)。
2)Work node(工作節(jié)點(diǎn)):接收和執(zhí)行任務(wù),參與容器集群負(fù)載調(diào)度,僅用于承載task。
service服務(wù):一個(gè)服務(wù)是工作節(jié)點(diǎn)上執(zhí)行任務(wù)的定義。創(chuàng)建一個(gè)服務(wù),制定了容器所使用的鏡像和容器運(yùn)行的命令。
task任務(wù):一個(gè)任務(wù) 包含了一個(gè)容器及其運(yùn)行的命令。task是service的執(zhí)行實(shí)體,task啟動(dòng)docker容器并在容器中執(zhí)行任務(wù)。

四、swarm部署

1、系統(tǒng)環(huán)境
兩臺(tái)centos 7分別對(duì)應(yīng)swarm01和swarm02
swarm01:192.168.80.100
swarm02:192.168.80.110
2、修改主機(jī)名

hostnamectl set-hostname swarm01
hostnamectl set-hostname swarm02
vi /etc/hosts   //分別修改hosts文件

192.168.80.100 swarm01
192.168.80.110 swarm02
3、安裝docker(每臺(tái)都要裝)
vi /etc/yum.repos.d/CentOS-Base.repo
末行添加docker的yum源
[docker-repo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
yum install -y docker-engine
4、更改docker的鏡像源

mkdir /etc/docker
vi /etc/docker/daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
systemctl daemon-reload //重載配置文件
5、修改docker監(jiān)聽(tīng)端口
Swarm是通過(guò)監(jiān)聽(tīng)2375端口進(jìn)行通信的,所以在使用Swarm進(jìn)行集群管理之前,需要設(shè)置一下2375端口的監(jiān)聽(tīng)。所有主機(jī)節(jié)點(diǎn)docker開(kāi)啟2375監(jiān)聽(tīng),docker版本不同,配置方式不一樣。
vi /lib/systemd/system/docker.service
在ExecStart加入:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
搭建Swarm群集

systemctl start docker  //啟動(dòng)docker
netstat -anput | grep 2375  //查看監(jiān)聽(tīng)端口

搭建Swarm群集
6、swarm安裝(兩臺(tái)分別安裝)

docker pull swarm       //從docker倉(cāng)庫(kù)拉取swarm
docker images 查看是否下載成功

搭建Swarm群集
docker swarm init --advertise-addr 192.168.80.100 //初始化Swarm
--advertis-addr:swarm中的work節(jié)點(diǎn)使用此IP地址與manager聯(lián)系
搭建Swarm群集
上面命令執(zhí)行后,該機(jī)器自動(dòng)加入到swarm集群。這個(gè)會(huì)創(chuàng)建一個(gè)集群token,獲取全球唯一的token,作為集群唯一標(biāo)識(shí)。后續(xù)將其他節(jié)點(diǎn)加入集群都會(huì)用到這個(gè)token值。
docker node ls //查看節(jié)點(diǎn),只有本機(jī)加入swarm集群
搭建Swarm群集
7、添加集群節(jié)點(diǎn)
在swaram02機(jī)器上執(zhí)行以下命令

docker swarm join \
    --token SWMTKN-1-0mp5blsez01rkhdngyx7qnwapwfaugexq0llasg5t4mlr0rpdj-2i3qqd7ejsl73ga5fqncmeroe \
    192.168.80.100:2377

搭建Swarm群集
docker node list //在swarm01上查看
搭建Swarm群集
8、升級(jí)或降級(jí)節(jié)點(diǎn)(只能在主節(jié)點(diǎn)上)

docker node promote swarm02 //將swarm02升級(jí)為主節(jié)點(diǎn)
docker node demote swarm01  //將swarm02降級(jí)為工作節(jié)點(diǎn)
docker node list    //在swarm02上查看

搭建Swarm群集
9、創(chuàng)建swarm集群網(wǎng)絡(luò)(swarm02上)

docker network create --driver overlay skynet
docker network ls  //查看網(wǎng)絡(luò)

搭建Swarm群集
10、swarm部署http(在主節(jié)點(diǎn)swarm02上)
docker service create -p 80:80 --name webserver --replicas 4 httpd
--name:服務(wù)名稱(chēng)
--replicas:服務(wù)副本集個(gè)數(shù)
-p:端口映射
docker service ls //查看服務(wù)列表
搭建Swarm群集
docker service ps webserver | grep Running //查看具體服務(wù)開(kāi)啟情況
搭建Swarm群集
web分別訪(fǎng)問(wèn)192.168.80.100和192.168.80.110
搭建Swarm群集
搭建Swarm群集
注意:swarm02上并沒(méi)有部署httpd但是可以訪(fǎng)問(wèn)網(wǎng)頁(yè),說(shuō)明swarm01節(jié)點(diǎn)接收了主節(jié)點(diǎn)的任務(wù)部署。
11、swarm圖像化管理(swar02上)

docker pull portainer/portainer //拉取圖像化管理鏡像
docker run -d -p 9000:9000 --restart=always --name prtainer-test portainer/portainer    //啟動(dòng)鏡像

Web瀏覽器訪(fǎng)問(wèn)192.168.80.110:9000
搭建Swarm群集
搭建Swarm群集
搭建Swarm群集
搭建Swarm群集
搭建Swarm群集

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI