2.4. 在 control plane 中添加计算单元


您可以使用单元将大型部署中的 Compute 节点划分为组。每个单元都有一个专用的消息队列,运行特定于单元的计算服务和数据库的独立副本,并将实例元数据存储在该单元格中专用于实例的数据库中。

默认情况下,control plane 创建两个单元:

  • cell0 :管理全局组件和服务(如计算调度程序和全局编排器)的控制器单元。此单元还包含专用的数据库,用于存储与无法调度到 Compute 节点的实例相关的信息。您无法将 Compute 节点连接到这个单元。
  • cell1 :当您不创建和配置其他单元时,计算节点连接到的默认单元。

在创建 control plane 或之后,您可以在 OpenShift (RHOSO)环境的 Red Hat OpenStack Services 中添加单元格。以下流程添加了一个额外的单元 cell2,并使用专用 nova 元数据 API 服务配置每个单元。为每个单元创建一个专用的 nova 元数据 API 服务可提高大型部署的性能以及您的环境的可扩展性。或者,您可以在提供所有单元的顶层部署一个 nova 元数据 API 服务。

流程

  1. 在工作站上打开 OpenStackControlPlane 自定义资源(CR)文件 openstack_control_plane.yaml
  2. 为您要添加到 RHOSO 环境的每个新单元创建一个数据库服务器:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack-control-plane
      namespace: openstack
    spec:
      secret: osp-secret
      ...
      galera:
        enabled: true
        templates:
          openstack: 
    1
    
            storageRequest: 5G
            secret: cell0-secret
            replicas: 1
          openstack-cell1: 
    2
    
            storageRequest: 5G
            secret: cell1-secret
            replicas: 1
          openstack-cell2: 
    3
    
            storageRequest: 5G
            secret: cell2-secret
            replicas: 1
    Copy to Clipboard Toggle word wrap
    1
    大部分 RHOSO 服务使用的数据库,包括计算服务 nova-apinova-scheduler,以及 cell0
    2
    cell1 使用的数据库。
    3
    cell2 使用的数据库。
  3. 为您要添加到 RHOSO 环境的每个新单元创建一个具有唯一 IP 的消息总线:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack-control-plane
    spec:
      secret: osp-secret
      ...
      rabbitmq:
        templates:
          rabbitmq: 
    1
    
            override:
              service:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.85
                spec:
                  type: LoadBalancer
          rabbitmq-cell1: 
    2
    
            override:
              service:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.86
                spec:
                  type: LoadBalancer
           rabbitmq-cell2: 
    3
    
           override:
             service:
               metadata:
                 annotations:
                   metallb.universe.tf/address-pool: internalapi
                   metallb.universe.tf/loadBalancerIPs: 172.17.0.87
               spec:
                 type: LoadBalancer
    Copy to Clipboard Toggle word wrap
    1
    大多数 RHOSO 服务使用的消息总线,包括计算服务 nova-apinova-scheduler,以及 cell0
    2
    cell1 使用的消息总线。
    3
    cell2 使用的消息总线。
  4. 可选:使用自定义 API 公共端点覆盖默认的 VNC 代理服务路由主机名:

      nova:
        apiOverride:
          route: {}
        cellOverride:
          cell1:
            noVNCProxy:
              route:
                spec:
                  host: myvncproxy.domain.name
    Copy to Clipboard Toggle word wrap
    注意

    主机名必须由数据中心中的 DNS 服务解析,RHOCP 集群和 DNS 实例将请求转发其请求。您不能使用内部 RHOCP coredns

  5. 将新单元添加到 nova 服务配置中的 cellTemplates 配置中:

      nova:
        ...
        template:
          ...
          metadataServiceTemplate:
            enabled: false 
    1
    
          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: 
    2
    
              hasAPIAccess: true
              cellDatabaseAccount: nova-cell2
              cellDatabaseInstance: openstack-cell2
              cellMessageBusInstance: rabbitmq-cell2
              conductorServiceTemplate:
                replicas: 1
              metadataServiceTemplate:
                enabled: true
                replicas: 1
    Copy to Clipboard Toggle word wrap
    1
    禁用提供所有单元的单个 nova 元数据 API 服务。如果您希望只有一个 nova 元数据 API 服务服务服务,请将此字段设置为 true,并从每个单元中删除 元数据服务 的配置。
    2
    新的 Compute 单元的名称。名称限制为 20 个字符,且只能包含小写字母数字字符和 - 符号。有关您可以为单元配置的属性的更多信息,请查看 Nova CRD 的定义:
    $ oc describe crd nova
    Copy to Clipboard Toggle word wrap
  6. 更新 control plane:

    $ oc apply -f openstack_control_plane.yaml -n openstack
    Copy to Clipboard Toggle word wrap
  7. 等待 RHOCP 创建与 OpenStackControlPlane CR 相关的资源。运行以下命令来检查状态:

    $ oc get openstackcontrolplane -n openstack
    NAME 						STATUS 	MESSAGE
    openstack-control-plane 	Unknown 	Setup started
    Copy to Clipboard Toggle word wrap

    当状态为 "Setup complete" 时,会创建 OpenStackControlPlane 资源。

    提示

    -w 选项附加到 get 命令的末尾,以跟踪部署进度。

  8. 可选:通过查看您创建的每个单元的 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
    Copy to Clipboard Toggle word wrap

    当所有 pod 都已完成或运行时,会部署 control plane。

  9. 可选:确认创建了新的单元:

    $ 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 |+-------+--------------------------------------+----------------------------------------------------------------------------------+------------------------------------------------------------+----------+
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat