Nova Cell V2
- 一.概述
- 二.結構
- 三.Cell 相關資料庫表
- 四.部署
-
- 1.安裝規劃
- 2.安裝流程
一.概述
OpenStack 在控制平面上的性能瓶頸主要在 Message Queue 和 Database 。 尤其是 Message Queue , 随着計算節點的增加 , 性能變的越來越差 。 為了應對這種情況 , Nova 很早之前提出來 nova-cell的解決方案 。起初是cell v1版本,由于架構負雜,自 Newton 版本引入cell v2。
二.結構
(1)nova-api 依賴 nova_api 和 nova_cell0 兩個資料庫 。
(2)nova-scheduler 服務隻需要在 api 層面上安裝 ,cell 不需要參數排程 。 這樣實作了一次排程就可以确
定到具體在哪個 cell 的哪台機器上啟動
(3)cell 裡面隻需要安裝 nova-compute 和 nova-conductor 服務 , 和其依賴的 DB 和 MQ
(4)api 上面服務會直接連接配接 cell 的 MQ 和 DB
三.Cell 相關資料庫表
(1)cell_mappings 表 cell 的 Database 和 Mesage Queue 的連接配接 。 用于和子 cell 通訊
(2)host_mappings 是用于 nova-scheduler, 可以确認配置設定到的機器 。 這裡其實也有一個坑 , 之前 nova-compute 啟動起來 , 就可以直接使用了 ,cell v2 之後 , 就需要手動運作 nova-manage cell_v2
discover_host , 把 host mapping 到 cell_mappings 表裡面 , 那台計算節點才會加入到排程中 。
(3)instance_mappings 表裡有所有 instance id, 這樣在查詢 instance 時 , 就可以從這個表裡查到他所在的 cell, 然後直連 cell 拿到 instance 具體資訊 。
四.部署
1.安裝規劃
節點 | 服務 | 備注 |
---|---|---|
controller | nova-api、MQ、DB、nova-scheduler、nova-conductor | |
cell | MQ、DB、nova-conductor | 也可以和計算節點裝在一起 |
compute | nova-compute |
2.安裝流程
(1)controller node 略,按照官網裝即可
(2)cell node
# 基礎服務(略)
# 關閉selinuex和防火牆(略)
# 時間同步(略)
# 互信(略)
# mysql(略)
# rabbitmq(略)
# nova-conductor install
yum -y install openstack-nova-conductor openstack-nova-api openstack-utils # 安裝openstack-nova-api是為了解決依賴報錯
# 建庫
mysql -uroot -p123456 -e "CREATE DATABASE nova;"
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456';"
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456';"
# 配置,注意,api_database用的是控制節點資料庫,database用的是cell節點的nova資料庫,transport_url用的是cell節點的MQ
openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:[email protected]/nova_api
openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:[email protected]/nova
openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected]
# 控制節點執行,注意資料庫、MQ填的都是cell節點的
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --verbose --name $cell_name \
# --database_connection mysql+pymysql:/$cell_nova_user:$cell_nova_pass@$cell_node/$cell_nova_db \
# --transport-url rabbit://$cell_mq_user:$cell_mq_pass@$cell_node" nova
# 在cell節點上初始化nova資料庫
su -s /bin/sh -c "nova-manage db sync" nova
# 啟動服務
systemctl enable openstack-nova-conductor.service
systemctl start openstack-nova-conductor.service
(3) compute node
# 基礎服務(略)
# 關閉selinuex和防火牆(略)
# 時間同步(略)
# 互信(略)
# nova-compute install
yum -y install openstack-utils openstack-nova-compute openstack-nova-spicehtml5proxy
# 配置(篇幅限制隻粘出了注意或改動的地方,其餘請參考部署完整腳本)
openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:[email protected] # 注意,此處是cell節點的MQ
# 啟動服務
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
systemctl enable openstack-nova-spicehtml5proxy
systemctl restart openstack-nova-spicehtml5proxy
# cell節點上執行,發現新cell的計算節點
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
#neutron install
yum install -y openstack-neutron openstack-neutron-openvswitch openvswitch which ebtables ipset
# 配置(篇幅限制隻粘出了注意或改動的地方,其餘請參考部署完整腳本)
openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:[email protected] # 注意,此處是controller節點的MQ
# 啟動服務
systemctl start openvswitch
systemctl enable openvswitch
# 建ovs網橋
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex ${ext_netcard_name}
ovs-vsctl add-br br-tun
# 啟動服務
systemctl restart openstack-nova-compute.service
systemctl enable neutron-metadata-agent neutron-l3-agent neutron-openvswitch-agent
systemctl restart neutron-metadata-agent neutron-l3-agent neutron-openvswitch-agent
# 注意,如果是已有環境添加cell需要重新開機controller節點上的計算服務