阿里云服務(wù)器部署?Docker?Swarm集群
一、什么是 Docker Swarm?
Swarm是Docker公司推出的用來(lái)管理docker集群的平臺(tái),幾乎全部用GO語(yǔ)言來(lái)完成的開(kāi)發(fā)的,代碼開(kāi)源在https://github.com/docker/swarm, 它是將一群Docker宿主機(jī)變成一個(gè)單一的虛擬主機(jī),Swarm使用標(biāo)準(zhǔn)的Docker API接口作為其前端的訪問(wèn)入口,換言之,各種形式的DockerClient(compose,docker-py等)均可以直接與Swarm通信,甚至Docker本身都可以很容易的與Swarm集成,這大大方便了用戶將原本基于單節(jié)點(diǎn)的系統(tǒng)移植到Swarm上,同時(shí)Swarm內(nèi)置了對(duì)Docker網(wǎng)絡(luò)插件的支持,用戶也很容易的部署跨主機(jī)的容器集群服務(wù)。
Docker Swarm 的作用就是用來(lái)管理Docker集群的平臺(tái)
二、Docker Swarm 和 k8s的區(qū)別
Swarm的優(yōu)勢(shì) 與 劣勢(shì)
優(yōu)勢(shì)
- swarm API兼容docker API,使得swarm 學(xué)習(xí)成本低,同時(shí)架構(gòu)簡(jiǎn)單,部署運(yùn)維成本較低。
劣勢(shì)
- 同樣是因?yàn)锳PI兼容,無(wú)法提供集群的更加精細(xì)的管理。
- 在網(wǎng)絡(luò)方面,默認(rèn)的Docker 容器是通過(guò)橋接與NAT和主機(jī)外通信的,這就出現(xiàn)了2個(gè)問(wèn)題,一個(gè)是因?yàn)镹AT,外部主機(jī)無(wú)法主動(dòng)訪問(wèn)容器內(nèi)(除了端口映射) ,另外默認(rèn)橋接IP是一樣的,這樣會(huì)出現(xiàn)不同主機(jī)之間又相同的IP的情況,可以通過(guò)其它工具解決。
- 容器可靠性方面無(wú)K8S的 Replication Controllers 可以監(jiān)控并維持容器的聲明。swarm在啟動(dòng)時(shí)刻可以控制容器啟動(dòng),啟動(dòng)后,如果容器崩潰,swarm沒(méi)有機(jī)制來(lái)保證容器的運(yùn)行
K8S的優(yōu)勢(shì)與劣勢(shì)
優(yōu)勢(shì)
- 容器的高可用性,集群的精密管理,復(fù)雜的網(wǎng)絡(luò)場(chǎng)景
劣勢(shì)
- K8S的學(xué)習(xí)曲線陡峭,同時(shí)運(yùn)維的成本相對(duì)高點(diǎn)
一般來(lái)說(shuō),服務(wù)不超過(guò)10個(gè)采用swarm即可,超過(guò)10個(gè)后必須采用K8S來(lái)保證集群的高可用與高可靠性!
三、購(gòu)買(mǎi)4臺(tái)阿里云服務(wù)器
我們選擇按量付費(fèi),否則單獨(dú)購(gòu)買(mǎi)服務(wù)器的話很貴,按量付費(fèi)用完即可釋放,輕松便捷~
注意:購(gòu)買(mǎi)需要向阿里云服務(wù)器充值100元,否則無(wú)法進(jìn)行按量付費(fèi)
創(chuàng)建實(shí)例
阿里云官方購(gòu)買(mǎi)服務(wù)器

進(jìn)入如下界面,選擇按量付費(fèi)

選擇購(gòu)買(mǎi)機(jī)器的類(lèi)型 1V 2G 即可

選擇鏡像

進(jìn)入下一步網(wǎng)絡(luò)和安全組設(shè)置,保持默認(rèn)即可,帶寬可拉滿(不收費(fèi))

設(shè)置您的密碼

下一步,默認(rèn)即可,確認(rèn)訂單,完成購(gòu)買(mǎi)服務(wù)器操作

單擊創(chuàng)建實(shí)例即可完成操作!
四、Docker Swarm 工作模式
Docker Engine 1.12 引入了 swarm 模式,使您能夠創(chuàng)建一個(gè)由一個(gè)或多個(gè) Docker 引擎組成的集群,稱為 swarm。一個(gè) swarm 由一個(gè)或多個(gè)節(jié)點(diǎn)組成:在 swarm 模式下運(yùn)行 Docker Engine 1.12 或更高版本的物理機(jī)或虛擬機(jī)。
有兩種類(lèi)型的節(jié)點(diǎn):管理器 和 工作器

五、部署 Docker Swarm 集群
?連接4臺(tái)服務(wù)器
我們采用 XShell 進(jìn)行連接阿里云ECS服務(wù)器

輸入了之后會(huì)提示輸入用戶名和密碼,輸入即可成功連接
?安裝Docker
這里我們采用4臺(tái)服務(wù)器同時(shí)操作,否則一臺(tái)一臺(tái)的安裝太浪費(fèi)時(shí)間了,如下

這樣就是一個(gè)窗口輸入命令其它窗口同步,高效率完成~
具體安裝Docker可看:Docker安裝阿里云服務(wù)器和在虛擬機(jī)安裝遇到的坑(問(wèn)題小結(jié))
??部署Swarm
Docker安裝完畢后,開(kāi)始部署我們的集群,Docker自帶Swarm,所以我們直接部署即可
初始化節(jié)點(diǎn)
docker swarm init --help

