之前介紹過docker的單機安裝、多主機網絡互通、如何半自動化更新與回滾代碼,現在在介紹如何進行集羣與auto scale。
集羣通信軟件
這部分功能使用Python語言編寫,基於TCP Socket與SSL加密通信。我們來看下效果展示:
查看所有節點信息:
(軟件名是cdocker,分爲客戶端與服務端,服務的名字是cdocker_server.py,客戶端名字是cdocker_client.py,感謝@陳李糧幫我起的名字)
上圖的返回信息顯示當前集羣有3個節點(Node
)、存放位置與類型(Metadata
)、機器唯一標識(Machines_id
)、當前宿主機創建容器數量(Container_now_user
)以及最大可以使用容器的數量(Container_max_use
)。
這個程序中也包含了部分Mesos等功能,可以計算集羣裏可用資源情況,並顯示具體已使用與可最大使用數量。
查看具體節點裏容器信息
集羣模塊還有其他的功能,比如創建集羣、創建auto_scale等,今天我就給大家展示web界面,後臺實現不再詳細介紹。
上圖爲集羣總覽界面,包含了當前集羣的部分信息。左上角可以創建集羣:
我對存放區域設計基本思路是按照服務器的配置來選擇類型。具體如下:
界面中auto_scale開始數量與最大數量,以及內存、cpu閥值的設置都很直觀,不再贅述。
點擊info按鈕,可以查看集羣項目信息 、實例信息、公網信息等
公網ip與防火牆信息都可以動態的調整。
生效的意思是對新增或者修改後防火牆策略進行生效,主要是放在誤操作。
這個3個按鈕主要是對集羣進行更新、回滾(這個功能還有點瑕疵,所以先不展示)
下面在介紹一下auto scale
主要是通過自研程序docker_auto_scale.py進行動態擴容與縮減容器數量,這個程序是通過獲取集羣的監控信息以及auto scale設置值與cpu、內存閥值進行綜合判斷後進行操作。
效果如下
比如運行正常(cpu、內存使用量未超過閥值)
下面修改一下內存閥值
修改前
修改後
點擊提交
可以看到內存閥值已經從95%修改爲1%,下面是運行auto scale軟件情況
下面在運行一遍
可以看到從8變爲16,翻了一倍
另外auto scale縮減也是一樣的效果
這樣僅是對後端做的操作,但前端訪問肯定是通過ip加url,然後負載到後端real server,我這裏是使用程序+etcd+confd+haproxy+keepalived
web訪問效果爲
url對應的腳本就是獲取容器的內網ip。
至於有幾個ip裏包含this is test update是我自己弄的測試。
目前通過這樣的集羣與auto scale模式,可以滿足動態擴容與縮減,對於資源最大程度使用、高可用、跨機房高可用等都能滿足。