3.4. 创建基于 Operator 的代理部署


3.4.1. 部署基本代理实例

以下流程演示了如何使用自定义资源(CR)实例创建基本代理部署。

注意

先决条件

流程

  1. 为代理部署开始配置自定义资源(CR)实例。

    1. 使用 OpenShift 命令行界面:

      1. 以具有特权的用户身份登录 OpenShift,可在您要创建部署的项目中部署 CR。

        oc login -u <user> -p <password> --server=<host:port>
      2. 打开名为 broker_activemqartemis_cr.yaml 的示例 CR 文件,该文件包含在您下载并提取的 Operator 安装存档的 deploy/crs 目录中。

        注意

        broker_activemqartemis_cr.yaml 示例 CR 使用 ex-aao 的命名约定。此命名惯例表示 CR 是 AMQ Broker Operator 的示例 资源。AMQ Broker 基于 ActiveMQ Artemis 项目。在部署此示例 CR 时,生成的 StatefulSet 使用名称 ex-aao-ss。另外,部署中的代理 Pod 会直接基于 StatefulSet 名称,如 ex-aao-ss-0ex-aao-s-1 等。CR 中的应用程序名称会出现在部署中作为 StatefulSet 上的标签。您可以在 Pod 选择器中使用此标签,例如:

    2. 使用 OpenShift Container Platform Web 控制台:

      1. 以具有特权的用户身份登录控制台,可在您要在其中创建部署的项目中部署 CR。
      2. 根据主代理 CRD 启动新的 CR 实例。在左侧窗格中,单击 menu: administration Resource Definitions]。
      3. 单击 ActiveMQArtemis CRD。
      4. 实例 选项卡。
      5. 单击 Create ActiveMQArtemis

        在控制台中,会打开 YAML 编辑器,允许您配置 CR 实例。

  2. size 属性指定要部署的代理数量。2 或更高值指定集群代理部署。但是,要部署单个代理实例,请确保将值设置为 1
  3. 部署 CR 实例。

    1. 使用 OpenShift 命令行界面:

      1. 保存 CR 文件。
      2. 切换到您要在其中创建代理部署的项目。

        $ oc project <project_name>
      3. 创建 CR 实例。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. 使用 OpenShift Web 控制台:

      1. 配置完 CR 后,点 Create
  4. 在 OpenShift Container Platform web 控制台中,点 menu:Workloads[StatefulSets]。您会看到一个名为 ex-aao-sss 的新 StatefulSet。

    1. ex-aao-s StatefulSet。您会看到有一个 Pod,对应于您在 CR 中定义的单个代理。
    2. 在 StatefulSet 中,点 Pods 选项卡。单击 ex-aao-ss Pod。在正在运行的 Pod 的 Events 选项卡中,您会看到代理容器已启动。Logs 选项卡显示代理本身正在运行。
  5. 要测试代理是否正常运行,请访问代理 Pod 上的 shell 来发送一些测试消息。

    1. 使用 OpenShift Container Platform Web 控制台:

      1. 点 menu:Workloads[Pods]。
      2. 单击 ex-aao-ss Pod。
      3. 点击 Terminal 选项卡。
    2. 使用 OpenShift 命令行界面:

      1. 获取项目的 Pod 名称和内部 IP 地址。

        $ oc get pods -o wide
        
        NAME                          STATUS   IP
        amq-broker-operator-54d996c   Running  10.129.2.14
        ex-aao-ss-0                   Running  10.129.2.15
      2. 访问代理 Pod 的 shell。

        $ oc rsh ex-aao-ss-0
  6. 从 shell,使用 artemis 命令发送一些测试消息。在 URL 中指定代理 Pod 的内部 IP 地址。例如:

    sh-4.2$ ./amq-broker/bin/artemis producer --url tcp://10.129.2.15:61616 --destination queue://demoQueue

    前面的命令会在代理上自动创建一个名为 demoQueue 的队列,并将默认数量为 1000 个消息发送到队列。

    您应该看到类似如下的输出:

    Connection brokerURL = tcp://10.129.2.15:61616
    Producer ActiveMQQueue[demoQueue], thread=0 Started to calculate elapsed time ...
    
    Producer ActiveMQQueue[demoQueue], thread=0 Produced: 1000 messages
    Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in second : 3 s
    Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 3492 milli seconds

3.4.2. 部署集群代理

如果项目中有两个或更多代理 Pod,则 Pod 会自动组成代理集群。集群配置可让代理互相连接并根据需要重新分发信息,以进行负载平衡。

以下流程演示了如何部署集群代理。默认情况下,此部署中的代理用于 需要 负载平衡,这意味着代理只会将消息转发到具有匹配消费者的其他代理。

先决条件

流程

  1. 打开用于基本代理部署的 CR 文件。
  2. 对于集群部署,请确保 deploymentPlan.size 的值为 2 或更高。例如:

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
    spec:
      deploymentPlan:
        size: 4
        image: placeholder
        ...
    注意

    metadata 部分中,需要包含 namespace 属性,只有在使用 OpenShift Container Platform Web 控制台创建 CR 实例时,才指定值。您应该指定的值是代理部署的 OpenShift 项目的名称。

  3. 保存修改后的 CR 文件。
  4. 以具有在之前创建的基本代理部署的项目中部署 CR 的用户身份登录 OpenShift。

    $ oc login -u <user> -p <password> --server=<host:port>
  5. 切换到之前创建的基本代理部署的项目。

    $ oc project <project_name>
  6. 在命令行中应用更改:

    $ oc apply -f <path/to/custom_resource_instance>.yaml

    在 OpenShift Container Platform web 控制台中,会根据 CR 中指定的数量在项目中启动额外的代理 Pod。默认情况下,在项目中运行的代理会被集群。

  7. 打开每个 Pod 的 Logs 选项卡。日志显示 OpenShift 在每个代理上建立了集群连接网桥。具体来说,日志输出包括类似如下的行:

    targetConnector=ServerLocatorImpl (identity=(Cluster-connection-bridge::ClusterConnectionBridge@6f13fb88

以下是将自定义资源(CR)更改应用到运行的代理部署的一些重要事项:

  • 您无法动态更新 CR 中的 persistenceEnabled 属性。要更改此属性,将集群缩减为零代理。删除现有 CR。然后,使用您的更改重新创建并重新重新部署 CR,同时指定部署大小。
  • 第 3.2.2 节 “使用 CLI 部署 Operator” 所述,如果您创建带有持久性存储的代理部署(即,在 CR 中设置 persistenceEnabled=true ),您可能需要为 AMQ Broker Operator 置备持久性卷(PV)来为代理 Pod 声明。如果缩减代理部署的大小,Operator 会释放之前为现在关闭的代理 Pod 声明的任何 PV。但是,如果您通过删除 CR 来删除代理部署,AMQ Broker Operator 不会为在删除时仍在部署中的代理 Pod 释放 PVC。另外,这些未发布的 PV 都不适用于任何新部署。在这种情况下,您需要手动释放卷。如需更多信息,请参阅 OpenShift 文档中的 发布持久卷
  • 在 AMQ Broker 7.13 中,如果要配置以下项目,您必须在首次部署 CR 将适当的配置添加到主 CR 实例中。

  • 在活跃的扩展事件中,您应用的进一步更改都会被 Operator 排队,且仅在扩展完成后执行。例如,假设您将部署的大小从四个代理缩减为一个。然后,在进行 scaledown 时,您还可以更改代理管理员用户名和密码的值。在这种情况下,Operator 会对用户名和密码进行队列,直到部署使用一个活跃代理运行为止。
  • 所有 CR 更改 - 除了更改部署的大小外,或者更改 acceptors、连接器或控制台的 expose 属性的值 - 会导致现有代理重启。如果您在部署中有多个代理,则一次只有一个代理重启。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部