獲取網(wǎng)絡(luò)地址,進(jìn)行創(chuàng)建節(jié)點(diǎn)
ip addr docker swarm init --advertise-addr 39.96.185.143

獲取令牌
# 管理節(jié)點(diǎn) docker swarm join-token manager # 工作節(jié)點(diǎn) docker swarm join-token worker
--token 后面的 是要利用上面的命令生成的,不是我的固定的,需要去生成,后續(xù)端口根據(jù)你的ip地址來(lái)~
我們其它機(jī)器加入節(jié)點(diǎn)
docker swarm join --token SWMTKN-1-1mzq8iev00xgswszp91h18tspm9rl5py7upw6ri9iaw484a1b3-4f159n0ky1bcsnqlkkohx0g1a 172.27.206.16:2377

第一臺(tái)機(jī)器可查看是否成功加入
docker node ls
最后一臺(tái)機(jī)器可設(shè)置為管理節(jié)點(diǎn)
docker swarm join --token SWMTKN-1-1mzq8iev00xgswszp91h18tspm9rl5py7upw6ri9iaw484a1b3-a795z02iuctnhf4izji1fmmiv 172.27.206.16:2377

成功搭建集群~
六、Raft協(xié)議
雙主雙從:假設(shè)一個(gè)主節(jié)點(diǎn)掛了,那么其它節(jié)點(diǎn)是否可以使用
Raft協(xié)議:保證了大多數(shù)節(jié)點(diǎn)存活可以使用,只要 > 1,集群至少大于3臺(tái)
將主節(jié)點(diǎn)停止后,其它節(jié)點(diǎn)會(huì)宕機(jī),無(wú)法使用!

無(wú)法查看節(jié)點(diǎn)信息
Raft協(xié)議是必須保證大多數(shù)節(jié)點(diǎn)存活,才可以達(dá)到高可用,否則不可用!
七、其它命令
???Docker Stack
部署集群項(xiàng)目的方式
# 單機(jī)部署 docker-compose # 集群部署 docker stack # 單機(jī) docker-compose up # 集群 docker stack deploy
???Docker Secret
Docker Secret 是安全證書(shū),用來(lái)配置密碼與證書(shū)
docker secret --help

??Docker Config
Docker Config 是配置
docker config --help

?小結(jié)
以上就是【Bug 終結(jié)者】對(duì) 【云原生】阿里云服務(wù)器部署 Docker Swarm集群 的簡(jiǎn)單介紹,部署 Docker 集群,在微服務(wù)架構(gòu)不超過(guò)10個(gè)的情況下會(huì)采用Docker Swarm或Compose 部署項(xiàng)目,如果超過(guò)的話,需要去適用K8S 來(lái)部署我們的項(xiàng)目上線! 后續(xù)會(huì)更新 K8S 相關(guān)文章,Docker 已完結(jié)!
到此這篇關(guān)于阿里云服務(wù)器部署 Docker Swarm集群的文章就介紹到這了,更多相關(guān)阿里云Docker Swarm集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker 鏡像國(guó)內(nèi)加速的方法匯總(收藏版)
本文介紹了在國(guó)內(nèi)使用Docker時(shí)遇到的加速和優(yōu)化方法,針對(duì)國(guó)內(nèi)下載速度慢和斷線問(wèn)題,可以使用國(guó)內(nèi)可用的DockerRegistryMirrors或自建DockerRegistryMirror/Proxy,針對(duì)沒(méi)有公共鏡像庫(kù)賬號(hào)導(dǎo)致的限流問(wèn)題,可以注冊(cè)各個(gè)鏡像庫(kù)賬號(hào)并登錄,感興趣的朋友跟隨小編一起看看吧2025-01-01
Docker制作MySQL鏡像并使用`/docker-entrypoint-initdb.d/`問(wèn)題
這篇文章主要介紹了Docker制作MySQL鏡像并使用`/docker-entrypoint-initdb.d/`問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Docker Overlay2磁盤(pán)空間占用過(guò)大清理的方法實(shí)現(xiàn)
隨著業(yè)務(wù)量的不斷增大,容器的不斷啟動(dòng),往往會(huì)出現(xiàn)磁盤(pán)空間不足,本文主要介紹了Docker Overlay2磁盤(pán)空間占用過(guò)大清理的方法實(shí)現(xiàn),感興趣的可以了解一下2022-03-03
詳解docker pull 下來(lái)的鏡像都存到了哪里
這篇文章主要介紹了詳解docker pull 下來(lái)的鏡像都存到了哪里,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
docker-compose啟動(dòng)docker文件掛載失敗的解決
這篇文章主要介紹了docker-compose啟動(dòng)docker文件掛載失敗的解決方案。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
解決使用Docker Compose管理容器的問(wèn)題
在Docker Compose中,根據(jù)一個(gè)配置文件,將所有與應(yīng)用系統(tǒng)相關(guān)的應(yīng)用和對(duì)應(yīng)的容器進(jìn)行配置,再根據(jù)Docker Compose提供的命令進(jìn)行啟動(dòng),就可以解決上面說(shuō)的多容器之間的復(fù)雜問(wèn)題,感興趣的朋友跟隨小編一起看看吧2021-09-09

