CoreOS官網(wǎng)主頁使用一句話概括其理念:“A new way to think about servers”,以及緊接著的“CoreOS is Linux for massive server deployments”, 表示這是一個新思維方式思考未來服務(wù)器大規(guī)模部署的的Linux服務(wù)器操作系統(tǒng)。
CoreOS宣稱最小化的定制版linux系統(tǒng),具有:
- Linux內(nèi)核,Linux運行所需
- 存在兩個ROOT分區(qū),一個被用作啟動分區(qū),一個被用作更新分區(qū)
更新分區(qū)在更新完成后,自動重新啟動系統(tǒng),當前機器不需要從負載集群中移除,為了保證其它應(yīng)用程序不被打斷,會通過Linux cgroup限制更新過程中的磁盤、網(wǎng)絡(luò)等IO使用。 -
systemd,作為默認系統(tǒng)和服務(wù)管理器,其優(yōu)秀特性:
支持并行化任務(wù);
同時采用 socket 式與 D-Bus 總線式激活服務(wù);
按需啟動守護進程(daemon);
利用 Linux 的 cgroups 監(jiān)視進程;
支持快照和系統(tǒng)恢復(fù);
維護掛載點和自動掛載點;
各服務(wù)間基于依賴關(guān)系進行精密控制。
-
root分區(qū)被設(shè)計成只讀,用以保證數(shù)據(jù)的一致性和更新可用
- CPU、IO等資源隔離,自然要祭出容器(Container)來,CoreOS很明智使用Docker作為容器管理器用以構(gòu)建、發(fā)布應(yīng)用,從這個層面來看,一個應(yīng)用其實就是一個容器。
- etcd組件負責(zé)服務(wù)發(fā)現(xiàn)和配置共享,采用Raft分布式一致性協(xié)議算法,承擔(dān)起,組件之間服務(wù)通信使用。很自然的,容器(Container)之間應(yīng)用、服務(wù)的伸縮,就顯得很簡單了。其基因?qū)用嬷С旨禾匦裕斎唬阋部梢越庾x為云環(huán)境的支持。
看起來,這個系統(tǒng)是為類似于擁有眾多平臺的IT公司準備的。服務(wù)之間,粒度變得很細。
剛剛發(fā)布第一個0.1.0版本,官方總結(jié)特性如下:
- 接口簡單,HTTP+JSON
- 安全,可選擇的SSL通信協(xié)議
- 快速,經(jīng)測試1000s單一實例寫入操作
- 可靠,分布式層面使用Raft協(xié)議
- 堅固,集群的失敗可以從磁盤恢復(fù)
要想體驗,目前看來,最簡單方式,需要在一個虛擬環(huán)境中嘗試一把,當然也是這樣做的。本次體驗,基于Windows 7 64位系統(tǒng)。以下為簡單步驟:
- 先安裝VirtualBox 4.2.16,建議從官網(wǎng)下載。
- Vagrant,這次安裝最新的1.2.7版本,下載地址
- 安裝Git for Windows 1.8.3,可以讓命令下直接使用git命令
-
安裝CoreOS環(huán)境,打開windows命令行環(huán)境:
git clone https://github.com/coreos/coreos-vagrant/
cd coreos-vagrant
vagrant up
vagrant ssh
執(zhí)行完畢 vagrant ssh, 會自動生成一些ssh的一些信息:
Host: 127.0.0.1
Port: 2222
Username: core
Private key: C:/Users/nieyong/.vagrant.d/insecure_private_key
使用熟悉的SSH終端工具登陸即可,這里推薦xshell,不在細述。SSH成功登入,可以看到歡迎信息:

-
體驗一把Docker作為容器管理器
這里快速體驗一把,敲入一下命令:
docker run ubuntu /bin/echo hello world
此時,自動下載Ubuntu系統(tǒng)容器鏡像文件:
更多Docker操作,請參閱其文檔。
-
進程管理systemd的一處使用這里想讓系統(tǒng)啟動時,執(zhí)行一些簡單任務(wù)。終端下輸入
sudo -i
切換到Ubuntu ROOT用戶角色下, 執(zhí)行vi /media/state/units/hello.service,敲入如下內(nèi)容:
[Unit]
Description=My Service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker run ubuntu /bin/sh -c "while true; do echo Hello World; sleep 1; done"
[Install]
WantedBy=local.target
保存之后,我們需要做到模擬重啟:
systemctl restart local-enable.service
現(xiàn)在查看一下日志,可以看到其輸出:
journalctl -u hello.service -f
更多systemd細節(jié),請參考http://www.freedesktop.org/wiki/Software/systemd/。
- 本次淺嘗輒止,到此結(jié)束
總體看,CoreOS最大特色,專門為大規(guī)模服務(wù)器部署定制的Linux精簡系統(tǒng),盡可能的精簡無關(guān)緊要的功能,將操作系統(tǒng)和應(yīng)用程序完全分離,從而降低操作系統(tǒng)和應(yīng)用程序的耦合度,同時解決了現(xiàn)有Linux服務(wù)器在容器資源、權(quán)限管理方面的欠缺。目前若說是顛覆性的操作系統(tǒng),十分牽強,是不是未來,也不好說,但肯定是一種趨勢。
因此,十分值得期待。
進階閱讀: