OpenStack 高可用和災備方案(下)
3. 部分 OpenStack 方案提供者的 HA 方案
3.1 RDO HA
這裡 有完整的 RDO HA 部署方案:
該配置最少需要五臺機器:
- 一臺(物理或者虛擬)伺服器部署 nfs server,dhcp,dns
- 一臺物理伺服器來作為計算節點
- 三臺物理伺服器組成 pacemaker 叢集,建立多個虛機,安裝各種應用
特徵:
- 每個叢集使用三個節點,全部採用 A/A 模式,除了 cinder-volume 和 LBaas。RedHat 不認為 A/P 模式是真正的 HA。
- 提供使用 Pacemaker 或者 Keepalived 兩套方案。
- 將 API 和內部無狀態元件按功能組分佈到各個專有叢集,而不是放在一個叢集上。
- Cinder 這裡標識為 A/A HA,但是不包括 cinder-volume。
- 計算節點 HA 使用 2.4 部分描述的 HA 方式。
Service | Process | Mode | HA stragegy |
---|---|---|---|
Support services | MariaDB – Galera | A/A | HAProxy / app cluster |
Support services | RabbitMQ | A/A | App cluster / service config |
Support services | HAProxy | A/A | Keepalived |
Support services | MongoDB | A/A | App cluster (ceilometer 和 heat 會使用) |
Support services | Memcached | A/A | Service configuration |
Keystone | openstack-keystone | A/A | HAProxy |
Glance | openstack-glance-api | A/A | HAProxy |
Glance | openstack-glance-registry | A/A | HAProxy (向 glance-api 提供 REST API) |
Nova | openstack-nova-api | A/A | HAProxy |
Nova | openstack-nova-cert | A/A | |
Nova | openstack-nova-compute | A/A | 參見 2.4 部分描述 |
Nova | openstack-nova-scheduler | A/A | |
Nova | openstack-nova-conductor | A/A | |
Nova | openstack-nova-novncproxy | A/A | HAProxy |
Cinder | openstack-cinder-api | A/A | HAProxy |
Cinder | openstack-cinder-scheduler | A/A | |
Cinder | openstack-cinder-volume | A/P | No HA (RH 不把 A/P HA 當作HA!)。參考這裡 |
Cinder | openstack-cinder-backup | A/A | |
Neutron | neutron-server | A/A | HAProxy |
Neutron | neutron-dhcp-agent | A/A | Multiple DHCP agents |
Neutron | neutron-l3-agent | A/A | L3 HA |
Neutron | neutron-metadata-agent | A/A | |
Neutron | neutron-lbaas-agent | A/P | 目前的設計不允許 A/A |
Neutron | neutron-openvswitch-agent | A/A | |
Neutron | neutron-metering-agent | A/A | |
Horizon | httpd | A/A | HAProxy |
Ceilometer | openstack-ceilometer-api | A/A | HAProxy |
Ceilometer | openstack-ceilometer-central | A/A | Workload partitioning: tooz + Redis |
Ceilometer | openstack-ceilometer-compute | A/A | |
Ceilometer | openstack-ceilometer-alarm-notifier | A/A | |
Ceilometer | openstack-ceilometer-evaluator | A/A | |
Ceilometer | openstack-ceilometer-notification | A/A | |
Heat | openstack-heat-api | A/A | HAProxy |
關於 MariaDB:
- 它是資料庫管理系統 MySQL 的一個分支,主要由開源社群在維護,採用 GPL 授權許可。開發這個分支的原因之一是:甲骨文公司收購了 MySQL 後,有將 MySQL 閉源的潛在風險,因此社群採用分支的方式來避開這個風險。
- MariaDB 的目的是完全相容MySQL,包括 API 和命令列,使之能輕鬆成為 MySQL 的代替品。除了作為一個Mysql的“向下替代品”,MariaDB包括的一些新特性使它優於MySQL。這篇文章 有 Mysql 和 MariaDB 對比分析。
不由得贊一下 RDO 的文件!想起來之前去拜訪一個 OpenStack 初創公司,CTO 說他們基本上是參考 RDO 做方案,看起來是很有道理的。
3.2 Mirantis OpenStack 6.0 HA 方案:A/A 方案
Mirantis 推薦在生產環境中使用帶至少三個控制節點的 HA:
其中:
- 使用 Pacemaker 控制 Neutron Agent,實現 A/P HA
- API 服務執行在多個節點上,使用 HAProxy 實現負載均衡,提供 VIP
- RabbitMQ A/A
- Mysql A/A
各 HA 元件之間的關係:
各元件被呼叫的方式:
點評:與 RDO 方案一樣,該 HA 也是一個徹底的 HA 方案,消除了整個系統的 SPOF。但是,與 RDO 相比分散式控制節點相比,Mirantis 的集中式控制節點上執行的服務較多,可能會影響其效能,但是在小規模雲環境中節省了硬體成本。
3.3 HP Helion 的 HA 方案:A/A方案
系統組成:(兩節點 HAProxy + Keepalived 叢集) + 第三個控制節點 +(RabbitMQ Cluster + Queue 映象)+(Galera + Mysql)
- OpenStack 客戶端通過 VIP:8774 訪問 nova-api
- HAProxy 將請求轉到 controller 0 上的 nova-api
- nova-api 通過 VIP:3306 訪問 Mysql DB
- HAProxy 將請求轉到 controller 1 上的 Mysql 例項
點評:HP 的 A/A 方案是不徹底的,甚至是有些怪異(為什麼不三個控制節點做一個A/A 叢集呢?),因為至少 Horizon、 Ceilomter 和 Neutron Agents 沒有實現 HA,它只實現了 API,DB 和 MQ 的 HA。
3.4 TCP Cloud OpenStack HA
特徵:
- 系統組成:Pacemaker, Corosync, HAProxy, Galera + IBM 硬體比如 Storwize V7000
- 使用三階段叢集 A/A 叢集
- 提供 99.99% 的服務可靠性
- 沒看到虛機 HA
來源:TCP 官網
3.5 Paypal OpenStack 生產系統 HA
特徵:
- 使用硬體負載均衡 F5
- 使用商業 SDN
- 使用 Monit 監控和重啟各服務
- 使用 Pacemaker
- 用在生成系統,優化進行中
3.6 Oracel OpenStack HA:A/P HA
CRM:Oracel Clusterware(Oracle Grid Infrastructure Release 12c Release 1 or later)
組成:兩個控制節點 + 兩個網路節點組成的叢集。除了網路節點上的元件外,別的元件都部署在控制節點上。
結論:該方案比不上前面幾個公司的方案,因為:
- 只提供兩節點 A/P 方案,可靠性和 CTO 比不上三節點方案
- 需要使用共享儲存比如 NFS 來實現 A/P HA 模式的 DB 和 MQ,容易腦裂
- 不使用免費的 Pacemaker,部署成本增加。
3.7 網易 OpenStack 雲的 HA 方案
好不容易找到一個國內公司的方案,來源在 這裡:
特徵:
- 使用 keepalived 管理的 HAProxy
- 控制節點應該是 A/A HA 方案
- 沒有看到計算節點和網路控制節點的 HA 方案,似乎沒有用 neutron,而是用 nova-network
- 高可用 RabbitMQ 叢集和主備 MySQL,以及 memcache 叢集是額外部署的
3.5 小結
- RDO > Mirantis > HP >> Oracel
- HA 是生產環境中的部署必須有的
- HA 模式方面,A/A HA 方案為主流
- 資料庫方面,Mysql Galera 為主流
- MQ 方面,RabbitMQ 叢集 + 映象訊息佇列為主流
- CRM 方面,Pacemaker 三節點叢集是主流
- 負載均衡方面,HAProxy 是主流
- 網路方面,Neutron 新的 HA 方案包括 VRRP 和 DVR 還未成熟,尚未真正進入生產環境
- 儲存方面,OpenStack 需要解決 cinder-volume 的 A/A 實現
- 計算方面,OpenStack 需要原生的虛機 HA 實現
4. OpenStack DR
狀態:
- 目前沒有詳細的方案,只有一個概要設計,還處於 Gap 識別和補齊階段。
- 具體的實現主要集中在cinder 側元資料(Juno IBM 實現了部分的 Volume Replication 功能)、業務資料同步相關,但是目前進展不樂觀。
作者資訊:劉世民(Sammy Liu),IBM 雲架構師,十餘年IT行業從業經歷,在電信、企業軟體、儲存以及雲端計算等領域做過研發、管理和架構設計等工作。從 2012 年開始學習 OpenStack,對其核心模組有較深入的瞭解;帶領過團隊開發OpenStack模組。