「實(shí)戰(zhàn)篇」開源項(xiàng)目docker化運(yùn)維部署-借助dockerSwarm搭建集群部署(九)

原創(chuàng)文章菇篡,歡迎轉(zhuǎn)載丘跌。轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自IT人故事會(huì),謝謝挡育!
原文鏈接地址:「實(shí)戰(zhàn)篇」開源項(xiàng)目docker化運(yùn)維部署-借助dockerSwarm搭建集群部署(九)

為了讓學(xué)習(xí)的知識(shí)融匯貫通,目前是把所有的集群都放在了一個(gè)虛擬機(jī)上朴爬,如果這個(gè)虛擬機(jī)宕機(jī)了怎么辦即寒?俗話說雞蛋不要都放在一個(gè)籃子里面,把各種集群的節(jié)點(diǎn)拆分部署召噩,應(yīng)該把各種節(jié)點(diǎn)分機(jī)器部署母赵,多個(gè)宿主機(jī),這樣部署隨便掛哪個(gè)主機(jī)我們都不擔(dān)心具滴。
源碼:https://github.com/limingios/netFuture/blob/master/docker-swarm/

一起在說說docker swarm

swarm 是docker的三劍客一員凹嘲,之前都說過了,可以看中級(jí)和高級(jí)啊 抵蚊。

  1. docker machine 容器服務(wù)
  2. docker compose 腳本服務(wù)
  3. docker swarm 容器集群技術(shù)
  • 去中心化的設(shè)計(jì)

Swarm Manager 也承擔(dān)worker節(jié)點(diǎn)的作用施绎。
Swarm Worker 運(yùn)行容器部署項(xiàng)目

Swarm是沒有中心節(jié)點(diǎn)的溯革,掛到其中一個(gè)其他是不會(huì)掛掉的贞绳。Swarm Manager 如果master掛了,立馬選舉一個(gè)新的master致稀。

  • 創(chuàng)建集群環(huán)境

首先機(jī)器已經(jīng)安裝了docker環(huán)境冈闭。

docker swarm init
  • 加入swarm集群
#加入到manager中
docker swarm join-token manager
#加入到worker中
docker swarm join-token worker

環(huán)境搭建

應(yīng)用 IP地址 服務(wù) 配置 安裝應(yīng)用 安裝方式
docker-swarm-manager1 192.168.66.100 docker-swarm-manager1 單核 2g內(nèi)存 docker-swarm-manager1 docker
docker-swarm-manager2 192.168.66.101 docker-swarm-manager2 單核 2g內(nèi)存 docker-swarm-manager2 docker
docker-swarm-node1 192.168.66.102 docker-swarm-node1 單核 2g內(nèi)存 docker-swarm-node1 docker
docker-swarm-node2 192.168.66.103 docker-swarm-node2 單核 2g內(nèi)存 docker-swarm-node2 docker

docker swarm環(huán)境

一共4個(gè)節(jié)點(diǎn),2個(gè)manager節(jié)點(diǎn)抖单,2個(gè)work節(jié)點(diǎn)萎攒,manager不光是管理,而且也干活矛绘,說白了一共4個(gè)干活的節(jié)點(diǎn)耍休。

創(chuàng)建docker swarm集群

su -
#密碼vagrant
docker swarm init

報(bào)錯(cuò)注意:如果你在新建集群時(shí)遇到雙網(wǎng)卡情況,可以指定使用哪個(gè) IP货矮,例如上面的例子會(huì)有可能遇到下面的錯(cuò)誤羊精。

Error response from daemon: could not choose an IP address to
 advertise since this system has multiple addresses on different
 interfaces (10.0.2.15 on enp0s3 and 192.168.66.100 on enp0s8) 
- specify one with --advertise-addr

再次創(chuàng)建docker swarm集群192.168.66.100

docker swarm init --advertise-addr 192.168.66.100 --listen-addr 192.168.66.100:2377
docker swarm join-token manager

再次創(chuàng)建docker swarm集群192.168.66.101
當(dāng)前節(jié)點(diǎn)以manager的身份加入swarm集群

