高可用OpenStack(Queen版)集群-1. 集群環境


參考文檔:

  1. Install-guide:https://docs.openstack.org/install-guide/
  2. OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html
  3. 理解Pacemaker:http://www.cnblogs.com/sammyliu/p/5025362.html

 一.環境

1. 組件

組件

版本

Remark

centos

7.4

controller: 4c12g (測試環境,親測8g內存不足以支持全部服務;另外並沒有考慮存儲空間,實際生產環境日志量較大,對后端存儲有一定要求)

 

compute: 8c8g (測試環境)

 

yum源已設置為國內的aliyun:https://opsx.alibaba.com/mirror

openstack

queen

 

ceph

v12.2.4 luminous

 

2. 拓撲(邏輯)

  1. congtroller節點運行keystone,glance,horizon,nova&neutron&cinder管理相關組件,ceph-mon&ceph-mgr(非openstack服務),另外openstack相關的基礎服務;
  2. compute節點運行nova-compute,neutron-linuxbridge-agent,cinder-volume(后經驗證如果后端使用共享存儲,建議部署在controller節點,可通過pacemaker控制運行模式,但寫文檔時,此驗證環境的cinder-volume部署在compute節點)等,另有計算虛擬化kvm,ceph-osd等;
  3. 控制節點網絡:

    管理網絡:含host os管理,api,ceph-public等網絡,如果生產環境允許,建議各邏輯網絡使用獨立的物理網絡,api區分admin/internal/public接口,對客戶端只開放public接口;

    外部網絡:主要針對guest os訪問internet/外部的floating ip;

    租戶(虛機)隧道網絡(與vlan網絡共存2選1):guest os之間通訊的網絡,采用vxlan/gre等方式;

    租戶(虛機)vlan網絡(與隧道網絡共存2選1):guest os之間通訊的網絡,采用vlan方式;

  4. 計算節點網絡:

    管理網絡:含host os管理,api,ceph-public等網絡;

    存儲網絡:存儲集群內部通訊,數據復制同步網絡,與外界沒有直接聯系;

    租戶(虛機)隧道網絡(與vlan網絡共存2選1):guest os之間通訊的網絡,采用vxlan/gre等方式;

    租戶(虛機)vlan網絡(與隧道網絡共存2選1):guest os之間通訊的網絡,采用vlan方式;

  5. 采用self-service-networks提供自助網絡服務,provider networks不支持專有網絡,需要依靠外部基礎設施提供3層路由與增值服務(如lbaas,fwaas等);
  6. 前端采用haproxy做高可用;
  7. 無狀態的服務,如xxx-api,采取active/active的模式運行;有狀態的服務,如neturon-xxx-agent,cinder-volume等,建議采取active/passive的模式運行(因前端采用haproxy,客戶端的多次請求可能會被轉發到不同的控制節點,如果客戶端請求被負載到無狀態信息的控制節點,可能會導致操作請求失敗);自身具有集群機制的服務,如rabbitmq,memcached等采用本身的集群機制即可。

3. 整體規划

Host

IP

Service

Remark

controller01

eth0(Management + API + Message + Storage Public Network): 172.30.200.31

eth1(External Network): 172.30.201.31

eth2(Tunnel Tenant Network):10.0.0.31

 

eth3(Vlan Tenant Network)

1. keystone
2. glance-api , glance-registry
3. nova-api, nova-conductor, nova-consoleauth, nova-scheduler, nova-novncproxy
4. neutron-api, neutron-linuxbridge-agent, neutron-dhcp-agent, neutron-metadata-agent, neutron-l3-agent
5. cinder-api, cinder-schedulera
6. dashboard
7. ceph-mon, ceph-mgr
8. mariadb, rabbitmq, memcached等

1.控制節點: keystone, glance, horizon, nova&neutron管理組件;

2.網絡節點:虛機網絡,L2/L3,dhcp,route,nat等;

3.存儲節點:調度,監控(ceph)等組件;

4.openstack基礎服務

controller02

eth0(Management + API + Message + Storage Public Network): 172.30.200.32

eth1(External Network): 172.30.201.32

eth2(Tunnel Tenant Network):10.0.0.32

 

eth3(Tenant Network)

1. keystone
2. glance-api , glance-registry
3. nova-api, nova-conductor, nova-consoleauth, nova-scheduler, nova-novncproxy
4. neutron-api, neutron-linuxbridge-agent, neutron-dhcp-agent, neutron-metadata-agent, neutron-l3-agent
5. cinder-api, cinder-schedulera
6. dashboard
7. ceph-mon, ceph-mgr
8. mariadb, rabbitmq, memcached等

1.控制節點: keystone, glance, horizon, nova&neutron管理組件;

2.網絡節點:虛機網絡,L2/L3,dhcp,route,nat等;

3.存儲節點:調度,監控(ceph)等組件;

4.openstack基礎服務

controller03

eth0(Management + API + Message + Storage Public Network): 172.30.200.33

eth1(External Network): 172.30.201.33

eth2(Tunnel Tenant Network):10.0.0.33

 

eth3(Tenant Network)

1. keystone
2. glance-api , glance-registry
3. nova-api, nova-conductor, nova-consoleauth, nova-scheduler, nova-novncproxy
4. neutron-api, neutron-linuxbridge-agent, neutron-dhcp-agent, neutron-metadata-agent, neutron-l3-agent
5. cinder-api, cinder-schedulera
6. dashboard
7. ceph-mon, ceph-mgr
8. mariadb, rabbitmq, memcached等

1.控制節點: keystone, glance, horizon, nova&neutron管理組件;

2.網絡節點:虛機網絡,L2/L3,dhcp,route,nat等;

3.存儲節點:調度,監控(ceph)等組件;

