第 6 章 在没有存储的情况下部署边缘
如果您使用 Object Storage 服务(swift)作为中央位置镜像服务(glance)的后端,您可以在边缘站点部署没有块存储的分布式计算节点集群。因为每个架构的不同角色和网络配置集,以后无法更新没有块存储的站点,使其具有块存储。
以下流程使用 lvm 作为块存储服务(cinder)的后端,在生产环境中不支持。您必须将经认证的块存储解决方案部署为块存储服务的后端。
6.1. 在没有存储的情况下部署边缘节点
您可以部署使用中央位置作为 control plane 的边缘计算节点。此流程演示了如何向部署添加新的 DCN 堆栈,并重复使用现有 heat 堆栈的配置来创建新环境文件。第一个 heat 堆栈在中央数据中心中部署 overcloud。创建额外的 heat 堆栈,将计算节点部署到远程位置。
6.1.1. 配置分布式计算节点环境文件
此流程创建一个新的 central-export.yaml
环境文件,并使用 overcloud 的 plan-environment.yaml
文件中的密码。central-export.yaml
文件包含敏感的安全数据。要提高安全性,您可以在不再需要该文件时删除该文件。
当您为 --config-download-dir
选项指定目录时,请使用 director 部署期间在 /var/lib/mistral
中创建的中央 hub Ansible 配置。不要使用您在 openstack overcloud config download
命令中使用手动生成的 Ansible 配置。手动生成的配置缺少了仅在部署操作期间创建的某些文件。
您必须将镜像上传到中央位置,然后才能将镜像复制到边缘站点;每个镜像的副本必须存在于中央位置的镜像服务(glance)中。
您必须将 RBD 存储驱动程序用于镜像、计算和块存储服务。
流程
生成 DCN 站点所需的配置文件:
openstack overcloud export \ --config-download-dir /var/lib/mistral/central \ --stack central --output-file ~/dcn-common/central-export.yaml
使用适合您的环境的角色为边缘位置生成角色:
openstack overcloud roles generate Compute -o ~/dcn0/dcn0_roles.yaml
如果将 ML2/OVS 用于网络覆盖,您必须编辑您创建的角色文件,使其包含 NeutronDhcpAgent
和 NeutronMetadataAgent
角色:
... - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe + - OS::TripleO::Services::NeutronDhcpAgent + - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaAZConfig - OS::TripleO::Services::NovaCompute ...
如需更多信息,请参阅准备路由的供应商网络。
6.1.2. 将 Compute 节点部署到 DCN 站点
此流程使用 Compute
角色将 Compute 节点部署到名为 dcn0
的可用区(AZ)中。在分布式计算节点(DC)上下文中,此角色用于没有存储的站点。
流程
查看 dcn0/overrides.yaml 中分布式计算(DCN)站点的覆盖
parameter_defaults: ComputeCount: 3 ComputeFlavor: baremetal ComputeSchedulerHints: 'capabilities:node': '0-compute-%index%' NovaAZAttach: false
在
~/dcn0
目录中创建一个名为site-name.yaml
的新文件,其内容如下:resource_registry: OS::TripleO::Services::NovaAZConfig: /usr/share/openstack-tripleo-heat-templates/deployment/nova/nova-az-config.yaml parameter_defaults: NovaComputeAvailabilityZone: dcn0 RootStackName: dcn0
检索 DCN 站点的容器镜像:
sudo openstack tripleo container image prepare \ --environment-directory dcn0 \ -r ~/dcn0/roles_data.yaml \ -e ~/dcn-common/central-export.yaml \ -e ~/containers-prepare-parameter.yaml \ --output-env-file ~/dcn0/dcn0-images-env.yaml
为 dcn0 运行 deploy.sh 部署脚本:
#!/bin/bash STACK=dcn0 source ~/stackrc time openstack overcloud deploy \ --stack $STACK \ --templates /usr/share/openstack-tripleo-heat-templates/ \ -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \ -e ~/dcn-common/central-export.yaml \ -e ~/dcn0/dcn0-images-env.yaml \ -e ~/dcn0/site-name.yaml \ -e ~/dcn0/overrides.yaml
如果部署需要编辑
network_data.yaml
文件的额外边缘站点,您必须在中央位置执行堆栈更新。在部署了边缘位置后,您必须确保在 nova API 数据库中创建 nova
cell_v2
主机映射。在 undercloud 上运行以下命令:TRIPLEO_PLAN_NAME=central \ ansible -i /usr/bin/tripleo-ansible-inventory \ nova_api[0] -b -a \ "{{ container_cli }} exec -it nova_api \ nova-manage cell_v2 discover_hosts --by-service --verbose"
如果扩展边缘站点,您必须再次运行该命令。
您必须在 openstack overcloud deploy
命令中包含用于配置网络配置的 heat 模板。为边缘架构设计需要 spine 和 leaf 网络。如需了解更多详细信息,请参阅 Spine Leaf Networking。