Swarm 是使用 Objective C語(yǔ)言開(kāi)發(fā)的,在早期的版本中編寫(xiě)Swarm的應(yīng)用程序也使Objective C,從Swarm 2.0版開(kāi)始提供了對(duì)Java語(yǔ)言的支持,將來(lái)可能支持JavaScript、C++、Python、Perl等語(yǔ)言。Swarm的最新版本 Swarm 2.1.1可以在不同版本的Unix、Linux、Windows95、Windows98、WindowsNT、Windows2000環(huán)境下運(yùn)行。

社會(huì)經(jīng)濟(jì)系統(tǒng)的仿真,是建立在復(fù)雜適應(yīng)系統(tǒng)(Complex Adaptive System 簡(jiǎn)稱(chēng)CAS)理論研究基礎(chǔ)上的。通過(guò)"相對(duì)簡(jiǎn)單的微觀個(gè)體活動(dòng)可以突現(xiàn)出宏觀層面的復(fù)雜行為",給社會(huì)科學(xué)的研究與實(shí)踐乘上當(dāng)代新技術(shù)的航班打開(kāi)了通路。
Docker 客戶(hù)端通過(guò) Docker API 向 Swarm 管理端發(fā)送請(qǐng)求,Swarm Manager 通過(guò)守護(hù)進(jìn)程調(diào)用集群中的某個(gè)節(jié)點(diǎn)來(lái)執(zhí)行任務(wù)。因?yàn)槿萜鞫际沁\(yùn)行在節(jié)點(diǎn)上,Swarm 作為一個(gè)獨(dú)立的集群管理工具,故并不會(huì)因某些原因?qū)е虏荒苷9ぷ鞫绊懠簝?nèi)所有節(jié)點(diǎn)的正常運(yùn)行。當(dāng)服務(wù)恢復(fù)正常后,Swarm 會(huì)讀取日志來(lái)執(zhí)行集群的恢復(fù)動(dòng)作。架構(gòu)圖如圖 1:
圖 1.Docker Swarm 架構(gòu)圖
從1994年開(kāi)始,桑塔費(fèi)研究所(SFI)開(kāi)展了一個(gè)研究項(xiàng)目,以開(kāi)發(fā)一個(gè)工具集用來(lái)幫助科學(xué)家們分析復(fù)雜適應(yīng)系統(tǒng),這個(gè)模擬工具集就叫做Swarm。1995年,SFI發(fā)布了Swarm的beta版。
用戶(hù)可以使用Swarm提供的類(lèi)庫(kù)構(gòu)建模擬系統(tǒng),使系統(tǒng)中的主體和元素通過(guò)離散事件進(jìn)行交互。由于Swarm沒(méi)有對(duì)模型和模型要素之間的交互作任何約束,Swarm應(yīng)當(dāng)可以模擬任何物理系統(tǒng)或社會(huì)系統(tǒng)。事實(shí)上,在各個(gè)廣泛的研究領(lǐng)域都有人在用Swarm編寫(xiě)程序,這些領(lǐng)域包括生物學(xué)、經(jīng)濟(jì)學(xué)、物理學(xué)、化學(xué)和生態(tài)學(xué)等。
Swarm項(xiàng)目的目的就是通過(guò)科學(xué)家和軟件工程師的合作制造一個(gè)高效率的、可信的、可重用的軟件實(shí)驗(yàn)儀器。它能給予科學(xué)家們一個(gè)標(biāo)準(zhǔn)的軟件工具集,就象提供了一個(gè)設(shè)備精良的軟件實(shí)驗(yàn)室,幫助人們集中精力于研究工作而非制造工具。
Swarm實(shí)際上是一組用Objective-C語(yǔ)言寫(xiě)成的類(lèi)庫(kù),這是一種面向?qū)ο蟮腃語(yǔ)言。一部分圖形界面,如圖表、按鈕和窗口是用TCL/TK描述的。Swarm最初只能在Unix操作系統(tǒng)和X Windows界面下運(yùn)行,1998年四月,伴隨著 1.1版的發(fā)布,Swarm推出了可以在Windows 95/98/NT上運(yùn)行的版本。1999年,Swarm又提供了對(duì)Java的支持,從而使Swarm越來(lái)越有利于非計(jì)算機(jī)專(zhuān)業(yè)的人士使用。
Swarm的負(fù)載非常低。據(jù)我觀察,Swarm進(jìn)行調(diào)度和通信的CPU負(fù)載非常低。因此,Swarm的管理節(jié)點(diǎn)(Manager)可以同時(shí)作為工作節(jié)點(diǎn)(Worker)。如果你需要搭建一個(gè)非常大的集群(1000+ 節(jié)點(diǎn)),管理節(jié)點(diǎn)需要更多資源,但是對(duì)于中小型集群來(lái)說(shuō),管理節(jié)點(diǎn)需要的資源可以忽略不計(jì)。
Swarm集群的網(wǎng)絡(luò)通信(服務(wù)發(fā)現(xiàn),負(fù)載均衡以及容器間通信)非常可靠。當(dāng)你開(kāi)啟一個(gè)服務(wù)的端口之后,在Swarm集群中的任何一個(gè)節(jié)點(diǎn)都可以訪問(wèn)它。負(fù)載均衡也是由Swarm提供的。后文會(huì)提到一些之前遇到的問(wèn)題,但是Docker 1.13之后,這些問(wèn)題都解決了。
| 主機(jī) | IP地址 | 服務(wù) |
|---|---|---|
| docker01 | 192.168.1.11 | swarm+overlay+webUI |
| docker02 | 192.168.1.13 | nginx |
| docker03 | 192.168.1.20 | nginx |
三臺(tái)主機(jī)都關(guān)閉防火墻,禁用selinux,修改主機(jī)名,時(shí)間同步,并添加域名解析。
docker版本必須是:v1.12版本開(kāi)始(可使用docker version查看版本)
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# hostnamectl set-hostname docker03
[root@localhost ~]# su -mv /etc/localtime /etc/localtime.bk
cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime[root@localhost ~]# hostnamectl set-hostname docker01
[root@localhost ~]# su -[root@docker01 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.11 docker01
192.168.1.13 docker02
192.168.1.20 docker03swarm:作用運(yùn)行docker engin的多個(gè)主機(jī)組成的集群
node:每一個(gè)docker engin都是一個(gè)node(節(jié)點(diǎn)),分為manager和worker。
manager node:負(fù)責(zé)執(zhí)行容器的編排和集群的管理工作,保持并維護(hù)swarm處于期望的狀態(tài)。swarm可以有多個(gè)manager node,他們會(huì)自動(dòng)協(xié)調(diào)并選舉一個(gè)leader執(zhí)行編排任務(wù)。但相反,不能沒(méi)有manager node。
worker node:接受并執(zhí)行由manager node派發(fā)的任務(wù),并且默認(rèn)manager node也是一個(gè)worker node,不過(guò)可以將它設(shè)置為manager-only node,讓他只負(fù)責(zé)編排和管理工作。
service:用來(lái)定義worker上執(zhí)行的命令。
docker swarm leave:申請(qǐng)離開(kāi)一個(gè)集群,之后查看節(jié)點(diǎn)狀態(tài)會(huì)變成down,然后可通過(guò)manager node 將其刪除
docker node rm xxx:刪除某個(gè)節(jié)點(diǎn)docker swarm join-token [manager|worker]:生成令牌,可以是manager或worker身份。
docker node demote(降級(jí)):將swarm節(jié)點(diǎn)的為manager降級(jí)為worker
docker node promote(升級(jí)):將swarm節(jié)點(diǎn)的work升級(jí)為manager
docker node ls:查看群集的信息(只可以在manager角色的主機(jī)上查看)
docker service scale web05=6:容器的動(dòng)態(tài)擴(kuò)容及縮容
docker service ps web01: 查看創(chuàng)建的容器運(yùn)行在哪些節(jié)點(diǎn)
docker service ls: 查看創(chuàng)建的服務(wù)
docker swarm leave: 脫離這個(gè)群集
docker node rm docker03: 在manager角色的服務(wù)器上移除docker03
docker node update --availability drain docker01: 設(shè)置主機(jī)docker01以后不運(yùn)行容器,但已經(jīng)運(yùn)行的容器并不會(huì)停止
docker node update --label-add mem=max docker03: 更改docker03主機(jī)的標(biāo)簽為mem=max
docker service update --replicas 8 --image 192.168.20.6:5000/lvjianzhao:v2.0 --container-label-add 'node.labels.mem==max' lvjianzhao05: 將服務(wù)升級(jí)為8個(gè)容器,并且指定在mem=max標(biāo)簽的主機(jī)上運(yùn)行
[root@docker01 ~]# docker swarm init --advertise-addr 192.168.1.11--advertise-addr:指定與其它docker通信的地址。
上邊返回的結(jié)果告訴我們:初始化成功,并且,如果想要添加work節(jié)點(diǎn)運(yùn)行下面的命令:

注意:token令牌只有24小時(shí)的有效期
上面命令執(zhí)行后,該機(jī)器自動(dòng)加入到swarm集群。這個(gè)會(huì)創(chuàng)建一個(gè)集群token,獲取全球唯一的 token,作為集群唯一標(biāo)識(shí)。后續(xù)將其他節(jié)點(diǎn)加入集群都會(huì)用到這個(gè)token值。 其中,--advertise-addr參數(shù)表示其它swarm中的worker節(jié)點(diǎn)使用此ip地址與manager聯(lián)系。命令的輸出包含了其它節(jié)點(diǎn)如何加入集群的命令。
如果想要添加manager節(jié)點(diǎn):運(yùn)行下面命令

[root@docker03 ~]# docker swarm join --token SWMTKN-1-5kxn9wloh7npnytklwbfciesr9di7uvu521gwnqm9h2n0pbokj-1e60wt0yr5583e4mzwbxnn3a8 192.168.1.11:2377[root@docker01 ~]# docker node ls
注意:這里的”*****“代表的是當(dāng)前所屬的節(jié)點(diǎn)
[root@docker02 ~]# docker swarm leave[root@docker01 ~]# docker node rm docker02
[root@docker01 ~]# docker node rm docker03[root@docker01 ~]# docker node ls
[root@docker01 ~]# docker swarm join-token manager
docker swarm join --token SWMTKN-1-5kxn9wloh7npnytklwbfciesr9di7uvu521gwnqm9h2n0pbokj-cz6hbyv9r5htyqwj5tfol65aa 192.168.1.11:2377[root@docker01 ~]# docker node ls
[root@docker01 ~]# docker node demote docker02
[root@docker01 ~]# docker node demote docker03[root@docker01 ~]# docker node ls
overlay networks 管理Swarm中docker守護(hù)進(jìn)程間的通信。可以將容器附加到一個(gè)或多個(gè)已存在的overlay網(wǎng)絡(luò)上,使容器與容器之間能夠通信;
[root@docker01 ~]# docker network create -d overlay --attachable docker
//attachable:這個(gè)參數(shù)必須要加,否則不能用于容器。在創(chuàng)建網(wǎng)絡(luò)的時(shí)候,我們并沒(méi)有部署一個(gè)存儲(chǔ)服務(wù),比如consul,那是因?yàn)閐ocker swarm自帶存儲(chǔ)。
但是會(huì)發(fā)現(xiàn)其他兩臺(tái)并不會(huì)發(fā)現(xiàn)此網(wǎng)絡(luò),需等基于此網(wǎng)絡(luò)創(chuàng)建service服務(wù)就可以看到了
[root@docker01 ~]# docker network ls
[root@docker01~]# docker pull dockersamples/visualizer[root@docker01 ~]# docker run -d -p 8080:8080 -e HOST=192.168.1.100 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualiaer dockersamples/visualizer
如果訪問(wèn)不到網(wǎng)頁(yè),需開(kāi)啟路由轉(zhuǎn)發(fā)
[root@docker01 ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@docker01 ~]# sysctl -p[root@docker01 ~]#docker pull nginx
//下載nginx鏡像(三臺(tái)都要)
[root@docker01 ~]# docker service create --replicas 1 --network docker --name web1 -p 80:80 nginx:latest
[root@docker01 ~]# docker service create --replicas 1 --network docker --name web2 -p 80 nginx:latest//--replicas:副本數(shù)量
大概可以理解為一個(gè)副本等于一個(gè)容器
[root@docker01 ~]# docker service ls
[root@docker01 ~]# docker service ps web1
[root@docker01 ~]# docker service ps web2

[root@docker01 ~]# docker service create --replicas 5 --network docker --name web -p 80 nginx:latest


[root@docker01 ~]# docker service rm web1 web2(1)擴(kuò)容
[root@docker01 ~]# docker service scale web=8
(2)縮減
[root@docker01 ~]# docker service scale web=3
[root@docker01 ~]# docker node update docker01 --availability drain設(shè)置主機(jī)docker01以后不運(yùn)行容器,但已經(jīng)運(yùn)行的容器并不會(huì)停止
“--availability”選項(xiàng)后面共有三個(gè)選項(xiàng)可配置,如下:
“active”:工作;“pause”:暫時(shí)不工作;“drain”:永久性的不工作
[root@docker01 ~]# docker node ls

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:Dockerswarm集群的搭建部署-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article34/didspe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、網(wǎng)站收錄、網(wǎng)站導(dǎo)航、全網(wǎng)營(yíng)銷(xiāo)推廣、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容