docker 系列之docker-engine swarm 集群實(shí)踐

1 前言

本文也是在各大論壇以及文章中實(shí)踐總結(jié),主要以mysql數(shù)據(jù)庫集群搭建為主廷雅,如有錯誤歡迎大家討論指正

2?安裝docker-engine

2.1 docker-engine與docker區(qū)別

Docker是為開發(fā)者和系統(tǒng)管理員設(shè)計(jì)的奏纪,用來發(fā)布和運(yùn)行分布式應(yīng)用程序的一個開放性平臺壳鹤。由兩部分組成:

Docker Engine:一個便攜式盛龄、輕量級的運(yùn)行環(huán)境和包管理器。

Docker Hub:為創(chuàng)建自動化工作流和分享應(yīng)用創(chuàng)建的云服務(wù)組成芳誓。

2.2 docker卸載

查看yum安裝過的docker包

# yum list installed | grep docker

刪除所有安裝包

# yum - y remove xxxxx

刪除docker相關(guān)文件

# rm -rf/var/lib/docker

2.3 docker-engine安裝

2.3.1更新

# yum update

2.3.2添加docker的yum源

# tee /etc/yum.repos.d/docker.repo<<-'EOF'

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

EOF

2.3.3 yum安裝docker-engine

# yum install docker-engine

2.3.4設(shè)置docker服務(wù)開機(jī)自啟

# systemctl enable docker.service

2.3.5啟動docker服務(wù)

# systemctl start docker.service

3 swarm創(chuàng)建

3.1 swarm框架結(jié)構(gòu)

3.2常用命令

1)docker swarm:集群管理余舶,子命令有init, join, leave, update

(2)docker service:服務(wù)創(chuàng)建,子命令有create, inspect, update, remove, tasks

(3)docker node:節(jié)點(diǎn)管理锹淌,子命令有accept, promote, demote, inspect, update,tasks,ls, rm

(4)docker stack/deploy:試驗(yàn)特性匿值,用于多應(yīng)用部署,類似與docker-compose中的特性。

3.3準(zhǔn)備工作

3.3.1開放端口

·2377 (TCP)– 集群管理

·7946 (TCP與UDP)– 節(jié)點(diǎn)通信

·4789 (TCP與UDP)– 覆蓋網(wǎng)絡(luò)流量

注:centos7系統(tǒng)使用Firewall替換了iptables

# firewall-cmd --zone=public--add-port=2377/tcp –permanent

# firewall-cmd --zone=public--add-port=7946/udp –permanent

# firewall-cmd --zone=public--add-port=7946/tcp –permanent

# firewall-cmd --zone=public--add-port=4789/udp –permanent

# firewall-cmd --zone=public --add-port=4789/tcp–permanent

命令含義:

--zone #作用域

--add-port=80/tcp#添加端口,格式為:端口/通訊協(xié)議

--permanent#永久生效阴幌,沒有此參數(shù)重啟后失效

3.3.2節(jié)點(diǎn)分類

管理者(Manage)--負(fù)責(zé)執(zhí)行維護(hù)Swarm必要狀態(tài)所必需的編排與集群管理

功能工作者(worker)--負(fù)責(zé)從管理節(jié)點(diǎn)處接收并執(zhí)行各項(xiàng)任務(wù)。在默認(rèn)情況下绊谭,管理節(jié)點(diǎn)本身同時也作為工作節(jié)點(diǎn)存在,但大家可以通過配置保證其僅執(zhí)行管理任務(wù)汪拥。

本文測試以三臺服務(wù)器:10.0.50.24/10.0.50.25/10.0.50.26

docker-engine版本信息:17.03.0-ce

3.4集群創(chuàng)建

Swarm模式集群創(chuàng)建要求利用奇數(shù)臺管理者節(jié)點(diǎn)(docker manage)达传,容錯機(jī)制是N個管理者節(jié)點(diǎn),最大允許(N-1)/2個管理者節(jié)點(diǎn)出錯迫筑。

