爲了初步瞭解openstack controller ha的工做原理,搭建測試環境進行學習。
在學習該方面知識時,當前採用的操做系統版本是centos 7.1 x64。
首先在ESXi中創建2臺用於測試的虛機,最小化安裝完成centos,配置IP分別爲10.0.0.十二、10.0.0.13,主機名分別爲controller二、controller3。
關閉防火牆:
# systemctl stop firewalld
# systemctl disable firewalld
修改主機名:
# hostnamectl set-hostname controller2
升級系統至最新版本(升級至centos 7.1)並重啓:
# yum update -y
下載pacemaker組件的repo文件:
# cd /etc/yum.repos.d
# wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/network:ha-clustering:Stable.repo
安裝相關軟件:
# yum install -y wget
# yum install -y yum-plugin-priorities
# yum install -y openstack-selinux
# yum install -y ntp
# yum install -y pacemaker corosync resource-agents
# yum install -y crmsh cluster-glue
# yum install -y haproxy
配置/etc/hosts:
10.0.0.11 controller
10.0.0.12 controller2
10.0.0.13 controller3
配置NTP時間同步:
# vi /etc/ntp.conf
找到ntp.conf中指定server的部分,註釋原文,增長測試環境中的NTP服務器(10.0.0.11):
21 #server 0.centos.pool.ntp.org iburst
22 #server 1.centos.pool.ntp.org iburst
23 #server 2.centos.pool.ntp.org iburst
24 #server 3.centos.pool.ntp.org iburst
25 server controller iburst
啓動ntp服務:
# systemctl enable ntpd.service
# systemctl start ntpd.service
驗證ntp工做正常:
# ntpq -c peers
remote refid st t when poll reach delay offset jitter
==============================================================================
*controller LOCAL(0) 6 u 65 128 377 0.213 -0.620 0.040
# ntpq -c assoc
ind assid status conf reach auth condition last_event cnt
===========================================================
1 9233 965a yes yes none sys.peer sys_peer 5
相關資料地址:
高可用實現官網描述地址:
http://docs.openstack.org/ha-guide/controller-ha.html
寫得很好的openstack高可用博文:
http://www.cnblogs.com/sammyliu/p/4741967.html
CRM中的幾個基本概念:
http://www.toxingwang.com/linux-unix/haorlb/1660.html
HAProxy 1.5官方文檔:
http://cbonte.github.io/haproxy-dconv/configuration-1.5.html
HAProxy + Pacemaker實現MySQL的高可用負載均衡:
http://www.zrwm.com/?cat=166
官網centos7安裝openstack文檔(非高可用):
http://docs.openstack.org/juno/install-guide/install/yum/content/neutron-controller-node.html
爲便於快速部署,本文直接粘貼已測試驗證過的配置,有些參數甚至其它擴展的內容都直接略去了。
這即是一種遺憾。故建議上述連接的資料仍是蠻看看,尤爲是官方資料。
我在學習官網資料過程當中,保留了一部分翻譯,粘貼在每篇博文的尾處,不作排版和整理。
--------------------------------------------------------------------------------------------------------
OpenStack無狀態的服務包括nova-api、nova-conductor、glance-api、keystone-api、neutron-api、nova-scheduler。
OpenStack有狀態的服務包括OpenStack數據庫和消息隊列。有狀態服務高可用性取決於你能夠選擇主動/被動(Active/Passive)或主動/主動(Active/Active)配置。
無狀態服務的高可用性,須要提供冗餘實例和負載平衡。
一、主動/被動(Active/Passive)配置
主備概念,主節點出問題時,備節點頂上。通常用VIP實現,使用Pacemaker和Corosync。
二、主動/主動(Active/Active)配置
無狀態使用VIP進行負載平衡,可使用HAProxy軟件。
OpenStack組件分紅3類:
一、使用Python語言寫的API無狀態服務
二、狀態類型服務,如SQL數據庫
三、AMQP,提供openstack內部的有狀態服務
MySQL/Galera集羣在HAproxy以後運行,HAproxy對進來請求進行負載均衡,對外只暴露一個IP地址。
MySQL使用主動/被動模式,以免死鎖的發生。
多個RabbitMQ節點使用oslo.messaging文件進行配置。當一個AMQP節點失效,應用程序自動重連下一個AMQP節點。
Memcached是分佈式緩存,用於存放時效性很短的數據,如token。
html