Rancher集羣化docker管理平臺部署、特性及破壞性測試。

rancher是一個docker集羣化管理平臺,相對於mesos和k8s架構,rancher的部署管理非常簡單方便。並且功能豐富。如下爲本人繪製的邏輯架構圖。

wKiom1ZF--_yvZoQAAKomeiG4e0421.png

1:部署Rancher管理平臺


規劃:

server:10.64.5.184 

agent1:10.64.5.185

agent2:10.64.5.186

agent3:10.64.5.187

agent4:10.64.5.188


部署方式:

docker容器啓動


server端部署  

依賴鏡像:rancher/server:latest   

# docker run -d --restart=always -v /home/heqinqin/data:/var/lib/mysql -p 8080:8080 rancher/server


agent部署

依賴鏡像:rancher/agent:v0.8.2  

瀏覽器訪問server_ip:8080,點擊Add host.執行下圖中sever管理端生成的Add host命令,即可將host添加到server端管理。


wKioL1ZGAX-QMz1tAAEObmjsGbg257.png

添加兩個host之後

wKioL1ZGBBbz3cZXAACpKvrpWic837.png


2:部署stack和service

rancher管理容器是以stack爲一個任務組,在stack下可以有多個service共同提供業務,而每個service可以包含多個容器。

下面來創建一個web集羣,來提供網站服務

1:創建一個Stack,命名爲WEB-Server

wKioL1ZGCBuj62eHAABSpKM3lhc799.png


2:創建一個Service,命名爲Nginx-cluster,運行十個nginx容器。

wKioL1ZGB7TTAj2iAABXGluFhBU686.png

3:點擊start啓動service,開始部署container。

wKioL1ZGB7XyvE5MAAB-pwUx8dU678.png

4:創建一個Load Balance負載均衡器

wKioL1ZGB7aicku_AADQWd-jtZA536.png

5:創建一個Load Balance負載均衡器,設置端口映射,選擇負載均衡的服務。

wKioL1ZGB7eyllKdAACl-OPuFCE834.png

6:WEB-server的服務創建成功。一個stack包含了兩個service。wKiom1ZGB2zzndB7AAElppQy7ZA495.png

7:點擊顯示架構圖,可清楚看到邏輯關係.

wKioL1ZGCjuxoZgCAAFQeP50V00072.png

8:同理創建一個WordPress服務,如下。

wKiom1ZGCk_RcSSlAADAfsbWnmg937.png

wKioL1ZGCpzBdnUjAADd2NbB5No097.png


3:Rancher的相關特性,功能

  • 網絡+負載均衡

依賴鏡像:rancher/agent-instance:v0.5.0 

採用SDN技術所建容器爲虛擬ip地址10段(常規爲docker內部地址172段),各host之間容器採用ipsec隧道實現跨主機通信,使用的是udp的500和4500端口。

啓動任務時,在各個host部署容器之前會起一個Network  Agent容器,負責組建網絡環境。   



  • 監控管理

包括:主機監控+和容器監控

監控內容:CPU+Memory+Network+storge

wKiom1ZGDOzTyjmCAAFk6YpsqZs066.png




  • 用戶管理和訪問控制

支持多種訪問控制權限管理。保證平臺安全。

wKiom1ZGDSOTM2aGAADBsnQkSAc508.png


支持用戶組及權限設置(如下圖設置了運維OPS環境和開發DEV環境,實現管理隔離)。

wKiom1ZGDSTTi42OAAB376K8th0584.png




  • 集成第三方軟件鏡像(官方會持續更新)

wKiom1ZGDeHBbLRxAAGUM2RLpaQ961.png





4:破壞性測試

server是以胖容器方式運行,其中包含了mysql數據庫,經測試,數據庫保存了任務數據以及任務邏輯關係。

破壞server端

1.

操作:在server端和agent端正常運行狀態下,stop掉server容器,

結果:業務不受影響。start重啓容器後恢復管理功能。

2.

操作:將server端容器rm刪除掉(未將mysql數據映射至宿主機),重新再起一個server容器。

結果:1.當前業務不受影響

      2.新server仍然能夠識別和管理各個agent,因爲agent端是連server的ip端口,ip不變就能連上

      3.agent端原有的任務容器的命名和邏輯關係沒有了。

3.

操作:將server端容器rm刪除掉(將mysql數據/var/lib/mysql 映射至宿主機),重新再起一個server容器。

結果:新起的容器能夠識別任務狀態,命名,邏輯關係。恢復到之前的狀態。


破壞agent端

4.

操作:host命令行下刪除掉agent容器

結果:不影響當前業務狀態,server端顯示host失聯,無法對該agent下發任務進行擴容和縮容。

重新啓動agent後恢復正常。

5.

操作:server控制端刪除agent端的業務容器(例如刪除nginx容器)

結果:刪除後數秒內,在另一個host上重新啓動一個新的業務容器。

6.

操作:host命令行下刪除agent端的業務容器(例如刪除nginx容器)

結果:刪除後數秒內,在當前host上重新啓動一個新的業務容器。

7.

操作:host命令行下刪除掉agent容器後,再刪除一個業務容器

結果:server端因爲與agent失聯,導致無法更新該host上的容器變化,沒有新啓動任何容器。


測試未完。。。






---當前結論  

1:server節點需要單獨部署,並相對給予較高性能。

2:server節點宕機不會對現有業務造成影響,但是可能會對後期管理造成影響。

3:需要將server端數據保存至宿主機,並定期備份數據庫數據。

4:server端對host的管理完全是依賴agent容器,當無法聯繫agent容器時,無法得知當前host上容器的變化,在終端顯示的是最後一次agent通知的內容狀態。







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