3.5. 在 control plane 中添加计算单元
您可以将 Compute 单元添加到 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services 中,以管理组中的 Compute 节点,并改进大型部署的性能和可扩展性。每个单元都有一个专用的消息队列,运行特定于单元的计算服务和数据库的独立副本,并将实例元数据存储在该单元格中专用于实例的数据库中。
默认情况下,control plane 创建两个单元:
-
cell0:管理全局组件和服务(如计算调度程序和全局编排器)的控制器单元。此单元还包含专用的数据库,用于存储与无法调度到 Compute 节点的实例相关的信息。您无法将 Compute 节点连接到这个单元。 -
cell1:当您不创建和配置其他单元时,计算节点连接到的默认单元。
在创建 control plane 或之后,您可以在 OpenShift (RHOSO)环境的 Red Hat OpenStack Services 中添加单元格。以下流程添加了一个额外的单元 cell2,并使用专用 nova 元数据 API 服务配置每个单元。为每个单元创建一个专用的 nova 元数据 API 服务可提高大型部署的性能以及您的环境的可扩展性。或者,您可以在提供所有单元的顶层部署一个 nova 元数据 API 服务。
流程
-
在工作站上打开
OpenStackControlPlane自定义资源(CR)文件openstack_control_plane.yaml。 为您要添加到 RHOSO 环境的每个新单元创建一个数据库服务器:
apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack-control-plane namespace: openstack spec: secret: osp-secret ... galera: enabled: true templates: openstack: storageRequest: 5G secret: cell0-secret replicas: 1 openstack-cell1: storageRequest: 5G secret: cell1-secret replicas: 1 openstack-cell2: storageRequest: 5G secret: cell2-secret replicas: 1-
templates.openstack:大多数 RHOSO 服务使用的数据库,包括计算服务nova-api和nova-scheduler,以及cell0。 -
templates.openstack-cell1:由cell1使用的数据库。 -
templates.openstack-cell2:由cell2使用的数据库。
-
为您要添加到 RHOSO 环境的每个新单元创建一个具有唯一 IP 的消息总线:
apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack-control-plane spec: secret: osp-secret ... rabbitmq: templates: rabbitmq: override: service: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.85 spec: type: LoadBalancer rabbitmq-cell1: override: service: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.86 spec: type: LoadBalancer rabbitmq-cell2: override: service: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.87 spec: type: LoadBalancer-
RabbitMQ.rabbitmq:大多数 RHOSO 服务使用的消息总线,包括计算服务nova-api和nova-scheduler,以及cell0。 -
rabbitmq.rabbitmq-cell1:由cell1使用的消息总线。 -
rabbitmq.rabbitmq-cell2:要由cell2使用的消息总线。
-
可选:使用自定义 API 公共端点覆盖默认的 VNC 代理服务路由主机名:
nova: apiOverride: route: {} cellOverride: cell1: noVNCProxy: route: spec: host: myvncproxy.domain.name注意主机名必须由数据中心中的 DNS 服务解析,RHOCP 集群和 DNS 实例将请求转发其请求。您不能使用内部 RHOCP
coredns。将新单元添加到
nova服务配置中的cellTemplates配置中:nova: ... template: ... metadataServiceTemplate: enabled: false secret: osp-secret apiDatabaseAccount: nova-api cellTemplates: cell0: hasAPIAccess: true cellDatabaseAccount: nova-cell0 cellDatabaseInstance: openstack cellMessageBusInstance: rabbitmq conductorServiceTemplate: replicas: 1 cell1: hasAPIAccess: true cellDatabaseAccount: nova-cell1 cellDatabaseInstance: openstack-cell1 cellMessageBusInstance: rabbitmq-cell1 conductorServiceTemplate: replicas: 1 metadataServiceTemplate: enabled: true replicas: 1 cell2: hasAPIAccess: true cellDatabaseAccount: nova-cell2 cellDatabaseInstance: openstack-cell2 cellMessageBusInstance: rabbitmq-cell2 conductorServiceTemplate: replicas: 1 metadataServiceTemplate: enabled: true replicas: 1-
template.metadataServiceTemplate.enabled:禁用提供所有单元的单个nova元数据 API 服务。如果您希望只有一个nova元数据 API 服务服务服务,请将此字段设置为true,并从每个单元中删除元数据服务的配置。 template.cellTemplates.cell2:新计算单元的名称。名称限制为 20 个字符,且只能包含小写字母数字字符和-符号。有关您可以为单元配置的属性的更多信息,请查看NovaCRD 的定义:$ oc describe crd nova
-
更新 control plane:
$ oc apply -f openstack_control_plane.yaml -n openstack等待 RHOCP 创建与
OpenStackControlPlaneCR 相关的资源。运行以下命令来检查状态:$ oc get openstackcontrolplane -n openstack NAME STATUS MESSAGE openstack-control-plane Unknown Setup started当状态为 "Setup complete" 时,会创建
OpenStackControlPlane资源。提示将
-w选项附加到get命令的末尾,以跟踪部署进度。可选:通过查看您创建的每个单元的
openstack命名空间中的 pod 来确认 control plane 已被部署:$ oc get pods -n openstack | grep cell2 nova-cell2-conductor-0 1/1 Running 2 5d20h nova-cell2-novncproxy-0 1/1 Running 2 5d20h openstack-cell2-galera-0 1/1 Running 2 5d20h rabbitmq-cell2-server-0 1/1 Running 2 5d20h当所有 pod 都已完成或运行时,会部署 control plane。
可选:确认创建了新的单元:
$ oc exec -it nova-cell0-conductor-0 /bin/bash # nova-manage cell_v2 list_cells +-------+--------------------------------------+----------------------------------------------------------------------------------+------------------------------------------------------------+----------+| Name | UUID | Transport URL | Database Connection | Disabled |+-------+--------------------------------------+----------------------------------------------------------------------------------+------------------------------------------------------------+----------+| cell0 | 00000000-0000-0000-0000-000000000000 | rabbit: | mysql+pymysql://nova_cell0:****@openstack/nova_cell0 | False || cell1 | c5bf5e35-6677-40aa-80d0-33a440cac14e | rabbit://default_user_CuUVnXz-PvgzXvPxypU:****@rabbitmq-cell1.openstack.svc:5672 | mysql+pymysql://nova_cell1:****@openstack-cell1/nova_cell1 | False || cell2 | c5bf5e35-6677-40aa-80d0-33a440cac14e | rabbit://default_user_CuUVnXz-PvgzXvPxypU:****@rabbitmq-cell2.openstack.svc:5672 | mysql+pymysql://nova_cell2:****@openstack-cell2/nova_cell2| False |+-------+--------------------------------------+----------------------------------------------------------------------------------+------------------------------------------------------------+----------+