官方建議最多7臺管理者節(jié)點(diǎn)主機(jī)宪赶。

3.4.1 swarm初始化

#docker swarm init --advertise-addr10.0.50.24

token標(biāo)識是docker swarm集群容器的全球唯一標(biāo)識,后續(xù)加入節(jié)點(diǎn)等都需要此標(biāo)志脯燃,同時如果集群模式出于允許添加節(jié)點(diǎn)方式搂妻,那么可以在任意docker環(huán)境下加入該集群。

--advertise-addr參數(shù)表示其它swarm中的worker節(jié)點(diǎn)使用此ip地址與manager聯(lián)系辕棚。命令的輸出包含了其它節(jié)點(diǎn)如何加入集群的命令叽讳。

Eg:

docker swarm join

--tokenSWMTKN-1-1ug653uh5r2zs1e22p6xhnqqz6lwvk2eh0lgnczpfjmvdurowi-48px4o2i4nxd4sajge4tgwu9n10.0.50.24:2377

3.5節(jié)點(diǎn)加入與退出

分別在10.0.50.25/1.0.50.26機(jī)器執(zhí)行以下命令即可加入到24機(jī)器建立的集群中

3.5.1節(jié)點(diǎn)加入集群

# docker swarm join

--tokenSWMTKN-1-1ug653uh5r2zs1e22p6xhnqqz6lwvk2eh0lgnczpfjmvdurowi-48px4o2i4nxd4sajge4tgwu9n10.0.50.24:2377

3.5.2節(jié)點(diǎn)退出集群

#docker swarm leave

注:管理者節(jié)點(diǎn)在退出時需要加參數(shù)—force,且管理者節(jié)點(diǎn)退出集群則停止運(yùn)行

3.6查看信息

3.6.1節(jié)點(diǎn)查看

# docker node ls

3.6.2集群信息

#docker info

4集群擴(kuò)容與縮容

4.1集群擴(kuò)容

Swarm集群在創(chuàng)建后可以自由擴(kuò)展集群中組件總數(shù)量

#docker service scale tomcat=5

4.2集群縮容

集群縮容命令實(shí)際和擴(kuò)容相同坟募,只是參數(shù)不同而已,即:

# docker service scale tomcat=2

5網(wǎng)絡(luò)創(chuàng)建

5.1創(chuàng)建網(wǎng)絡(luò)

所有的集群可以加入到自己創(chuàng)建的網(wǎng)絡(luò)中邑狸,方便通信以及管理

#docker network create --driver overlay mynet

查看網(wǎng)絡(luò)

#docker network ls

5.2網(wǎng)絡(luò)查看

#dockernetwork inspect

6服務(wù)創(chuàng)建與刪除

6.1 docker集群服務(wù)創(chuàng)建

#docker service create xxx

--replicas實(shí)例數(shù)目

--publish端口映射

--name名稱

--env參數(shù)配置

--network網(wǎng)絡(luò)歸屬

本文以mysql為例:

#docker service create --name mysqluu--replicas 3 --publish 3306:3306 --network mynet --envMYSQL_ROOT_PASSWORD=rootmysql mysql:latest

6.2服務(wù)查詢

6.2.1整體查詢

#docker service ls

6.2.2分布查詢

# docker service ps < SERVICE-ID >

6.2.3服務(wù)詳細(xì)查看

#docker service inspect < SERVICE-ID>

6.2服務(wù)刪除

# docker service rm

7高可用配置

7.1 etcd概念

Etcd是一個鍵值存儲倉庫懈糯,用于配置共享服務(wù)和服務(wù)發(fā)現(xiàn)

7.2 etcd特點(diǎn)

簡單:基于HTTP+JSON的API,用curl命令就可以輕松使用

安全:可選SSL客戶認(rèn)證機(jī)制

快速:每個實(shí)例每秒支持一千次寫操作

可信:使用raft算法充分實(shí)現(xiàn)了分布式

