從運維的角度看CoreOS
CoreOS和自動化運維
CoreOS是一個基于Docker的輕量級容器化Linux發(fā)行版,專為大型數(shù)據(jù)中心而設(shè)計旨在通過輕量的系統(tǒng)架構(gòu)和靈活的應(yīng)用程序部署能力簡化數(shù)據(jù)中心的維護成本和復(fù)雜度。CoreOS作為Docker生態(tài)圈中的重要一員,日益得到各大云服務(wù)商的重視,目前已經(jīng)完成了A輪融資,發(fā)展風(fēng)頭正勁, 一流的云服務(wù)商都會提供對 CoreOS 的支持。
作為國內(nèi)最專業(yè)的OpenStack云服務(wù)商UnitedStack的一名運維工程師,我會更多地從運維的角度來看待這個操作系統(tǒng)。我認(rèn)為,作為一個工程師來說,理性看待一項技術(shù)非常重要。
判斷一個服務(wù)器操作系統(tǒng)優(yōu)秀與否,我會首先看以下方面:
1. 操作系統(tǒng)的服務(wù)管理
服務(wù)管理對于一個操作系統(tǒng)來說非常重要,因為我們生產(chǎn)環(huán)境的操作系統(tǒng)是要跑服務(wù)的,服務(wù)管理的效率直接影響了運維的效率。
CoreOS使用了Systemd來管理機器級別的服務(wù),Systemd是一個功能極其強大的工具,別的不多說,直接上圖,配置從冗長的Shell腳本換成了配置文件式的定義。
狀態(tài)所示的內(nèi)容也比用Sysv的系統(tǒng)豐富了很多(注:上半部分是Sysv的服務(wù)管理,下半部分是Systemd的服務(wù)管理)
在以前的操作系統(tǒng)上,只有對機器級別服務(wù)的管理,沒有對集群級別的服務(wù)管理。對集群級別的服務(wù)管理需要借助第三方工具,比如Puppet和Zabbix。而CoreOS采用了Fleet和Etcd,F(xiàn)leet用于集群服務(wù)管理,etcd用于提供集群服務(wù)狀態(tài)的一致性存儲,這無疑是加分項。
2. 操作系統(tǒng)的包管理
當(dāng)我們運維大量服務(wù)器的時候,包管理非常重要,因為軟件包的管理直接影響了部署,一個方便的包管理會給運維省掉不少事,不用總是讓運維打包,運維會感謝你的。
關(guān)于包管理,我的幾個看法是:
沒有包管理就是最好的包管理,相信運維們都被在不同操作系統(tǒng)上打包需要學(xué)習(xí)多套包管理折磨過。
利用Docker Image打包最大的好處在于隔離的Runtime和文件系統(tǒng),各個服務(wù)之間不容易出現(xiàn)依賴兼容性不一致的情況。
打成Docker Image開發(fā)自己就可以完成,如同Git式的鏡像管理符合開發(fā)人員的思維。
3. 操作系統(tǒng)采用的內(nèi)核
每一個公司都會都會選用不同合適的內(nèi)核,越穩(wěn)定的內(nèi)核越不會出問題,越新的內(nèi)核支持的特性就越多,所以選擇合適的內(nèi)核非常重要。
CoreOS使用了幾乎是最新的穩(wěn)定版的內(nèi)核,擁有了最多的Feature,在內(nèi)核的穩(wěn)定性上我持保留意見。
4. 操作系統(tǒng)的安全機制
如果你運維的服務(wù)器半夜被入侵一次你就知道安全是多么重要了。
- CoreOS的安全機制包括:
- 自動更新:自動更新修復(fù)漏洞一直是運維工程師安全法寶之一,CoreOS自動更新增加了不少便利。
- usr 目錄只有制度權(quán)限,用戶無法寫數(shù)據(jù)到系統(tǒng)目錄下,這意味著封掉了后門的程序的可乘之機。
- Docker的默認(rèn)Iptables設(shè)置省去運維工程師的Iptables配置工作。
- CoreOS提供的Fleet是一個集群服務(wù)管理工具,這改變了我們管理服務(wù)的方式:
- 它在機器和服務(wù)之間構(gòu)建一個虛擬化層,把服務(wù)按照用戶要求調(diào)度到不同的機器上。
- 通過ETCD,F(xiàn)leet可以完成對服務(wù)健康狀態(tài)的管理和監(jiān)控并且根據(jù)這些狀態(tài)來調(diào)度服務(wù)。
采用了Systemd作為機器層面的服務(wù)管理工具,借助Systemd的Unit配置文件,F(xiàn)leet可以完成集群層面的服務(wù)腳本編寫。
Fleet提供了容災(zāi)機制,當(dāng)集群中有Worker因為某些原因掛掉,F(xiàn)leet會把該Worker上的容器調(diào)度到其他可以被調(diào)度的Worker上。
從運維角度來看,F(xiàn)leet是一個相當(dāng)優(yōu)秀的集群服務(wù)管理工具。容災(zāi)機制,集群狀態(tài)管理,Systemd是它的亮點。
寫在最后的話
如果讀者想試一下CoreOS,可以利用API和Userdata在UOS上創(chuàng)建一個CoreOS集群把玩一下,試一下CoreOS集群的災(zāi)備機制,之后的文章會寫相關(guān)的實驗內(nèi)容。我會把CoreOS和自動化運維的專題放到下一篇文章里去。謝謝。
























