国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker Swarm集群初探

MingjunYang / 914人閱讀

摘要:既然要組集群那就涉及諸如的資源調(diào)度管理等等一系列問題。目前涉及集群的三個主要的技術(shù)無外乎三種。從本文開始作者將會一一實踐這幾種主要的集群技術(shù),話不多說,現(xiàn)在開始。完全運行于內(nèi)存中,體積小,啟動快。


前言

相信Docker技術(shù)大家都有所了解,單個Docker能發(fā)揮的作用畢竟有限,也不便于管理,所以Docker得組集群來使用才能發(fā)揮強(qiáng)大的技術(shù)優(yōu)勢。既然要組集群那就涉及諸如Docker的資源調(diào)度、管理等等一系列問題。目前涉及Docker集群的三個主要的技術(shù)無外乎Swarm、Kubernetes、Mesos三種。從本文開始作者將會一一實踐這幾種主要的Docker集群技術(shù),話不多說,現(xiàn)在開始。

注意:作者的kubernetes相關(guān)實踐在此

注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按掃描 下面的 小心心 來訂閱 ↓ ↓ ↓


環(huán)境準(zhǔn)備

Mac OS X 10.13.2

Docker 17.09.1-ce-mac42 (21090)

virtualbox(虛擬集群中節(jié)點時需要)

boot2docker v1.8.0(在虛擬節(jié)點中起docker環(huán)境時需要)


環(huán)境搭建

節(jié)點規(guī)劃如下:

我們需要4個節(jié)點(1個master + 3個slave),由于沒有真實地4臺物理機(jī),所以下文中是靠docker-machine、virtualbox以及boot2docker來虛擬出4個獨立IP地址的帶docker環(huán)境的節(jié)點,大家注意!

環(huán)境安裝:

Docker環(huán)境安裝:

Tips: 以前Mac上一般是使用boot2docker這個專門為OS X上運行 Docker 而開發(fā)的一個輕量級的虛擬主機(jī)管理工具來安裝docker,現(xiàn)在boot2docker這種安裝方式官方已經(jīng)deprecated 了(當(dāng)然下文中還是需要boot2docker.iso的鏡像來幫助我們在虛擬的節(jié)點上起docker環(huán)境),可以直接下載docker的dmg安裝包雙擊進(jìn)行安裝即可

我們選擇docker CE版安裝即可,下載鏈接如下:
https://store.docker.com/sear...

注意:選擇官方docker dmg包安裝完成以后,docker-machine已經(jīng)天然地集成于其中了,該工具在下文中創(chuàng)建虛擬節(jié)點時需要,它是一個可以在虛擬主機(jī)節(jié)點上安裝docker engine的工具

virtualbox安裝

由于我們搭建集群需要具備多個不同IP地址的節(jié)點,然而我們手上僅一臺電腦,所以需要借助virtualbox來虛擬出多個不同IP地址的節(jié)點供我們使用需要

去官方下載virtualbox的dmg安裝包,雙擊安裝即可:
https://www.virtualbox.org/

boot2docker安裝

Boot2Docker是一個專為Docker而設(shè)計的輕量級Linux發(fā)型包,解決Windows或者OS X用戶不能安裝Docker的問題。Boot2Docker完全運行于內(nèi)存中,體積小,啟動快。Boot2Docker需要運行在VirtualBox中。

我使用的是brew這個mac上的包管理器安裝的,非常方便,只需一行命令:
brew install boot2docker

除此之外我們還需要下載boot2docker.iso鏡像在后文中進(jìn)行使用:
https://github.com/boot2docke...
我們先把boot2docker.iso下好后面?zhèn)溆?/p>


Docker Swarm集群實驗 先創(chuàng)建4個虛擬節(jié)點(1個master + 3個slave)

首先要將之前下載的boot2docker.iso放到/Users/你的用戶名/.docker/machine/cache/目錄下,然后執(zhí)行如下命令:

docker-machine create --virtualbox-boot2docker-url ~/.docker/machine/cache/boot2docker.iso master
docker-machine create --virtualbox-boot2docker-url ~/.docker/machine/cache/boot2docker.iso slave1
docker-machine create --virtualbox-boot2docker-url ~/.docker/machine/cache/boot2docker.iso slave2
docker-machine create --virtualbox-boot2docker-url ~/.docker/machine/cache/boot2docker.iso slave3
注意:上面若不指定boot2docker的路徑:--virtualbox-boot2docker-url ~/.docker/machine/cache/boot2docker.iso,直接執(zhí)行docker-machine create master創(chuàng)建節(jié)點時,可能會報No default Boot2Docker ISO found locally, downloading the latest release...這種錯誤!所以最好自己指定boot2docker.iso鏡像路徑

docker-machine命令創(chuàng)建虛擬機(jī)過程細(xì)節(jié)如下:

創(chuàng)建完4個節(jié)點以后,可以用docker-machine ls命令查看一下各個節(jié)點的情況,可以看到自動為其分配了獨立的IP地址:

ssh接入虛擬節(jié)點

開啟4個獨立的terminal終端,分別執(zhí)行:

docker-machine ssh master
docker-machine ssh slave1
docker-machine ssh slave2
docker-machine ssh slave3

執(zhí)行后的效果如下圖:

接下來在master上初始化一個docker swarm集群

執(zhí)行命令:

docker swarm init --advertise-addr 192.168.99.100

效果如下:

上述命令執(zhí)行成功后,提示中會告知用戶在slave節(jié)點上執(zhí)行命令 docker swarm join --token SWMTKN-1-1uzft9zcrd5cl7eva4gr4ptgrs1gc252483ey19xfphcuxc8ta-evsmmj7b7kleh7yoezjutzuu2 192.168.99.100:2377
可以加入到該集群中,把命令都告訴你了,你說智不只能!

將3個slave節(jié)點加入集群

分別去三個slave上,輸入上面提示中的命令:

docker swarm join --token SWMTKN-1-1uzft9zcrd5cl7eva4gr4ptgrs1gc252483ey19xfphcuxc8ta-evsmmj7b7kleh7yoezjutzuu2 192.168.99.100:2377

執(zhí)行效果如下:

注意:如果忘了docker swarm join 命令中的token命令的話,可以使用命令docker swarm join-token worker來get之

好,到此為止應(yīng)該說docker swarm集群的搭建工作已經(jīng)完成了,那下面在這個集群上做點實際的任務(wù)吧!

開始在master節(jié)點上創(chuàng)建服務(wù)

我們計劃在該docker集群上部署高可用的nginx容器任務(wù)來作為演示:
在master節(jié)點上執(zhí)行如下命令來創(chuàng)建名為mynginx的service,讓其有2份nginx容器副本分配到集群中去,起在8080端口:
docker service create --replicas 2 -d -p 8080:80 --name mynginx registry.docker-cn.com/library/nginx
然后使用如下兩條命令查看效果:

docker service ls
docker service ps mynginx

執(zhí)行效果如下:

此處有兩點需要注意:

我們使用了registry.docker-cn.com/library/nginx作為加速鏡像,不然可能在slave上pull鏡像的時候timeout

注意此處創(chuàng)建了service之后并不是nginx容器立馬都在slave上起起來了,是需要等一段時間的(如,我等了近8分鐘),因為在slave上還要去pull nginx鏡像,再啟動nginx容器等,沒有那么快

等待若干分鐘以后,我們再看效果,發(fā)現(xiàn)此時任務(wù)順利地分發(fā)到slave1和slave2上了:

分別用瀏覽器訪問:
http://192.168.99.101:8080 和 http://192.168.99.102:8080 ,會得到如下結(jié)果:

成功訪問到了slave節(jié)點中起起來的nginx服務(wù)!

此時分別去 slave1 和 slave2 上查看容器運行情況,結(jié)果如下:

進(jìn)一步實驗:擴(kuò)容service中的任務(wù)

我們想將nginx容器平滑地擴(kuò)容到3份,在master上執(zhí)行:

docker service scale mynginx=3

然后在master上查看service,發(fā)現(xiàn)新增的一個容器任務(wù)分配到slave3上了,當(dāng)然此時slave3上正在preparing:

等若干分鐘后在master上再次查看service,發(fā)現(xiàn)slave3上的nginx容器任務(wù)成功啟動了:

去slave3節(jié)點上docker ps看一下,發(fā)現(xiàn)容器確實啟動了:

進(jìn)一步實驗:集群中service高可用

目前有3個運行的nginx容器保證服務(wù)的可用性,如果其中一個容器意外關(guān)閉將會是什么情況?接下來就來模擬

我們關(guān)閉slave1上此時正在運行著的nginx容器,看服務(wù)有什么變化:

此時去master節(jié)點上查看信息發(fā)現(xiàn),被關(guān)掉的nginx被分配到master上重啟了:

此時我又關(guān)閉master節(jié)點上啟動的nginx容器,發(fā)現(xiàn)剛關(guān)閉不久后,nginx容器又重新在master上恢復(fù)了:

接下來我們來將slave3宕機(jī)(宕機(jī)和前文的關(guān)閉nginx容器不同,此處模仿的是物理宕機(jī)),我們在控制臺中使用docker-machine stop來模擬宕機(jī)動作:

此時去master上查看service信息發(fā)現(xiàn)slave3宕機(jī)以后,nginx任務(wù)又重啟與slave1上來保持高可用:

最后來把狠的,我們將slave1,slave2,slave3全部從集群中斷開:

結(jié)果去master上查看service信息,發(fā)現(xiàn)3個容器副本全部遷移到master之上了:

此時在master上執(zhí)行docker ps查看容器信息如下:運行著3個nginx容器:

總而言之,無論怎么操作集群都能保持制定數(shù)量的容器副本來實現(xiàn)高可用!


【干貨】總結(jié)一下上文中的常用命令

