天天看點

Nova Cell V2一.概述二.結構三.Cell 相關資料庫表四.部署

Nova Cell V2

  • 一.概述
  • 二.結構
  • 三.Cell 相關資料庫表
  • 四.部署
    • 1.安裝規劃
    • 2.安裝流程

一.概述

OpenStack 在控制平面上的性能瓶頸主要在 Message Queue 和 Database 。 尤其是 Message Queue , 随着計算節點的增加 , 性能變的越來越差 。 為了應對這種情況 , Nova 很早之前提出來 nova-cell的解決方案 。起初是cell v1版本,由于架構負雜,自 Newton 版本引入cell v2。

二.結構

Nova Cell V2一.概述二.結構三.Cell 相關資料庫表四.部署
Nova Cell V2一.概述二.結構三.Cell 相關資料庫表四.部署

(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節點上的計算服務
           

繼續閱讀