Coreos 安裝及配置

目前國內使用coreos的場景還不多,搜索coreos中文資料基本都大同小異。最近幾日再和其它攻城獅討論問題時,有人提出希望看到一篇介紹coreos和安裝方面的文章,正好本人最近也在研究coreos,也就共享一些經驗。權當拋磚引玉。

  首先咱們明確一下coreos是用來做什麼的。coreos也是一款os,但它是一款面向雲的輕量級OS。coreos是以linux系統爲基礎,爲了建設數據中心的需要,而從linux底層進行了內核裁減。coreos提供了一系列的機制和工具來保證coreos組建的雲環境是安全,可靠和最新的。Coreos設計之初就定位於可以提供一種動態縮放和管理集羣的能力,可以方便管理類似google 這種龐大數據中心的集羣。

  目前支持coreos的雲平臺有: EC2,DigitalOcean, GCE,  Rackspace,  Azure, Brightbox 。 支持coreos的虛擬化軟件有:vagrant, vmware,QEMU,openstack,Eucalyptus, ISO image.

  由此也可以看出國際雲平臺各廠商一致看好coreos,大有席捲互聯網之勢。

  Coreos有三個最重要的工具,etcd,fleet和docker。下面我們分別介紹這三款工具。

  

ETCD

  etcd是一個開源的分佈式鍵值對存儲工具。在每個coreos節點上面運行的etcd,共同組建了coreos集羣的共享數據總線。etcd可以保證coreos集羣的穩定,可靠。當集羣網絡出現動盪,或者當前master節點出現異常時,etcd可以優雅的進行master節點的選舉工作,同時恢復集羣中損失的數據。

  分佈在各個coreos節點中的app,都可以自由的訪問到etcd中的數據。最常見的場景就是etcd存儲cluster的metadata,cache setting, cluster logging, feature flags等。

  etcd的網絡拓撲圖

  etcd有如下的功能:

  • 簡單可靠,API豐富(支持http,jason)
  • 支持客戶端通過SSL認證,保證安全性
  • 每個實例可以支持每秒1000次寫操作
  • 基於RAFT協議完成分佈式操作
  • 通過http輪詢,監聽網絡變化 

 

 

 

 

FLEET

  Fleet是管理coreos和部署app的工具。

  有了fleet,你就可以把整個coreos集羣當做一臺節點來處理。Fleet鼓勵用戶將應用都封裝成輕量級的服務,這些服務很容易在集羣中進行管理和部署。

  devops team通過fleet,就可以集中精力來關注app應用,而不用關心基礎環境如何,哪個container應該部署在哪臺節點上。如果你的app需要5個container同時運行,fleet將保證這5個container在集羣中同時運行。如果某臺節點出現異常,或者需要重啓更新,fleet也會將此臺節點上面的container轉移到其他節點上。

  而這些都是automatic的! 運行和管理container就是這樣so easy!

 

  Fleet的功能如下:

  • 在當前coreos集羣中隨機部署docker container
  • 在集羣中跨主機進行服務分發
  • 負責維護集羣中的服務實例,當服務實例異常時,重新進行任務調度來恢復服務
  • 發現集羣中的各個節點
  • 自動SSH到其它節點來執行job

  Fleet再進行任務調度時,就會讀取etcd存儲的數據。下圖就是Fleet的任務調度流程圖:

Docker

  Docker是一個輕量級的虛擬化工具。使用Docker可以進行應用的快速部署。

  

  以上介紹了Coreos的主要工具,下面我們介紹一下如何使用coreos。因爲支持coreos的平臺很多,這裏無法一一列出所有平臺的安裝方式,我們選取了應用最多的vagrant+coreos方案進行安裝介紹,如果需要了解其他平臺的安裝方式,請參考https://coreos.com/

  在進行安裝和配置coreos之前,我們需要準備一臺linux實體機,注意一定是實體機,因爲使用vmware虛擬出的linux操作系統會和vagrant不兼容,造成失敗。(這不難理解,畢竟真正的數據中心不可能在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:執行 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文件應該是類似於:

複製代碼
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
複製代碼

  現在執行:vagrant up --provision。

  這時,vagrant就開始啓動並且開始自動下載coreos最新版本。目前coreos版本迭代非常快,基本一週會有一個新版本。

  注意:

  在下載完成後,vagrant會自動進行鏡像哈希值校驗。有的ubuntu沒有安裝哈希計算工具,這個時候vagrant會報錯,提示計算工具找不到,此時單獨安裝然後再次執行vagrant up --provision即可。

 

  等看到啓動完成後,coreos集羣就已經啓動完畢了。輸入vagrant ssh core-01 -- -A 就可以登錄到coreos集羣了,執行:fleetctl list-machines 就會看到所有三臺節點。

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