4.2. 在 Compute 服务中创建单元
使用新单元堆栈部署 overcloud 后,您必须在计算服务内创建单元。要在计算服务中创建单元格,您可以为全局 API 数据库中的单元和消息队列映射创建条目。注意:您必须对创建和启动的每个单元重复这个过程。您可以自动执行 Ansible playbook 中的步骤。如需 Ansible playbook 的示例,请参阅 OpenStack 社区文档中的 创建单元和发现 Compute 节点 部分。社区文档按原样提供,不受正式支持。
流程
获取 control plane 和单元控制器的 IP 地址:
$ CTRL_IP=$(ansible-inventory -i /home/stack/overcloud-deploy/overcloud/config-download/overcloud/tripleo-ansible-inventory.yaml --host <controller_node> | jq -r .ctlplane_ip) $ CELL_CTRL_IP=$(ansible-inventory -i /home/stack/overcloud-deploy/cell1/config-download/cell1/tripleo-ansible-inventory.yaml --host <cell_controller_node> | jq -r .ctlplane_ip)
-
将
<controller_node
> 替换为 Controller 节点的名称,例如controller-0
。 -
将
<cell_controller_node
> 替换为单元 Controller 节点的名称,如cell1-controller-0
。
-
将
在所有 Controller 节点中添加单元信息。此信息用于从 undercloud 连接到单元端点。以下示例使用前缀
cell1
来只指定单元系统并排除控制器系统:(undercloud)$ CELL_INTERNALAPI_INFO=$(ssh tripleo-admin@${CELL_CTRL_IP} \ egrep cell1.*\.internalapi /etc/hosts) (undercloud)$ ansible -i /home/stack/overcloud-deploy/overcloud/config-download/overcloud/tripleo-ansible-inventory.yaml \ Controller -b -m lineinfile -a "dest=/etc/hosts line=\"$CELL_INTERNALAPI_INFO\""
从
transport_url
参数获取控制器单元的消息队列端点,以及来自database.connection
参数的控制器单元的数据库连接:(undercloud)$ CELL_TRANSPORT_URL=$(ssh tripleo-admin@${CELL_CTRL_IP} \ sudo crudini --get /var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf \ DEFAULT transport_url) (undercloud)$ CELL_MYSQL_VIP=$(ssh tripleo-admin@${CELL_CTRL_IP} \ sudo crudini --get /var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf \ database connection | awk -F[@/] '{print $4}')
登录到其中一个全局 Controller 节点并创建单元:
$ ssh tripleo-admin@${CTRL_IP} sudo podman \ exec -i -u root nova_api \ nova-manage cell_v2 create_cell --name cell1 \ --database_connection "{scheme}://{username}:{password}@$CELL_MYSQL_VIP/nova?{query}" \ --transport-url "$CELL_TRANSPORT_URL"
检查单元是否已创建并出现在单元列表中:
$ ssh tripleo-admin@${CTRL_IP} sudo podman \ exec -i -u root nova_api \ nova-manage cell_v2 list_cells --verbose
重启 Controller 节点上的 Compute 服务:
$ ansible -i /usr/bin/tripleo-ansible-inventory Controller -b -a \ "systemctl restart tripleo_nova_api tripleo_nova_conductor tripleo_nova_scheduler"
检查单元控制器服务是否已置备:
(overcloud)$ openstack compute service list -c Binary -c Host -c Status -c State +----------------+-------------------------+---------+-------+ | Binary | Host | Status | State | +----------------+-------------------------+---------+-------+ | nova-conductor | controller-0.ostest | enabled | up | | nova-scheduler | controller-0.ostest | enabled | up | | nova-conductor | cellcontroller-0.ostest | enabled | up | | nova-compute | compute-0.ostest | enabled | up | | nova-compute | compute-1.ostest | enabled | up | +----------------+-------------------------+---------+-------+