1. 程式人生 > 其它 >OpenStack HA

OpenStack HA

OpenStack HA

參考:https://www.cnblogs.com/sammyliu/p/4741967.html

OpenStack 部署環境中,各節點可以分為幾類:

  • Cloud Controller Node (雲控制節點):安裝各種 API 服務和內部工作元件(worker process)。同時,往往將共享的 DB 和 MQ 安裝在該節點上。
  • Neutron Controller Node (網路控制節點):安裝 Neutron L3 Agent,L2 Agent,LBaas,VPNaas,FWaas,Metadata Agent 等 Neutron 元件。
  • Storage Controller Node (儲存控制節點):安裝 Cinder volume 以及 Swift 元件。
  • Compute node (計算節點):安裝 Nova-compute 和 Neutron L2 Agent,在該節點上建立虛機。

要實現 OpenStack HA,一個最基本的要求是這些節點都是冗餘的。根據每個節點上部署的軟體特點和要求,每個節點可以採用不同的 HA 模式。但是,選擇 HA 模式有個基本的原則:

  • 能 A/A 儘量 A/A,不能的話則 A/P (RedHat 認為 A/P HA 是 No HA)
  • 有原生(內在實現的)HA方案儘量選用原生方案,沒有的話則使用額外的HA 軟體比如 Pacemaker 等
  • 需要考慮負載均衡
  • 方案儘可能簡單,不要太複雜

OpenStack 官方認為,在滿足其 HA 要求的情況下,可以實現 IaaS 的 99.99% HA,但是,這不包括單個客戶機的 HA。

雲控制節點的 A/A HA 方案

該方案至少需要三臺伺服器。以 RDO 提供的案例為例,它由三臺機器搭建成一個 Pacemaker A/A叢集,在該叢集的每個節點上執行:

  • API 服務:包括 *-api, neutron-server,glance-registry, nova-novncproxy,keystone,httpd 等。由 HAProxy 提供負載均衡,將請求按照一定的演算法轉到某個節點上的 API 服務。由 Pacemaker 提供 VIP。
  • 內部元件:包括 *-scheduler,nova-conductor,nova-cert 等。它們都是無狀態的,因此可以在多個節點上部署,它們會使用 HA 的 MQ 和 DB。
  • RabbitMQ:跨三個節點部署 RabbitMQ 叢集和映象訊息佇列。可以使用 HAProxy 提供負載均衡,或者將 RabbitMQ host list 配置給 OpenStack 元件(使用 rabbit_hosts 和 rabbit_ha_queues 配置項)。
  • MariaDB:跨三個階段部署 Gelera MariaDB 多主複製叢集。由 HAProxy 提供負載均衡。
  • HAProxy:向 API,RabbitMQ 和 MariaDB 多活服務提供負載均衡,其自身由 Pacemaker 實現 A/P HA,提供 VIP,某一時刻只由一個HAProxy提供服務。在部署中,也可以部署單獨的 HAProxy 叢集。
  • Memcached:它原生支援 A/A,只需要在 OpenStack 中配置它所有節點的名稱即可,比如,memcached_servers = controller1:11211,controller2:11211。當controller1:11211 失效時,OpenStack 元件會自動使用controller2:11211。