docker高級應用之集羣與auto scale

之前介紹過docker的單機安裝、多主機網絡互通、如何半自動化更新與回滾代碼,現在在介紹如何進行集羣與auto scale。

集羣通信軟件

這部分功能使用Python語言編寫,基於TCP Socket與SSL加密通信。我們來看下效果展示:

查看所有節點信息:

wKiom1XaeJWSNMuEAAGbpvxDKSM937.jpg

(軟件名是cdocker,分爲客戶端與服務端,服務的名字是cdocker_server.py,客戶端名字是cdocker_client.py,感謝@陳李糧幫我起的名字)

上圖的返回信息顯示當前集羣有3個節點(Node)、存放位置與類型(Metadata)、機器唯一標識(Machines_id)、當前宿主機創建容器數量(Container_now_user)以及最大可以使用容器的數量(Container_max_use)。

這個程序中也包含了部分Mesos等功能,可以計算集羣裏可用資源情況,並顯示具體已使用與可最大使用數量。

查看具體節點裏容器信息

wKioL1Xae0Lx8j_4AAMIfkjINPw007.jpg

集羣模塊還有其他的功能,比如創建集羣、創建auto_scale等,今天我就給大家展示web界面,後臺實現不再詳細介紹。

wKiom1XaeYGAgUA6AAKGdjkmXU0043.jpg

上圖爲集羣總覽界面,包含了當前集羣的部分信息。左上角可以創建集羣:

wKioL1Xae_6BwYJOAAJxn1vysG4915.jpg

wKioL1XafCSjGQi8AADfk5RTbUs699.jpg

我對存放區域設計基本思路是按照服務器的配置來選擇類型。具體如下:

wKiom1XaekCTHjfGAACey0JV8f0053.jpg

界面中auto_scale開始數量與最大數量,以及內存、cpu閥值的設置都很直觀,不再贅述。

點擊info按鈕,可以查看集羣項目信息 、實例信息、公網信息等

wKiom1XaeoLwUeelAAK8Fcqc5KI520.jpg

wKioL1XafLzACnGOAAGsy-_cTLw435.jpg

wKioL1XafOnQZgfRAAI0811C8_8624.jpg

wKioL1XafRDA7t-FAAE32fFZFFc732.jpg

wKioL1XafX6CJrFsAAHI4kwo20o126.jpg

公網ip與防火牆信息都可以動態的調整。

wKioL1XafbDB3LcHAAHQoeHMkAA685.jpg

生效的意思是對新增或者修改後防火牆策略進行生效,主要是放在誤操作。

wKiom1Xae9DwjtcaAAFYifVgCYo590.jpg

這個3個按鈕主要是對集羣進行更新、回滾(這個功能還有點瑕疵,所以先不展示)

下面在介紹一下auto scale

主要是通過自研程序docker_auto_scale.py進行動態擴容與縮減容器數量,這個程序是通過獲取集羣的監控信息以及auto scale設置值與cpu、內存閥值進行綜合判斷後進行操作。

效果如下

比如運行正常(cpu、內存使用量未超過閥值)

wKioL1Xaft2SuKlIAAHDcRE76N8099.jpg

下面修改一下內存閥值

修改前

wKioL1Xafy7C5Qn0AAJMQsUoSFg201.jpg

修改後

wKiom1XafUXA4mKOAAGj8JmLxz0561.jpg

點擊提交

wKiom1XafXjh_2hTAAG2USsc998035.jpg

可以看到內存閥值已經從95%修改爲1%,下面是運行auto scale軟件情況

wKioL1XagACA_a5mAARCyMavqJQ122.jpg可以看到擴容了當前的一倍,從4變爲8個了

wKiom1XafiHzZvxdAAOde8O-2ig562.jpg

下面在運行一遍

wKiom1Xafquh7kDlAAaUCAxkC7g620.jpg

可以看到從8變爲16,翻了一倍

wKioL1XagP6gdaXQAAUWr-7Ti5E866.jpg

另外auto scale縮減也是一樣的效果

wKioL1XahnPCffY7AAk8SB6_-gc738.jpg

wKiom1XahHzSQGt8AAI3Sh59YdU957.jpg

這樣僅是對後端做的操作,但前端訪問肯定是通過ip加url,然後負載到後端real server,我這裏是使用程序+etcd+confd+haproxy+keepalived

web訪問效果爲

wKioL1XagcaTPBeaAAWZGBCvD-E954.jpg

url對應的腳本就是獲取容器的內網ip。

至於有幾個ip裏包含this is test update是我自己弄的測試。

目前通過這樣的集羣與auto scale模式,可以滿足動態擴容與縮減,對於資源最大程度使用、高可用、跨機房高可用等都能滿足。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章