讀古今文學網 > OpenStack系統架構設計實戰 > 12.5.3 邏輯架構 >

12.5.3 邏輯架構

Magnum主要包括如下概念。

1.Bay

Bay在Magnum中表示為一個集群,目前通過Magnum可以創建Kubernetes和Swarm集群。

2.BayModel

Baymodel是集群配置模板,保障多級群創建時配置數據一致性。OpenStack採用Flavor定義虛擬機或者物理機的規格,在Magnum中則採用BayModel定義Docker集群的規格,如集群管理節點的Flavor,計算節點的Flavor等。

3.節點

表徵一個物理機或者虛擬機機。

4.Pod

事實上,Pod是從Kubernets引入的一個概念。Pod是Kubernetes的基本調度單元。業務相關的多個容器組成一個Pod,部署在一個物理節點上。如對於互聯網應用,可以將Web前端、應用服務器、後端數據庫等分別運行在容器中,並組成一個Pod。Pod的初衷是希望可以簡化部署和管理,同時Pod內的多個容器可以共享CPU、Volume、Network Namespace/IP和Port空間等資源。受Docker技術的限制,目前部分資源並不能在Pod內的多個業務相關容器間共享,但是Google正在朝這一方向努力。

5.服務

服務也是從Kubernetes引入的概念。服務是Kubernetes的基本操作單元,它對真實應用進行抽像,實現前端訪問與後端應用的解耦。每個服務後端都有多個應用容器,對於一個前端請求,服務selector決定具體承接請求的應用容器。服務對外提供單一訪問接口,前端無須瞭解後端如何運作,也不感知後端應用容器的故障、IP變化等,這給後端擴展和維護帶來了很大的便利。

6.複製控制器(Replication Controller)

複製控制器從分佈式應用高可用、可擴展性角度考慮,保證任何時刻Magnum集群中正在運行的Pod副本的數量。如果系統中Pod副本數量少於預設值,則複製控制器會對Pod進行複製,創建並啟動新的Pod;反之,如果當前Pod數量大於預設值,則複製控制器會「殺死」多餘的Pod。

複製控制器使用預定義的Pod模板創建Pod,而Pod在創建成功後,Pod與Pod模板之間的關聯就解除了。修改Pod模板不會對Pod有任何影響。

複製控制器的主要用法如下。

(1)重調度

當節點故障時,複製控制器確保集群中運行態Pod的數量。

(2)彈性擴展

通過修改複製控制器的副本預設值,可以水平擴展或收縮運行態Pod規模。

(3)滾動升級

使用複製控制器逐個替換Pod版本,可以實現Pod的滾動升級。

7.容器(Container)

在Magnum中即為Docker容器。Magnum的邏輯架構如圖12-14所示。

圖12-14 Magnum的邏輯架構

圖12-15和12-16更清晰地刻畫了Magnum各邏輯概念在Bay中的具體映射。Magnum目前支持兩個Bay:Kubernetes和Swarm,後續會增加對mesos的支持。Magnum通過swagger實現了一套Kubernetes API,可以通過Kubernets的Rest Api與後端的Kubernetes進行交互。同樣的,Bay創建完成後,Magnum也可以選擇與Swarm交互操縱Docker容器。

從圖12-14可以看到,Magnum控制節點主要有兩個部件:API服務器和Conductor。用戶首先通過Magnum的Python客戶端訪問API Rest服務器,之後,請求通過AMQP消息隊列發送到Conductor進程。API Rest服務器可水平擴展,支持以單進程或多進程形態運行。目前,Conductor僅限於單進程,開發者們正試圖增強Conductor的可擴展性。Magnum Conductor進程連接到後端Kubernetes、Swarm API端點,交由後端Bay對像對請求進行處理。

Magnum的特點如下:

圖12-15 Kubernetes Bay

圖12-16 Docker Swarm Bay

1)對Bay、容器、節點、Pod和Service進行抽像。

2)將Kubernets和Docker作為後端容器技術進行集成。

3)與Keystone集成,支持多租戶安全。

4)與Neutron集成,支持Kubernetes多租戶網絡安全。