龍芯向docker官方提交loongnix作業系統雲映象
http://www.loongson.cn/news/company/587.html
一、“雲”勢來襲
龍芯順應國家自主資訊化推廣的需求,在滿足傳統單機和少量伺服器的部署模式的技術要求的基礎上,投入雲平臺的研發計劃。由於容器技術具有輕量、和CPU依賴小的優點,因此能夠在龍芯平臺上方便的得到移植。目前已經完成了一個完整的叢集平臺的搭建。該方案基於docker 1.12.2,叢集管理工具使用docker官方支援的Swarm,圖形化管理工具基於portainer,支援容器排程、自動擴容、監控管理、容災恢復功能。
Docker 是目前流行的開源應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個映象中,這個映象可以在網路上釋出,通過虛擬化的手段在所有支援docker的平臺上執行。容器是完全使用沙箱機制,相互之間不會有任何介面,從而保證容器內執行的應用的安全。
虛擬化技術(左)和Docker技術(右)的對比
二、docker官方社群上的龍芯映象
龍芯製作了一些標準的Loongnix作業系統映象(基於Fedora21),已經提交docker官方(http://hub.docker.com),屬於首次接受MIPS版本的作業系統docker映象。使用者只要能夠訪問網際網路,就能夠自動化的完成作業系統的拉取和執行。
三、龍芯雲平臺原型方案
Swarm是Docker公司在2014年12月初發布的一套工具,用來管理Docker叢集,它將一群Docker宿主機變成一個單一的,虛擬的主機。Swarm使用標準的Docker API介面作為其前端訪問入口,換言之,各種形式的Docker Client(docker client in go, docker_py, docker,以及DockerUI、Portainer等Web工具)均可以直接與Swarm通訊。Swarm幾乎全部用Go語言來完成開發。Swarm 0.2相比0.1版本增加了一個新的策略來排程叢集中的容器,使得在可用的節點上傳播它們,以及支援更多的Docker命令以及叢集驅動。
Swarm deamon只是一個排程器(Scheduler)加路由器(router),Swarm自己不執行容器,它只是接受docker客戶端傳送過來的請求,排程適合的節點來執行容器,這意味著,即使Swarm由於某些原因掛掉了,叢集中的節點也會照常執行,當Swarm重新恢復執行之後,它會收集重建叢集資訊。下面是Swarm的結構圖:
基於Swarm的龍芯雲平臺架構圖
Swarm只是提供叢集管理伺服器,不提供視覺化的管理頁面,所有操作都需要使用命令列,因此學習成本較高。為了方便管理員的使用,Portainer是一款較為完善的docker容器管理平臺,佔用資源少,支援叢集,支援許可權分配。優點有:支援容器管理、映象管理,輕量級,消耗資源少,基於docker api,安全性高,可指定docker api埠,支援TLS證書認證。支援許可權分配,支援叢集。已經可以基本滿足專有云的使用需求。下圖是主介面:
龍芯雲平臺管理介面
在一個頁面中顯示上百個機器的節點執行狀態,以及每個機器上面執行的應用負載情況,方便管理人員對大規模叢集的監視,在發生故障時能夠快速定位。另外,也能夠對機房中所有機器的使用情況有量化的瞭解,從而做出更合理的硬體投資。
叢集節點執行狀態監視
在每個節點上,指定執行的應用程式,以及CPU、記憶體、網路、檔案系統的資源。只需要幾步操作,就能夠分配一臺新機器、安裝指定的作業系統、部署應用,極大的加快應用程式的部署時間。
容器配置
對容器執行狀態顯示一個詳細的列表,包括物理節點、執行時間等。
容器配置
對容器的執行負載狀態進行監視,以圖形化的報告進行展示。管理效率遠遠大於人工管理。
容器執行負載報告
對作業系統和應用程式進行映象化管理,把應用程式和依賴的庫檔案做為一個整體進行發行和部署,理論上可以使應用程式只發佈一個二進位制,就能夠在所有龍芯作業系統上執行。可以從根本上消除作業系統碎片化問題對於應用開發者造成的負擔。
作業系統映象管理
在叢集管理工具的Web頁面上就可以直接登入執行機器的命令列,不再像以前需要ssh方式登入,方便管理員對於上百臺機器的快速管理。一切就像是在這臺機器本地操作相同。
容器控制檯
四、Swarm和Kubernetes的對比
Swarm是Docker官方開發的原生叢集工具,Kubernetes是Google開發的。兩者在很多功能是等價的。經過我們的調研,Kubernetes相比之下設計更為複雜,適用於叢集的精細管理,複雜的網路場景。同時,Kubernetes也有明顯的劣勢:學習曲線陡峭,同時運維的成本相對較高。
針對龍芯當前的發展階段和使用情況,總的來說,龍芯首先應該在私有云和行業環境中來使用,對容器的可靠性要求遠低於公有云,因此swarm更輕量、易學習的優勢就比較合適了。經過一段時間,如果是完全基於龍芯搭建公有云,或者需要提供高可靠服務的場景,Kubernetes可能更合適一些。
總之,目前龍芯雲平臺基於的Swarm方案是足夠滿足一般的OA系統和資訊處理應用的,並不一定使用Kubernetes。
五、總 結
龍芯雲平臺提供了全套移植過程的技術文件,做了一個較為完善的原型平臺,我們點點滑鼠即可輕鬆部署一個強大的管理docker平臺。經過對docker管理平臺的分析,大家一定有了自己的認識,有條件可以自己嘗試下部署,如果有新的心得體會或者更好的平臺記得反饋給我們,或者在龍芯論壇(http://ask.loongnix.org)上提供新的技術成果,一起把龍芯軟體生態完善起來!
六、參考文獻
搭建龍芯雲平臺的具體過程,以可參考以下社群技術文件:
l (Docker系列之一)龍芯Fedora21平臺上解決docker 1.12.2退出問題
http://ask.loongnix.org/?/article/80
l (Docker系列之二)龍芯Fedora21平臺製作docker映象,並且解決vi亂碼問題
http://ask.loongnix.org/?/article/81
l (Docker系列之三)龍芯Fedora21平臺製作feodra21-tools docker映象
http://ask.loongnix.org/?/article/82
l (Docker系列之四)龍芯Fedora21平臺製作feodra21-apache-php-mysql 映象
http://ask.loongnix.org/?/article/85
l (Docker系列之五)龍芯Fedora21平臺製作feodra21-loongson-app 映象
http://ask.loongnix.org/?/article/86
l (Docker系列之六)龍芯平臺搭建容器管理工具dockerUI
http://ask.loongnix.org/?/article/84
l (Docker系列之七)龍芯Fedora21平臺上傳docker映象到docker hub
http://ask.loongnix.org/?/article/87