8 docker圖形界面

8.1啟動

#docker run -d --name uifd -p 9000:9000 -v/var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker

Docker UI包含具體的images管理单雾,

9 docker加速器配置

9.1注冊dockercloud賬戶

9.2配置

執(zhí)行命令

# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s

http://d7e59b11.m.daocloud.io

9.3 測試

# docker pull elcolio/etcd

10常見問題總結(jié)

10.1 docker服務(wù)部署

Docker集群模式下部署服務(wù)狀態(tài)總是:Preparing 18 seconds ago

問題原因:在管理者節(jié)點(diǎn)創(chuàng)建后在工作者節(jié)點(diǎn)會去下載鏡像赚哗,所以啟動需要一定時間

解決辦法:稍加等待她紫,如果仍然執(zhí)行失敗,可以通過docker logs -f 查看具體報(bào)錯信息

10.2 docker服務(wù)創(chuàng)建失敗

Docker集群模式利用docker service create xxx總是報(bào)錯失敗

問題原因:可能是dockerHUB網(wǎng)絡(luò)問題屿储,造成鏡像下載失敗

解決辦法:docker服務(wù)加速器或者手動load鏡像

10.3 swarm與Kubernetes區(qū)別

Swarm對外提供Docker API贿讹,自身輕量、學(xué)習(xí)成本够掠、二次開發(fā)成本都比較低民褂,自身是插件式框架

Compose+Swarm =Kubernetes

10.4入口負(fù)載均衡

解釋:當(dāng)節(jié)點(diǎn)個數(shù)大于啟動容器的個數(shù),連接費(fèi)容器運(yùn)行節(jié)點(diǎn)機(jī)器會被路由到已運(yùn)行服務(wù)機(jī)器疯潭。

原理:所有worker節(jié)點(diǎn)都監(jiān)聽在發(fā)布的服務(wù)端口上赊堪。當(dāng)該服務(wù)被外部系統(tǒng)調(diào)用時,收到流量的節(jié)點(diǎn)會通過Docker提供的內(nèi)部DNS服務(wù)竖哩,將流量負(fù)載均衡該流量哭廉。

舉例:比如swarm集群是由3臺機(jī)器組成集群模式,有兩臺運(yùn)行了redis相叁,訪問沒有運(yùn)行的機(jī)器時遵绰,redis還是會連接成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市增淹,隨后出現(xiàn)的幾起案子椿访,更是在濱河造成了極大的恐慌,老刑警劉巖埠通,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赎离,死亡現(xiàn)場離奇詭異,居然都是意外死亡端辱,警方通過查閱死者的電腦和手機(jī)梁剔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舞蔽,“玉大人荣病,你說我怎么就攤上這事∩粒” “怎么了个盆?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朵栖。 經(jīng)常有香客問我颊亮,道長,這世上最難降的妖魔是什么陨溅? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任终惑,我火速辦了婚禮,結(jié)果婚禮上门扇,老公的妹妹穿的比我還像新娘雹有。我一直安慰自己偿渡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布霸奕。 她就那樣靜靜地躺著溜宽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪质帅。 梳的紋絲不亂的頭發(fā)上适揉,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音临梗,去河邊找鬼涡扼。 笑死,一個胖子當(dāng)著我的面吹牛盟庞,可吹牛的內(nèi)容都是我干的吃沪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼什猖,長吁一口氣:“原來是場噩夢啊……” “哼票彪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起不狮,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤降铸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后摇零,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體推掸,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年驻仅,在試婚紗的時候發(fā)現(xiàn)自己被綠了谅畅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡噪服,死狀恐怖毡泻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粘优,我是刑警寧澤仇味,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站雹顺,受9級特大地震影響丹墨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嬉愧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一带到、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦揽惹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闪金,卻和暖如春疯溺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哎垦。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工囱嫩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人漏设。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓墨闲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親郑口。 傳聞我的和親對象是個殘疾皇子鸳碧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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