搜索

第 4 章 配置基于 Operator 的代理部署

download PDF

4.1. Operator 如何生成代理配置

在使用自定义资源(CR)实例配置代理部署前,您应该了解 Operator 如何生成代理配置。

当您创建基于 Operator 的代理部署时,每个代理的 Pod 在 OpenShift 项目的 StatefulSet 中运行。代理的应用程序容器在每个 Pod 中运行。

Operator 在初始化每个 Pod 时运行一个名为 Init Container 的容器类型。在 OpenShift Container Platform 中,Init Containers 是应用程序容器之前运行的专用容器。Init 容器可以包含应用程序镜像中不存在的实用程序或设置脚本。

默认情况下,AMQ Broker Operator 使用内置的 Init 容器。Init 容器使用部署的主 CR 实例来生成供每个代理应用程序容器使用的配置。

如果您在 CR 中指定地址设置,Operator 会生成一个默认配置,然后将该配置与 CR 中指定的配置合并或替换。下面的部分描述了此过程。

4.1.1. Operator 如何生成地址设置配置

如果您在部署的主自定义资源(CR)实例中包含地址设置配置,Operator 会为每个代理生成地址设置配置,如下所述。

  1. Operator 在代理应用程序容器前运行 Init 容器。Init 容器生成 默认 地址设置配置。默认地址设置配置如下所示。

    <address-settings>
        <!--
        if you define auto-create on certain queues, management has to be auto-create
        -->
        <address-setting match="activemq.management#">
            <dead-letter-address>DLQ</dead-letter-address>
            <expiry-address>ExpiryQueue</expiry-address>
            <redelivery-delay>0</redelivery-delay>
            <!--
            with -1 only the global-max-size is in use for limiting
            -->
            <max-size-bytes>-1</max-size-bytes>
            <message-counter-history-day-limit>10</message-counter-history-day-limit>
            <address-full-policy>PAGE</address-full-policy>
            <auto-create-queues>true</auto-create-queues>
            <auto-create-addresses>true</auto-create-addresses>
            <auto-create-jms-queues>true</auto-create-jms-queues>
            <auto-create-jms-topics>true</auto-create-jms-topics>
        </address-setting>
    
        <!-- default for catch all -->
        <address-setting match="#">
            <dead-letter-address>DLQ</dead-letter-address>
            <expiry-address>ExpiryQueue</expiry-address>
            <redelivery-delay>0</redelivery-delay>
            <!--
            with -1 only the global-max-size is in use for limiting
            -->
            <max-size-bytes>-1</max-size-bytes>
            <message-counter-history-day-limit>10</message-counter-history-day-limit>
            <address-full-policy>PAGE</address-full-policy>
            <auto-create-queues>true</auto-create-queues>
            <auto-create-addresses>true</auto-create-addresses>
            <auto-create-jms-queues>true</auto-create-jms-queues>
            <auto-create-jms-topics>true</auto-create-jms-topics>
        </address-setting>
    <address-settings>
  2. 如果您在自定义资源(CR)实例中也指定了地址设置配置,则初始容器进程将配置并将其转换为 XML。
  3. 根据 CR 中的 applyRule 属性的值,Init 容器将 初始容器 合并 或替换为您在 CR 中指定的配置。此合并或替换的结果是代理要使用的最终地址设置配置。
  4. 当 Init 容器完成生成代理配置(包括地址设置)时,代理应用程序容器会启动。启动时,代理容器从之前由 Init 容器使用的安装目录中复制其配置。您可以检查 broker.xml 配置文件中的地址设置配置。对于正在运行的代理,此文件位于 /home/jboss/amq-broker/etc 目录中。

其他资源

4.1.2. 代理 Pod 的目录结构

当您创建基于 Operator 的代理部署时,每个代理的 Pod 在 OpenShift 项目的 StatefulSet 中运行。代理的应用程序容器在每个 Pod 中运行。

Operator 在初始化每个 Pod 时运行一个名为 Init Container 的容器类型。在 OpenShift Container Platform 中,Init Containers 是应用程序容器之前运行的专用容器。Init 容器可以包含应用程序镜像中不存在的实用程序或设置脚本。

在为代理实例生成配置时,Init 容器将使用默认安装目录中所含的文件。此安装目录位于 Operator 挂载到代理 Pod 以及 Init Container 和 broker 容器共享的卷中。Init 容器用来挂载共享卷的路径在名为 CONFIG_INSTANCE_DIR 的环境变量中定义。CONFIG_INSTANCE_DIR 的默认值为 /amq/init/config。在文档中,此目录被称为 < install_dir>

注意

您无法更改 CONFIG_INSTANCE_DIR 环境变量的值。

默认情况下,安装目录有以下子目录:

子目录内容

<install_dir>/bin

运行代理所需的二进制文件和脚本。

<install_dir>/etc

配置文件.

<install_dir>/data

代理日志。

<install_dir>/lib

运行代理所需的 JAR 和库。

<install_dir>/log

代理日志文件。

<install_dir>/tmp

临时 Web 应用程序文件。

当 Init Container 完成生成代理配置时,代理应用程序容器会启动。启动时,代理容器从之前由 Init 容器使用的安装目录中复制其配置。当代理 Pod 初始化并运行时,代理配置位于代理的 /home/jboss/amq-broker 目录(和子目录)。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.