docker swarm join --token SWMTKN-1-4itumtscktomolcau8a8cte98erjn2420fy2oyj18ujuvxkkzx-9qutkvpzk87chtr4pv8770mcb 192.168.66.100:2377

再次創(chuàng)建docker swarm集群192.168.66.102
當(dāng)前節(jié)點(diǎn)以worker的身份加入swarm集群

docker swarm join --token SWMTKN-1-4itumtscktomolcau8a8cte98erjn2420fy2oyj18ujuvxkkzx-f2dlt8g3hg86gyc9x6esewtwl 192.168.66.100:2377

再次創(chuàng)建docker swarm集群192.168.66.103
當(dāng)前節(jié)點(diǎn)以worker的身份加入swarm集群

docker swarm join --token SWMTKN-1-4itumtscktomolcau8a8cte98erjn2420fy2oyj18ujuvxkkzx-f2dlt8g3hg86gyc9x6esewtwl 192.168.66.100:2377

查看swarm集群

只能在manager節(jié)點(diǎn)內(nèi)執(zhí)行
leader掛掉后,reachable就可以管理集群了囚玫。

docker node ls

查看swarm集群的網(wǎng)絡(luò)

只能在manager節(jié)點(diǎn)內(nèi)執(zhí)行

docker network ls

創(chuàng)建容器間的共享網(wǎng)絡(luò)

只能在manager節(jié)點(diǎn)內(nèi)執(zhí)行

docker network create -d overlay --attachable swarm_test
docker network ls

目前是4臺(tái)機(jī)器喧锦,如果想讓4臺(tái)機(jī)器內(nèi)的容器可以進(jìn)行共享读规,overlay的網(wǎng)絡(luò)就可以了,只需要在創(chuàng)建容器的時(shí)候--net=swarm_test

創(chuàng)建5個(gè)pxc容器

  • 192.168.66.100

創(chuàng)建2個(gè)容器燃少。之前也說過如何創(chuàng)建束亏,最為重要的是共享網(wǎng)絡(luò)一定要使用swarm的共享網(wǎng)絡(luò)。

docker volume create v1
docker volume create backup1
#增加域名解析
echo "nameserver 8.8.8.8" | tee /etc/resolv.conf > /dev/null 
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo systemctl restart docker
docker run -d -p 3306:3306  --net=swarm_test \
        --name=node1 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v1:/var/lib/mysql \
        --privileged \
        -v backup1:/data \
        percona/percona-xtradb-cluster
docker ps 
docker volume create v2
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node2 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v2:/var/lib/mysql \
        --privileged \
        -v backup1:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps 
  • 192.168.66.101

創(chuàng)建1個(gè)容器阵具。之前也說過如何創(chuàng)建碍遍,最為重要的是共享網(wǎng)絡(luò)一定要使用swarm的共享網(wǎng)絡(luò)。

docker volume create v3
docker volume create  backup3
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node3 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v3:/var/lib/mysql \
        --privileged \
        -v backup3:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps 
  • 192.168.66.102

創(chuàng)建1個(gè)容器阳液。之前也說過如何創(chuàng)建雀久,最為重要的是共享網(wǎng)絡(luò)一定要使用swarm的共享網(wǎng)絡(luò)。

docker volume create v4
docker volume create  backup4
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node4 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v4:/var/lib/mysql \
        --privileged \
        -v backup4:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps 
  • 192.168.66.103

創(chuàng)建1個(gè)容器趁舀。之前也說過如何創(chuàng)建赖捌,最為重要的是共享網(wǎng)絡(luò)一定要使用swarm的共享網(wǎng)絡(luò)。

docker volume create v4
docker volume create  backup4
docker run -d -p 3307:3306  --net=swarm_test \
        --name=node4 \
        -e CLUSTER_NAME=PXC \
        -e MYSQL_ROOT_PASSWORD=a123456 \
        -e XTRABACKUP_PASSWORD=a123456 \
        -v v4:/var/lib/mysql \
        --privileged \
        -v backup4:/data \
        -e CLUSTER_JOIN=node1 \
        percona/percona-xtradb-cluster
docker ps 

容器集群

在這個(gè)示意圖里面矮烹,畫了4個(gè)linux的主機(jī)越庇,都安裝了docker虛擬機(jī),假如我現(xiàn)在想安裝A程序奉狈,直接選擇Docker-1這個(gè)主機(jī)里面的容器安裝A程序卤唉,這樣沒有問題。但是單節(jié)點(diǎn)單容器來部署仁期,一旦這個(gè)節(jié)點(diǎn)掛掉的話桑驱,A程序就沒有,為了防止這樣我們有冗余設(shè)計(jì)跛蛋,直接在Docker-2這個(gè)主機(jī)里面的容器也安裝A程序熬的,這樣的話,Docker-1里面的A程序掛了赊级,Docker-2里面的A程序也可以運(yùn)行押框。這個(gè)功能有點(diǎn)像負(fù)載均衡,其實(shí)真的很像理逊。docker swarm提供的東西跟負(fù)載均衡還是有區(qū)別的橡伞。swarm 只是提供了容器狀態(tài)的管理,如果Docker-1里面的A程序掛了晋被,發(fā)現(xiàn)本來二個(gè)兑徘,現(xiàn)在變成1個(gè)了危險(xiǎn),立馬在起一個(gè)吧羡洛。實(shí)時(shí)保證docker容器內(nèi)的數(shù)量挂脑。

容器集群適合的場(chǎng)景

容器集群不適合有狀態(tài)程序,例如數(shù)據(jù)庫,緩存等等

image.png

退出Swarm集群

#Manager退出必須加--force
docker swarm leave --force

刪除節(jié)點(diǎn)

service docker stop
#Manager節(jié)點(diǎn)需要先降級(jí)
docker node demoted  <nodeID>
docker node rm <nodeID>
docker network 

PS:這次主要說了3點(diǎn)比較重要的:通過docker-swarm的網(wǎng)絡(luò)搭建容器化通信網(wǎng)絡(luò)最域,創(chuàng)建集群的時(shí)候--net 加入docker-swarm創(chuàng)建的網(wǎng)絡(luò)谴分,方便通信。不哪些適合做容器化集群镀脂,數(shù)據(jù)庫和緩存牺蹄。如何操作docker-swarm中的節(jié)點(diǎn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末薄翅,一起剝皮案震驚了整個(gè)濱河市沙兰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翘魄,老刑警劉巖鼎天,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異暑竟,居然都是意外死亡斋射,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門但荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罗岖,“玉大人,你說我怎么就攤上這事腹躁∩0” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵纺非,是天一觀的道長哑了。 經(jīng)常有香客問我,道長烧颖,這世上最難降的妖魔是什么弱左? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮倒信,結(jié)果婚禮上科贬,老公的妹妹穿的比我還像新娘。我一直安慰自己鳖悠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布优妙。 她就那樣靜靜地躺著乘综,像睡著了一般。 火紅的嫁衣襯著肌膚如雪套硼。 梳的紋絲不亂的頭發(fā)上卡辰,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼九妈。 笑死反砌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萌朱。 我是一名探鬼主播宴树,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晶疼!你這毒婦竟也來了酒贬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤翠霍,失蹤者是張志新(化名)和其女友劉穎锭吨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寒匙,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡零如,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锄弱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埠况。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖棵癣,靈堂內(nèi)的尸體忽然破棺而出辕翰,到底是詐尸還是另有隱情,我是刑警寧澤狈谊,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布喜命,位于F島的核電站,受9級(jí)特大地震影響河劝,放射性物質(zhì)發(fā)生泄漏壁榕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一赎瞎、第九天 我趴在偏房一處隱蔽的房頂上張望牌里。 院中可真熱鬧,春花似錦务甥、人聲如沸牡辽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽态辛。三九已至,卻和暖如春挺尿,著一層夾襖步出監(jiān)牢的瞬間奏黑,已是汗流浹背炊邦。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熟史,地道東北人馁害。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像蹂匹,于是被迫代替她去往敵國和親碘菜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容