創(chuàng)建虛擬主機(jī)節(jié)點

docker-machine create 虛擬主機(jī)名

查看虛擬機(jī)節(jié)點信息

docker-machine ls

停止虛擬主機(jī)節(jié)點

docker-machine stop 虛擬主機(jī)名

刪除虛擬主機(jī)節(jié)點

docker-machine rm 虛擬主機(jī)名

初始化docker swarm集群

docker swarm init --advertise-addr master的IP地址

slave節(jié)點加入集群

docker swarm join --token [token] [master的IP]:[master的端口]

slave節(jié)點主動離開集群

docker swarm leave

在master上獲取加入集群的token

docker swarm join-token worker

master上創(chuàng)建service舉例:

docker service create --replicas 2 -d -p 8080:80 --name 服務(wù)名 鏡像名

master上查看service信息

docker service ls
docker service ps 你所創(chuàng)建的服務(wù)的ID

在master上刪除service

docker service rm 服務(wù)名

在master上進(jìn)行服務(wù)擴(kuò)容

docker service scale 你的service name=你要的副本數(shù)目

參考文獻(xiàn)

http://www.widuu.com/docker/i...

http://www.widuu.com/docker/i...

https://www.docker.com/commun...

https://www.docker.com/commun...

https://www.jianshu.com/p/096...

https://www.cnblogs.com/atuot...


后記

作者更多的原創(chuàng)文章在此,歡迎觀賞

My Personal Blog

作者更多的SpringBt實踐文章在此:

Spring Boot應(yīng)用監(jiān)控實戰(zhàn)

SpringBoot應(yīng)用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的實踐

初探Kotlin+SpringBoot聯(lián)合編程

Spring Boot日志框架實踐

SpringBoot優(yōu)雅編碼之:Lombok加持


如果有興趣,也可以抽點時間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:

利用K8S技術(shù)棧打造個人私有云 連載文章

從一份配置清單詳解Nginx服務(wù)器配置

Docker容器可視化監(jiān)控中心搭建

利用ELK搭建Docker容器化應(yīng)用日志中心

RPC框架實踐之:Apache Thrift

RPC框架實踐之:Google gRPC

微服務(wù)調(diào)用鏈追蹤中心搭建

Docker容器跨主機(jī)通信

Docker Swarm集群初探

高效編寫Dockerfile的幾條準(zhǔn)則



文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27194.html

相關(guān)文章

  • Docker Swarm的前世今生

    摘要:當(dāng)然此時的局限性較大,比如沒有副本和負(fù)載均衡的概念,這導(dǎo)致服務(wù)無法高可用當(dāng)然也更不存在什么服務(wù)網(wǎng)絡(luò)管理和跨節(jié)點數(shù)據(jù)存儲這些東西沒有服務(wù)模型集群中服務(wù)間關(guān)系和啟動順序編排也很復(fù)雜于是就有了下面的的誕生。 showImg(https://segmentfault.com/img/remote/1460000015317037?w=1885&h=1153); 概述 在我的《Docker S...

    lemon 評論0 收藏0
  • 利用ELK搭建Docker容器化應(yīng)用日志中心

    摘要:概述應(yīng)用一旦容器化以后,需要考慮的就是如何采集位于容器中的應(yīng)用程序的打印日志供運維分析。 showImg(https://segmentfault.com/img/remote/1460000014146680); 概述 應(yīng)用一旦容器化以后,需要考慮的就是如何采集位于Docker容器中的應(yīng)用程序的打印日志供運維分析。典型的比如 SpringBoot應(yīng)用的日志 收集。本文即將闡述如何利...

    周國輝 評論0 收藏0
  • SpringBoot應(yīng)用Docker

    摘要:微服務(wù)的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來創(chuàng)建應(yīng)用,這些應(yīng)用可獨立地進(jìn)行開發(fā)管理和加速。在分散的組件中使用微服務(wù)云架構(gòu)和平臺,使部署管理和服務(wù)功能交付變得更加簡單。 showImg(https://segmentfault.com/img/remote/1460000014332184); 概述 當(dāng)下web服務(wù)端開發(fā)中最火的名詞中絕對有微服務(wù)的一席之地,其也成為當(dāng)下互聯(lián)網(wǎng)后端服務(wù)架...

    U2FsdGVkX1x 評論0 收藏0
  • 利用K8S技術(shù)棧打造個人私有云(連載之:K8S環(huán)境理解和練手)

    摘要:常見的和等都是屬于某一個的默認(rèn)是,而等則不屬于任何。其實其的命令和上面都差不多,這里不一一列出了創(chuàng)建查看啟動情況是一個定義了一組的策略的抽象,可以理解為抽象到用戶層的一個宏觀服務(wù)。其實這個概念在集群里也有,可以參照理解。 showImg(https://segmentfault.com/img/remote/1460000013229549); 【利用K8S技術(shù)棧打造個人私有云系列文...

    kid143 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<