Coreos 的安裝與配置:面向云的輕量級操作系統(tǒng)
【編者的話】Coreos是一款面向云的輕量級OS,以Linux系統(tǒng)為基礎(chǔ),為了建設(shè)數(shù)據(jù)中心的需要,從Linux底層進行了內(nèi)核裁減。Coreos設(shè)計之初就旨在通過輕量的系統(tǒng)架構(gòu)和靈活的應(yīng)用程序部署能力簡化數(shù)據(jù)中心的維護成本和復(fù)雜度。本篇博文基于筆者對CoreOS的研究和應(yīng)用的經(jīng)驗,詳細介紹了基于Vagrant下Coreos 的安裝與配置。
目前國內(nèi)使用CoreOS的場景還不多,搜索CoreOS中文資料基本都大同小異。最近幾日再和其它攻城獅討論問題時,有人提出希望看到一篇介紹CoreOS和安裝方面的文章,正好本人最近也在研究CoreOS,也就共享一些經(jīng)驗。權(quán)當拋磚引玉。
首先咱們明確一下CoreOS是用來做什么的。CoreOS也是一款OS,但它是一款面向云的輕量級OS。CoreOS是以Linux系統(tǒng)為基礎(chǔ),為了建設(shè)數(shù)據(jù)中心的需要,而從Linux底層進行了內(nèi)核裁減。CoreOS提供了一系列的機制和工具來保證CoreOS組建的云環(huán)境是安全,可靠和***的。CoreOS設(shè)計之初就定位于可以提供一種動態(tài)縮放和管理集群的能力,可以方便管理類似google 這種龐大數(shù)據(jù)中心的集群。
目前支持CoreOS的云平臺有: EC2,DigitalOcean, GCE, Rackspace, Azure, Brightbox 。 支持CoreOS的虛擬化軟件有:vagrant, vmware,QEMU,openstack,Eucalyptus, ISO image.
由此也可以看出國際云平臺各廠商一致看好CoreOS,大有席卷互聯(lián)網(wǎng)之勢。
CoreOS有三個最重要的工具,etcd,fleet和docker。下面我們分別介紹這三款工具。
ETCD
etcd是一個開源的分布式鍵值對存儲工具。在每個CoreOS節(jié)點上面運行的etcd,共同組建了CoreOS集群的共享數(shù)據(jù)總線。etcd可以保證CoreOS集群的穩(wěn)定,可靠。當集群網(wǎng)絡(luò)出現(xiàn)動蕩,或者當前master節(jié)點出現(xiàn)異常時,etcd可以優(yōu)雅的進行master節(jié)點的選舉工作,同時恢復(fù)集群中損失的數(shù)據(jù)。
分布在各個CoreOS節(jié)點中的app,都可以自由的訪問到etcd中的數(shù)據(jù)。最常見的場景就是etcd存儲cluster的metadata,cache setting, cluster logging, feature flags等。
etcd有如下的功能:
- 簡單可靠,API豐富(支持http,jason)
- 支持客戶端通過SSL認證,保證安全性
- 每個實例可以支持每秒1000次寫操作
- 基于RAFT協(xié)議完成分布式操作
- 通過http輪詢,監(jiān)聽網(wǎng)絡(luò)變化
FLEET
Fleet是管理CoreOS和部署app的工具。
有了fleet,你就可以把整個CoreOS集群當做一臺節(jié)點來處理。Fleet鼓勵用戶將應(yīng)用都封裝成輕量級的服務(wù),這些服務(wù)很容易在集群中進行管理和部署。
devops team通過fleet,就可以集中精力來關(guān)注app應(yīng)用,而不用關(guān)心基礎(chǔ)環(huán)境如何,哪個container應(yīng)該部署在哪臺節(jié)點上。如果你的app需要5個container同時運行,fleet將保證這5個container在集群中同時運行。如果某臺節(jié)點出現(xiàn)異常,或者需要重啟更新,fleet也會將此臺節(jié)點上面的container轉(zhuǎn)移到其他節(jié)點上。
而這些都是automatic的! 運行和管理container就是這樣so easy!
Fleet的功能如下:
- 在當前CoreOS集群中隨機部署docker container
- 在集群中跨主機進行服務(wù)分發(fā)
- 負責維護集群中的服務(wù)實例,當服務(wù)實例異常時,重新進行任務(wù)調(diào)度來恢復(fù)服務(wù)
- 發(fā)現(xiàn)集群中的各個節(jié)點
- 自動SSH到其它節(jié)點來執(zhí)行job
Fleet再進行任務(wù)調(diào)度時,就會讀取etcd存儲的數(shù)據(jù)。下圖就是Fleet的任務(wù)調(diào)度流程圖:
Docker
Docker是一個輕量級的虛擬化工具。使用Docker可以進行應(yīng)用的快速部署。
以上介紹了CoreOS的主要工具,下面我們介紹一下如何使用CoreOS。因為支持CoreOS的平臺很多,這里無法一一列出所有平臺的安裝方式,我們選取了應(yīng)用最多的vagrant+CoreOS方案進行安裝介紹,如果需要了解其他平臺的安裝方式,請參考https://CoreOS.com/
在進行安裝和配置CoreOS之前,我們需要準備一臺Linux實體機,注意一定是實體機,因為使用vmware虛擬出的Linux操作系統(tǒng)會和vagrant不兼容,造成失敗。(這不難理解,畢竟真正的數(shù)據(jù)中心不可能在windows平臺上面跑虛擬機....)
下面我們開始進行安裝:
首先安裝vagrant。推薦使用ubuntu 64bit。訪問http://www.vagrantup.com/downloads.html下載deb安裝文件。
1、安裝vagrant后,git vagrantfile。
- git clone https://github.com/CoreOS/CoreOS-vagrant.git
- cd CoreOS-vagrant
2、修改config.rb和user-data。
config.rb文件:
- # Size of the CoreOS cluster created by Vagrant
- $num_instances=3
- # Official CoreOS channel from which updates should be downloaded
- $update_channel='stable'
user-data文件:
首先我們需要獲取一個新的token:執(zhí)行 curl http://discovery.etcd.io/new,會得到一個類似https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122的地址。把這個地址替換
- user-data文件:
- discovery: https://discovery.etcd.io/<token>
- 替換為:
- discovery: https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122
替換后的user-data文件應(yīng)該是類似于:
- coreos:
- etcd:
- # generate a new token for each unique cluster from https://discovery.etcd.io/new
- # WARNING: replace each time you 'vagrant destroy'
- discovery: https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122
- addr: $public_ipv4:4001
- peer-addr: $public_ipv4:7001
- fleet:
- public-ip: $public_ipv4
- units:
- - name: etcd.service
- command: start
- - name: fleet.service
- command: start
現(xiàn)在執(zhí)行:vagrant up --provision。
這時,vagrant就開始啟動并且開始自動下載CoreOS***版本。目前CoreOS版本迭代非???,基本一周會有一個新版本。
注意:
在下載完成后,vagrant會自動進行鏡像哈希值校驗。有的ubuntu沒有安裝哈希計算工具,這個時候vagrant會報錯,提示計算工具找不到,此時單獨安裝然后再次執(zhí)行vagrant up --provision即可。
等看到啟動完成后,CoreOS集群就已經(jīng)啟動完畢了。輸入vagrant ssh core-01 -- -A 就可以登錄到CoreOS集群了,執(zhí)行:fleetctl list-machines 就會看到所有三臺節(jié)點。
至此CoreOS集群的安裝就完成了。下篇文章,我將會介紹如何通過service文件來部署docker image.