天天看点

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节点上的计算服务
           

继续阅读