天天看點

CoreOS Architecture Learning

CoreOS Architecture Learning

目錄

1. CoreOS簡介
2. CoreOS部署、安裝、使用
3. CoreOS指令使用      

1. CoreOS簡介

0x1: CoreOS和Docker的關系

我們先來看一張Docker的架構圖

Docker是一種基于"Host OS"作業系統的虛拟化技術,部署Docker的前提是需要底層有一個運作Docker Container的作業系統,從理論上來說,RHEL、ubuntu、debain等系統,而CoreOS就是一款專門為了Docker虛拟化而設計的作業系統

0x2: CoreOS産生

CoreOS是一個基于Docker的輕量級容器化Linux發行版,專為大型資料中心而設計,旨在通過輕量的系統架構和靈活的應用程式部署能力簡化資料中心的維護成本和複雜度

CoreOS Architecture Learning

0x3: CoreOS的特點

1. CoreOS 沒有提供包管理工具,而是通過容器化 (containerized) 的運算環境向應用程式提供運算資源。應用程式之間共享系統核心和資源,但是彼此之間又互不可見。這樣就意味着應用程式将不會再被直接安裝到作業系統中,而是通過 Docker 運作在容器中。這種方式使得作業系統、應用程式及運作環境之間的耦合度大大降低

2. 相對于傳統的部署方式而言,在 CoreOS 叢集中部署應用程式更加靈活便捷,應用程式運作環境之間的幹擾更少,而且作業系統自身的維護也更加容易。

3. CoreOS 采用雙系統分區 (dual root partition) 設計。兩個分區分别被設定成主動模式和被動模式并在系統運作期間各司其職
    1) 主動分區負責系統運作
    2) 被動分區負責系統更新
一旦新版本的作業系統被釋出,一個完整的系統檔案将被下載下傳至被動分區,并在系統下一次重新開機時從新版本分區啟動,原來的被動分區将切換為主動分區,而之前的主動分區則被切換為被動分區,兩個分區扮演的角色将互相對調。同時在系統運作期間系統分區被設定成隻讀狀态,這樣也確定了 CoreOS 的安全性。CoreOS 的更新過程在預設條件下将自動完成,并且通過 cgroup 對更新過程中使用到的網絡和磁盤資源進行限制,将系統更新所帶來的影響降至最低 

4. CoreOS 使用 Systemd 取代 SysV 作為系統和服務的管理工具。與 SysV 相比
    1) Systemd 不但可以更好的追蹤系統程序,而且也具備優秀的并行化處理能力,加之按需啟動等特點,并結合 Docker 的快速啟動能力,在 CoreOS 叢集中大規模部署 Docker Containers 與使用其他作業系統相比在性能上的優勢将更加明顯
    2) Systemd 的另一個特點是引入了 "target" 的概念,每個 target 應用于一個特定的服務,并且可以通過繼承一個已有的 target 擴充額外的功能,這樣使得作業系統對系統上運作的服務擁有更好的控制力 

5. 通過對系統結構的重新設計,CoreOS 剔除了任何不必要的軟體和服務。在一定程度上減輕了維護一個伺服器叢集的複雜度,幫助使用者從繁瑣的系統及軟體維護工作中解脫出來。雖然CoreOS 最初源自于Google ChromeOS,但是從一開始就決定了 CoreOS 更加适合應用于一個叢集環境而不是一個傳統的伺服器作業系統       

Relevant Link:

http://www.infoq.com/cn/articles/what-is-coreos
http://baike.baidu.com/view/10876826.htm?fr=aladdin
http://www.oschina.net/p/coreos
http://www.oschina.net/translate/coreos_and_docker_first_steps?cmp
http://www.infoq.com/cn/news/2014/07/etcd-cluster-discovery      

0x4: CoreOS為大規模雲計算、資料中心叢集而做的改造

1. CoreOS針對Linux核心所做的改造
    1) 存在兩個ROOT分區,一個被用作啟動分區,一個被用作更新分區 
    2) 更新分區在更新完成後,自動重新啟動系統,目前機器不需要從負載叢集中移除,為了保證其它應用程式不被打斷,會通過Linux cgroup限制更新過程中的磁盤、網絡等IO使用。

2. 采用systemd取代傳統的SysV  
    1) 支援并行化任務 
    2) 同時采用 socket 式與 D-Bus 總線式激活服務 
    3) 按需啟動守護程序(daemon)
    4) 利用 Linux 的 cgroups 監視程序 
    5) 支援快照和系統恢複 
    6) 維護挂載點和自動挂載點 
    7) 各服務間基于依賴關系進行精密控制 

3. root分區被設計成隻讀,用以保證資料的一緻性和更新可用

4. CPU、IO等資源隔離
基于容器(Container)的架構實作資源隔離,CoreOS很明智使用Docker作為容器管理器用以建構、釋出應用,從這個層面來看,一個應用其實就是一個容器 

5. etcd元件負責服務發現和配置共享,采用Raft分布式一緻性協定算法,承擔起,元件之間服務通信使用。很自然的,容器(Container)之間應用、服務的伸縮,就顯得很簡單了      
https://coreos.com/      

2. CoreOS部署、安裝、使用

A new way to think about servers
CoreOS is Linux for massive server deployments      

CoreOS is a new Linux distribution that has been rearchitected to provide features needed to run modern infrastructure stacks. The strategies and architectures that influence CoreOS allow companies like Google, Facebook and Twitter to run their services at scale with high resilience.

0x1: CoreOS Installation Based On VirtualBox

CoreOS是一種作業系統架構的産品,CoreOS的安裝需要基于一定的硬體/虛拟機環境上實作

http://www.blogjava.net/yongboy/archive/2013/08/26/403325.html      

0x2: CoreOS Installation Based On VMware

1. Choosing a Channel
//This is a rough sketch that should work on OSX and Linux:
curl -LO http://alpha.release.core-os.net/amd64-usr/current/coreos_production_vmware_insecure.zip
unzip coreos_production_vmware_insecure.zip -d coreos_production_vmware_insecure
cd coreos_production_vmware_insecure
open coreos_production_vmware_insecure.vmx

2. To deploy on an ESXi/vSphere host, convert the VM to OVF
cd coreos_developer_vmware_insecure
mkdir coreos
ovftool coreos_production_vmware_insecure.vmx coreos/coreos.insecure.ovf

3. creates the following files in ../coreos/:
//解壓後的結果
coreos.insecure-disk1.vmdk
coreos.insecure.ovf
coreos.insecure.mf

4. use the vSphere Client to deploy the VM as follows:
    1) menu "File"..."Deploy OVF Template..."
    2) in the wizard, specify the location of the /coresos/ coreos.insecure.ovf created earlier
    3) name your VM
    4) choose "thin provision" for the disk format
    5) choose your network settings
    6) confirm the settings then click "Finish"

5. Cloud-Config

6. Logging in
cd coreos_developer_vmware_insecure
ssh -i insecure_ssh_key [email protected]

7. Replacing the key
cat ~/.ssh/id_rsa.pub | ssh [email protected] -i insecure_ssh_key update-ssh-keys -a user
ssh [email protected] update-ssh-keys -D oem

8. Using CoreOS      
https://coreos.com/docs/running-coreos/platforms/vmware/
https://coreos.com/docs/      

3. CoreOS指令使用

https://coreos.com/docs/quickstart/      

Copyright (c) 2014 LittleHann All rights reserved