4.openstack基礎服務

compute01

eth0(Management + Message + Storage Public Network): 172.30.200.41

 

eth1(Storage Cluster Network):10.0.254.41

 

eth2(Tunnel Tenant Network):10.0.0.41

 

eth3(Tenant Network)

1. nova-compute
2. neutron-linuxbridge-agent
3. cinder-volume(如果后端使用共享存儲,建議部署在controller節點)
4. ceph-osd

1.計算節點:hypervisor(kvm);

2.網絡節點:虛機網絡等;

3.存儲節點:卷服務等組件

compute02

eth0(Management + Message + Storage Public Network): 172.30.200.42

eth1(Storage Cluster Network):10.0.254.42

 

eth2(Tunnel Tenant Network):10.0.0.42

 

eth3(Tenant Network)

1. nova-compute
2. neutron-linuxbridge-agent
3. cinder-volume(如果后端使用共享存儲,建議部署在controller節點)
4. ceph-osd

1.計算節點:hypervisor(kvm);

2.網絡節點:虛機網絡等;

3.存儲節點:卷服務等組件

compute03

eth0(Management + Message + Storage Public Network): 172.30.200.43

eth1(Storage Cluster Network):10.0.254.43

 

eth2(Tunnel Tenant Network):10.0.0.43

 

eth3(Tenant Network)

1. nova-compute
2. neutron-linuxbridge-agent
3. cinder-volume(如果后端使用共享存儲,建議部署在controller節點)
4. ceph-osd

1.計算節點:hypervisor(kvm);

2.網絡節點:虛機網絡等;

3.存儲節點:卷服務等組件

二.基礎環境

1. 設置hosts

# 所有節點保持一致的hosts即可,以controller01節點為例;
[root@controller01 ~]# cat /etc/hosts

2. 設置ntp

# 所有節點保持時鍾同步,以controller01節點為例
[root@controller01 ~]# yum install chrony -y  # 編輯/etc/chrony.conf文件,設置”172.20.0.252”為時鍾源,同時設置3個控制節點作為”備用”時鍾源; # 允許”172.30.200.0/24”網段主機從本地同步時鍾
[root@controller01 ~]# egrep -v "^$|^#" /etc/chrony.conf 
server 172.20.0.252 iburst server controller01 iburst server controller02 iburst server controller03 iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync allow 172.30.200.0/24 logdir /var/log/chrony # 設置開機啟動,並重啟
[root@controller01 ~]# systemctl enable chronyd.service
[root@controller01 ~]# systemctl restart chronyd.service

# 查看狀態
[root@controller01 ~]# systemctl status chronyd.service
[root@controller01 ~]# chronyc sources -v

3. 設置openstack packages

# 安裝queen版yum源
[root@controller01 ~]# yum install centos-release-openstack-queens -y
[root@controller01 ~]# yum upgrade -y

# 安裝openstackclient
[root@controller01 ~]# yum install python-openstackclient -y

# selinux開啟時需要安裝openstack-selinux,這里已將seliux設置為默認關閉
[root@controller01 ~]# yum install openstack-selinux -y

4. 設置iptables

# 全部節點提前統一設置完成iptables,以controller01節點為例; # 初始環境已使用iptables替代centos7.x自帶的firewalld,同時關閉selinux;
[root@controller01 ~]# vim /etc/sysconfig/iptables # mariadb # tcp3306:服務監聽端口; # tcp&udp4567:tcp做數據同步復制,多播復制同時采用tcp與udp; # tcp4568:增量狀態傳輸; # tcp4444:其他狀態快照傳輸; # tcp9200:心跳檢測
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 4444 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 4567:4568 -j ACCEPT -A INPUT -p udp -m state --state NEW -m udp --dport 4567 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT # rabbitmq # tcp4369:集群鄰居發現; # tcp5671,5672:用於AMQP 0.9.1 and 1.0 clients使用; # tcp5673:非rabbitmq默認使用端口,這里用作hapoxy前端監聽端口,避免后端服務與haproxy在1個節點時無法啟動的問題;如果使用rabbitmq本身的集群機制,則可不設置此端口; # tcp15672:用於http api與rabbitadmin訪問,后者僅限在management plugin開啟時; # tcp25672:用於erlang分布式節點/工具通信
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5671:5673 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672:15673 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT # memcached # tcp11211:服務監聽端口;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT # pcs # tcp2224:pcs web管理服務監聽端口,可通過web新建,查看,刪除資源等,端口值在/usr/lib/pcsd/ssl.rb文件中設置; # udp5405:中間件corosync服務集群多播通信端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2224 -j ACCEPT -A INPUT -p udp -m state --state NEW -m udp --dport 5404:5405 -j ACCEPT # haproxy # tcp1080:haproxy監聽端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1080 -j ACCEPT # dashboard # tcp80:dashboard監聽端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT # keystone # tcp35357:admin-api端口; # tcp5000:public/internal-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 35357 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT # glance # tcp9191:glance-registry端口; # tcp9292:glance-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9191 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9292 -j ACCEPT # nova # tcp8773:nova-ec2-api端口; # tcp8774:nova-compute-api端口; # tcp8775:nova-metadata-api端口; # tcp8778:placement-api端口; # tcp6080:vncproxy端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8773:8775 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8778 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 6080 -j ACCEPT # cinder # tcp8776:cinder-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8776 -j ACCEPT # neutron # tcp9696:neutron-api端口; # udp4789:vxlan目的端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9696 -j ACCEPT -A INPUT -p udp -m state --state NEW -m udp --dport 4789 -j ACCEPT # ceph # tcp6789:ceph-mon端口; # tcp6800~7300:ceph-osd端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 6800:7300 -j ACCEPT [root@controller01 ~]# service iptables restart

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM