Mirantis Cloud Platform之MCP架構

源於官方文檔 根據自己理解翻譯而來。
MIRANTIS雲平臺是一個綜合的私有云軟件棧,具有可靠、彈性、可擴展的特點,包括openstack(裸機和虛擬機),kubernetes(容器),ceph(塊存儲和對象存儲),opencontrail(面向openstack集羣)和Calico(面向K8s) SDN。

架構

部署、生命週期管理(LCM)

設計要點

組件 描述
DriveTrain MCP生命週期管理(LCM)系統的總稱。通過一套CI/CD管道實現持續集成、持續測試以及持續交付,它主要包括以下生命週期管理工具:(1)SaltStack:一個靈活的、可擴展的部署和配置管理工具,用於MCP集羣生命週期管理;(2)Reclass:節點分類器,配合SaltStack,提供節點的配置管理;(3)Gerrit:提供 Git 庫和代碼檢視管理系統,保存源代碼、SaltStack 程序(formulas)、Reclass 模型(models);(4)Jenkins:任務自動化工具,它檢測提交到 Gerrit 的針對 MCP 集羣配置的變化,然後通過執行一系列 jobs,將相應的 SaltStack 程序和Reclass 模型應用到 MCP 集羣,實現MCP集羣升級和更新時的持續集成和持續交付功能;(5)Repos:MCP集羣部署和運行所需的軟件庫。
MCP clusters 使用DriveTrain可以部署和管理多個不同類型的MCP集羣。一個MCP集羣可以是一個openstack環境或者一個Kubernetes集羣。不同集羣可以在一個環境中共存,通過同一組監控和生命週期管理組件控制。
DevOps 門戶 爲雲運營商提供一個接入點,使其能訪問通過DriveTrain和StackLight提供的功能。
日誌監控告警以及StackLight 對應用關鍵數據進行收集、分析和可視化,並通過一個配置的通信系統進行告警和提示,如email。
Metal-as-a-Service (MaaS) 使得管理物理服務器如同虛擬機一樣簡單。
Keepalived和HAProxy保證了高可用性 Keepalived是一個提供虛擬IP地址的路由軟件,HAProxy是一個爲網絡連接提供負載平衡的軟件。
Mirantis OpenContrail(可選) 可作爲MCP中的一個網絡虛擬化解決方案
Ceph 集羣(可選) 提供openstack環境的分佈式對象存儲

自動化部署

MCP使用自動化工具SaltStack加上Reclass和Cookiecutter工具來部署MCP集羣。

SaltStack and Reclass模型

在MCP中。每一個準則(配方 formula)定義一個MCP集羣的組件,如MySQL,RabbitMQ,openstack服務等。SaltStack用於執行每個配方。使得雲運營商可以在一個集羣中結合多個所需組件,從而實現服務之間沒有相互干擾以及可在多個場景中重用。
Reclass是一個外部節點分類器(ENC),使得雲運營商可以在MCP集羣內配置中結合多個classes來管理節點,可通過tags或者categories來查看classes。
三類classes:
image

Service class System class Cluster class
定義MCP的組件,如RabbitMQ, OpenStack services, MySQL等,服務類在SaltStack中以.deb包的格式提供在Salt主節點 SaltStack配方由執行部分(定義需要部署所需命令)和元數據(參數如IP地址,域名等)組成。服務類繼承來自系統和集羣類的元數據。 定義節點,如計算節點,控制節點,以及這些節點上所需的組件。系統類是服務類以某種方式集成在一起從而提供可用系統的集合。系統類以git庫的形式提供,必須通過clone到SaltStack主節點來使用,系統類從集羣類繼承元數據。 集羣類定義集羣,如demo或者生產集羣。系統類根據部署需求結合成集羣類。一組預先定義好的環境參數(定義文件)在git庫中提供,需要clone到主節點使用。另外,可以通過Cookiecutter從模板來生成集羣類。這種方法顯著加快了元數據預存速度

SaltStack庫結構

庫結構允許工程師存儲和部署多個MCP集羣定義文件,這有益於多站點(multi-site)部署以及多雲(multi-cloud)部署,使得在系統層和服務層使用相同元數據的不同的雲類型共存。重用系統和服務級別的元數據可以防止數據隨着時間的推移而退化,並提供了一致性和按需定製系統和服務的能力。
image

部署模板

Cookiecutter 模板可簡化部署過程
Cookiecutter 用於創建project模板,然後根據用戶指定數據來使用這些模板部署不同類型的MCP集羣,一個模板可以是一個demo MCP集羣或者一個production MCP集羣。

庫規劃

MCP生命週期管理工具以存儲在APT中的源代碼和存儲在Git庫中的配置元數據提供。Salt主節點要求連接APT和Git庫,環境中的其他節點只要求連接APT庫。
可以直接使用這些庫爲openstack環境提供互聯網連接,但是出於安全考慮,環境不提供互聯網連接,需要爲API和Git庫配置本地庫鏡像。另一種方法是僅僅在創建APT庫鏡像的時候爲Salt主節點提供到Git庫的互聯網連接。

本地鏡像設計

可以將APT庫和Git庫鏡像以虛擬機的形式與Maas和Salt主節點放置在同一個KVM節點上。如下圖:
image
需要設置本地庫鏡像,並按庫列表中的描述配置APT庫。如果環境與網絡隔離,name需要配置Git庫,並讓Salt主節點與該庫連接。

Infrastructure node planning

在大型數據中心,往往要求管理流和工作流分離於不同的服務器上。分別稱爲control plane和data plane。
在MCP中,控制plane位於infrastructure節點上。該節點上運行所有部署要求的組件,生命週期管理以及MCP集羣監控。一種特定類型的infrastructure節點稱爲foundation 節點,提供裸機服務的稱爲Metal-as-a-Service 。
Infrastructure節點運行MCP集羣部署、生命週期管理、監控所需的所有服務。
注意:If you use Open vSwitch Neutron plugin for tenant networking, all networking components run on the infrastructure nodes as virtual machines.
+ infrastructure and foundation node services mapping with Mirantis OpenContrail:
image
+ infrastructure and foundation node services mapping for tenant networking with Neutron Open vSwitch:
image

Multi-site and multi-cluster架構

MCP能夠使用相同的DriveTrain和infrastructure節點安裝配置來管理多個不同的集羣。如openstack環境和kubernetes集羣。

DriveTrain

DriveTrain包含組件:
+ 生命週期管理工具,實現雲管理員修改雲環境配置。是CI/CD pipeline的一部分,包含:SaltStack Reclass、
Jenkins、
MCP registry、
Gerrit
+ 運營支撐系統(OSS)工具,支持雲平臺日常運維,包含:
Cloud Intelligence service (CIS)、
Cloud Health service、
Runbooks

CI/CD pipeline

MCP持續集成(CI)和持續部署(CD)pipeline用於傳輸MCP集羣的配置改變和更新。包含:
Gerrit
存儲源代碼,SaltStack formulas,以及 Reclass 模型, 並提供代碼重現能力。
Jenkins
檢測通過Gerrit提交到MCP集羣的配置更改,執行jobs,jobs包括運行SaltStack formulas and Reclass models來執行修改。
MCP Registry
存儲軟件工件,如Docker鏡像和Debian packages。
CI/CD pipeline流程如下:
image
1. 管理員提交一個Reclass model 或者一個 SaltStack formula的修改到Gerrit;
2. Jenkins根據改變模擬環境配置還是產品環境配置,如果是模擬環境,則在提交的時候執行改變,如果是production環境,則在合併改變到配置以後再執行部署job;
3. Jenkins從Gerrit調用要求的 SaltStack formulas和 Reclass models,並從MCP註冊表中調用artifacts(工件);
4. SaltStack對雲環境應用所做改變。

規劃openstack環境

虛擬控制plane(VCP)規劃

VCP提供管理雲所需的所有服務和組件,當規劃一個打在VCP服務的物理或者虛擬服務器,需要考慮openstack環境的大小,冗餘,硬件要求等。
爲支持高可用和容錯性,VCP至少需要部署在3個物理節點上。
VCP 服務:

Platform Service
OpenStack Identity service (Keystone)、 Image service (Glance)、 Compute service (Nova)、 Networking service (Neutron OVS or OpenContrail plugin)、 Dashboard (Horizon)、 (可選)Block Storage service (Cinder)
Bare-metal provisioning MaaS
Configuration management service
Storage Ceph: Ceph monitors、 RadosGW
Networking OpenContrail: Control Config DB、 Config、 Analytics、 DB
Back-end services Proxy (NGINX)、 GlusterFS、 RabbitMQ、 MySQL/Galera
(可選)Logging, Metering, and Alerting (LMA) StackLight

Virtual control plane requirements

可運行500個virtual實例的最小化配置要求:

組件 節點數 vCPU 虛擬內存(GB) 虛擬磁盤(GB) vNICs Scale
RabbitMQ 3 4 8 50 2 水平擴展或者垂直擴展均可能降低性能
MySQL 3 4 8 80 2 支持水平或者垂直擴展,水平擴展限制在5以內
OpenContrail Controllers 3 4 16 50 2 用於Cassandra數據庫的水平擴展,不包括分析
OpenContrail Analytics 3 4 12 300 2 支持水平和垂直擴展,Cassandra數據庫分析
LMA 3 8 16 300 2 垂直擴展
openstack dashboard 2 4 8 50 3 水平和垂直
openstack controllers 3 8 16 100 4 水平: Compute service, Image service, Block Storage service, Identity service, Orchestration service, Hadoop service, 垂直: HAProxy
GlusterFS 3 2 4 300 2 Vertical
Benchmark 1 2 4 80 2 Vertical

計算節點規劃

header 1 header 2
overhead 組件 附加系統資源開銷的組件,如DVR/vRouter和Hypervisor。一般情況,DVR/vRouter使用2 x 10 Gbps NICs的計算節點。
HW組件 Compute profile represents the hardware specification that you require for the specified number of virtual machines and the selected flavor. The adjusted version of the compute profile represents the hardware specification after correction to overhead components。
Oversubscription ratio 爲單個物理資源實體分配的虛擬資源數量。比如對於標準工作流,每一個超線程CPU分配8個vCPU,以及1:1的內存和磁盤比例,例如web應用部署環境。
Flavor definitions Defines a virtual machine flavor that you plan to use in your deployment. The flavor depends on the workloads that you plan to run. In the spreadsheet, the OpenStack medium virtual machine is provided as an example.
Flavor totals Defines the final hardware requirements based on specified parameters. Depending on the number and the virtual machine flavor, you get the number of compute nodes (numHosts) with the hardware characteristics.
Resource utilization per compute node 定義每個計算節點上的內存、處理、存儲資源的利用率. Mirantis 推薦vCPU, vMEM, and vDISK are utilized at least at 50 %, so that your compute nodes are properly balanced. If your calculation results in less than 50 % utilization, adjust the numbers to use the resources more efficiently.

網絡規劃

支持的技術:
+ OpenContrail
+ Neutron Open vSwitch

Mirantis 推薦使用OpenContrail,僅僅OpenContrail支持的功能:
+ Service chaining
+ MPLS over UDP/GRE with vMX router
+ Multi-site SDN
+ Network analytics

openstack底層網絡
image

OpenContrail傳輸flow

用戶接口和API
image

SDN
image

存儲
image

存儲規劃

所需存儲類型:
+ 鏡像存儲
+ 臨時塊存儲
+ 持久塊存儲
+ 對象存儲

Decapod部署ceph集羣

推薦使用ceph生命週期管理工具Decapod
image

Decapod功能:
+ 遠程節點部署ceph
+ 添加或者刪除ceph角色
+ 升級、更新、移除集羣
+ 管理ceph磁盤分區

Decapod不包含的功能:
+ 爲PXE提供一個服務器
+ 管理DHCP
+ 用各種方式管理網絡
+ 管理host OS包
+ 部署OS
+ 管理Ceph以外的磁盤分區

Decapod的data models:
+ 用戶model
+ 角色model:一個角色有名稱屬性和權限屬性。角色就是命名的權限集合。Decapod有兩種權限(API權限和playbook權限)
+ 服務器model:定義ceph所用的服務器
+ 集羣model
+ Decapod playbooks

Supported Ceph packages

鏡像存儲規劃

openstack使用Glance提供鏡像存儲服務,MCP支持的Glance後端:
+ Ceph集羣
+ GlusterFS
+ OpenStack Object Storage (Swift)

塊存儲規劃

openstack Cinder,MCP產品支持的cinder後端:
+ Cinder drivers
+ Ceph cluster

對象存儲規劃

MCP對象存儲包括:
+ Ceph
+ Swift(適用於多租戶、多區域、Amazon S3)

日誌,計量,告警(LMA)規劃

LMA工具鏈:StackLight
可監控OpenStack, OpenContrail, Kubernetes, 和Ceph
StackLight隨着MCP一起發佈,並自動安裝,通過部署一個支持的Reclass模型來激活,支持的Reclass模型通過Cookiecutter項目來創建,Cookiecutter包括的Reclass模型模板如下:
+ 針對標準Kubernetes control plane: Kubernetes_mk
+ 針對使用Contrail SDN的openstack control plane: Openstack_mk_contrail
+ 針對使用Open vSwitch networking的openstack control plane: Openstack_mk_ovs

StackLight組件包括:
+ Log Collector
+ Local Metric Collector
+ Remote Metric Collector
+ Aggregator
+ collectd
+ influxdb
+ Grafana
+ elasticsearch
+ kibana
+ sensu
+ redis
+ rabbitMQ
+ Uchiwa
+ Nagios (可選)
+ Horizon

StackLight工作流:
StackLight工作流

StackLight Log Collector:
image

StackLight Metric Collector:
image

StackLight進一步可查看官網

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