搜索

Red Hat AMQ Broker 7.9 发行注记

download PDF
Red Hat AMQ 2021.Q3

AMQ Broker 发行注记

摘要

这些发行注记包含 AMQ Broker 7.9 发行版中包含的新功能、增强、修复和问题的最新信息。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 的信息

第 1 章 增强

本节论述了 AMQ Broker 7.9 中一组突出显示的增强功能和新功能。有关发行版本的完整列表,请参阅 AMQ Broker 7.9.0 增强

注意

如果需要最新的 AMQ Broker 长期支持(LTS)版本,请参阅 AMQ Broker 7.8

AMQP 服务器连接
代理可以使用 AMQP 协议发起到其他端点的连接。例如,这意味着代理可以连接到其他 AMQP 服务器,并在这些连接中创建元素。此功能使用 <broker-connection> 元素实现,如 配置 AMQ Broker 所述。
Operator 支持监视所有或多个命名空间

在以前的版本中,您要在需要代理部署的每个命名空间中安装 AMQ Broker Operator。从 7.9 开始,AMQ Broker Operator 支持监视所有或多个命名空间是否有代理自定义资源。如需更多信息,请参阅在 OpenShift 中部署 AMQ Broker

注意

如果您在集群中的命名空间中安装了 AMQ Broker Operator 的早期版本,红帽建议您不要安装 AMQ Broker Operator 7.9 版本来监视该命名空间以避免潜在的冲突。

临时队列命名空间
在 AMQ Broker 7.9 中,您可以在 broker.xml 配置文件中指定临时队列 命名空间。然后,您可以指定与命名空间匹配的地址设置,代理将这些设置应用到所有临时队列。如果临时队列命名空间不存在,临时队列使用与其他队列相同的地址设置配置。如需更多信息,请参阅配置 AMQ Broker 时将特定的地址设置应用到临时队列
Operator 频道

以下频道提供了 AMQ Broker Operator Red Hat Integration - RHEL 8 的 AMQ Broker(Multiarch)

  • 7.x - 此频道将安装 7.9 并将在以后的某个时候更新至 7.10。如果现在要安装 7.10,可以订阅 7.10.x 频道。
  • 7.8.X - 这是长期支持(LTS)通道。

要确定要选择哪个 Operator,请参阅 Red Hat Enterprise Linux Container Compatibility Matrix

主机默认验证
应用到连接器时,valid Host 的默认值已从 false 更改为 true。现在,所有代理连接都默认验证主机。acceptors 的默认值仍为 false
使用 CR 启用 Prometheus 插件
除了使用环境变量启用插件外,您还可以使用 CR 在 OpenShift 上启用 Prometheus 插件。这两个选项都描述了 为 On-Premise 部署 AMQ Broker

第 2 章 删除的功能

7.9 中不再提供以下功能:

OpenJ9 images
基于 OpenJ9 的 IBM Z(s390x)和 IBM Power Systems(ppc64le)镜像不再被支持。这些平台的新镜像基于 OpenJDK。
基于模板的安装
在 OpenShift Container Platform 上部署 AMQ Broker 的应用程序模板在以前的版本中已弃用,现已被删除。使用 AMQ Broker Operator,如使用 AMQ Broker Operator 在 OpenShift Container Platform 上部署 AMQ Broker 所述。
OpenShift Container Platform 3.11
不再支持在 OpenShift Container Platform 3.11 上部署 AMQ Broker。OpenShift Container Platform 4.6、4.6 或 4.8 支持 AMQ Broker。
基于 RHEL 7 的镜像
在 OpenShift Container Platform 上部署 AMQ Broker 现在都使用基于 RHEL 8 的镜像。
Documentation
AMQ Broker 指南中使用 JON 不再作为 AMQ Broker 文档的一部分发布。但是,作为 AMQ Broker 7.8 文档 的一部分,您仍然可以访问最后发布的版本。

第 3 章 已弃用的功能

本节论述了支持但已从 AMQ Broker 中弃用的功能。

OpenWire 协议
从 7.9 开始,OpenWire 协议是一个弃用的功能。如果您要创建新的基于 AMQ Broker 的系统,请使用其他支持的协议之一。此功能将在以后的发行版本中删除。
Hawtio 分配控制台插件
从 7.3 开始,AMQ Broker 不再附带 Hawtio 分配控制台插件, allocate -hawtio-console.war。在以前的版本中,分配控制台用于管理 AMQ Interconnect。但是,AMQ Interconnect 现在使用自己的独立 Web 控制台。
网络 pinger
从 7.5 开始,网络 ping 是一个弃用的功能。网络 ping 无法防止代理集群遭受网络隔离问题的影响,这些问题可能会导致无法恢复的信息丢失。此功能将在以后的发行版本中删除。红帽继续支持使用网络 ping 的现有 AMQ Broker 部署。但是,红帽不建议在新部署中使用网络 ping。有关配置代理集群以获取高可用性并避免网络隔离问题的指导,请参阅配置 AMQ Broker 中实施高可用性

第 4 章 技术预览

本节论述了 AMQ Broker 7.9 中的技术预览功能。

重要

技术预览功能不被红帽产品服务级别协议(SLA)支持,且可能无法完成功能。红帽不建议在生产环境中使用它们。如需更多信息,请参阅红帽技术预览功能支持范围

仲裁投票改进
在以前的 AMQ Broker 版本中,您需要配置至少三个实时备份对,从而避免在使用复制高可用性(HA)策略时有两个实时代理。从 7.9 开始,您可以将故障切换配置为使用 Apache CuratorApache ZooKeeper 使用两个代理提供仲裁投票。有关使用此功能的信息,请参阅 Apache ActiveMQ Artemis 文档中的 高可用性和故障切换
客户端连接均衡改进
在以前的版本中,没有方法平衡客户端连接服务器端。从 7.9 开始,您可以指定用于平衡客户端连接的代理池和策略。例如,您可以指定一个 LEAST_CONNECTIONS 策略,以确保客户端被重定向到最少活跃连接的代理。有关使用此功能的详情,请参考 Apache ActiveMQ 6.3 文档中的 Broker Balancer
在 Fuse 控制台中查看代理

您可以配置基于 Operator 的代理部署,以将 Fuse Console 用于 OpenShift 而不是 AMQ 管理控制台。当您正确配置代理部署后,Fuse 控制台会发现代理并将其显示在专用的 Artemis 选项卡上。如需更多信息,请参阅 OpenShift 上部署 AMQ Broker 中的 Fuse Console 中的查看代理

注意

在 Fuse 控制台中查看代理是 Fuse 7.8 的 技术预览功能。

第 5 章 修复的问题

如需在发行版本中修复的完整问题列表,请参阅 AMQ Broker 7.9.0 修复的问题和 AMQ Broker - 7.9.x 解析的问题

第 6 章 修复了常见漏洞和风险

本节详细介绍了 AMQ Broker 7.9 发行版本中修复的通用漏洞和风险(CVE)。

  • ENTMQBR-4071 - CVE-2020-13956 httpclient: apache-httpclient: 在请求 URI 中处理不正确的授权组件
  • ENTMQBR-4677 - CVE-2021-21290 netty:通过本地系统临时目录披露信息
  • ENTMQBR-4775 - CVE-2020-27223 jetty: 包含多个 Accept 标头的请求(带有大量"质量"参数)可能会导致 DoS
  • ENTMQBR-4779 - CVE-2021-3425 代理:Red Hat AMQ Broker:在应用程序日志文件中释放 JDBC 用户名和密码
  • ENTMQBR-4795 - CVE-2021-21295 netty: 在 HTTP/2 中因为缺少验证而可能的请求发生
  • ENTMQBR-4829 - CVE-2021-21409 netty:通过 content-length 标头请求调用
  • ENTMQBR-4907 - CVE-2021-28163 jetty-server: jetty:symlink 目录公开 webapp 目录内容
  • ENTMQBR-4911 - CVE-2021-28165 jetty-server: jetty:在接收无效的大型 TLS 帧时耗尽资源
  • ENTMQBR-4912 - CVE-2021-28164 jetty-server: jetty:模糊路径可以访问 WEB-INF
  • ENTMQBR-4960 - CVE-2021-29425 commons-io: apache-commons-io:Apache Commons IO 2.2 到 2.6 中的有限路径
  • ENTMQBR-5118 - CVE-2021-28169 jetty-server: jetty: 对 ConcatServlet 和 WelcomeFilter 的请求能够访问 WEB-INF 目录中受保护的资源
  • ENTMQBR-5165 - CVE-2021-34428 jetty-server: jetty:SessionListener 可以防止会话被无效的破坏注销
  • ENTMQBR-5229 - CVE-2021-20289 resteasy-jaxrs: resteasy:错误消息公开端点类信息
  • ENTMQBR-5250 - CVE-2021-34429 jetty-server: jetty: 精心设计的 URI 允许绕过安全约束
  • ENTMQBR-5398 - CVE-2021-3763 AMQ Broker 7:管理控制台中的权限不正确

第 7 章 已知问题

本节论述了 AMQ Broker 7.9 中的已知问题。

  • ENTMQBR-5749 - 删除 OperatorHub 中可见的不受支持 Operator

    仅支持 从 OperatorHub 部署 Operator 中的 Operator 和 Operator 频道。出于与 Operator 发布相关的技术原因,OperatorHub 中会显示其他 Operator 和频道,因此应忽略。作为参考,以下列表显示了哪些 Operator 是可见但不支持的:

    • Red Hat Integration - AMQ Broker LTS - 所有频道
    • 红帽集成 - AMQ Broker - alpha、当前和 current-76
  • ENTMQBR-5615 - artemis.profile 防止"init 容器镜像"方法出现意外的中断变化

    如果您使用 JVM 选项 -Dhawtio.role 将用户角色设置为 artemis_profile 文件的 $JAVA_ ARGS 部分的一部分,用户可能无法访问代理控制台。

    这个问题是由一个新的属性 HAWTIO_ROLE 造成的,它覆盖了 -Dhawtio.role 设置的任何值。要解决这个问题,请使用 etc/artemis.profile 文件中的 HAWTIO_ROLE 属性来设置适当的角色。

  • ENTMQBR-17 - AMQ222117:无法启动集群连接

    代理集群可能无法在支持 IPv6 的环境中正确初始化。故障源自一个 SocketException,它通过日志消息 Can't 分配请求的地址 来指明。要临时解决这个问题,请将 java.net.preferIPv4Stack 系统属性设置为 true

  • ENTMQBR-520 - 不允许从名称与绑定到其他地址的队列相同的地址接收

    名称与地址相同的队列只能分配给地址。创建与现有地址名称相同但绑定到具有不同名称的地址的队列无效配置。这样做可能会导致错误的消息路由到队列。

  • ENTMQBR-569 - 将 ID 从 OpenWire 转换为 AMQP 会导致将 ID 作为二进制发送

    从 A-MQ 6 OpenWire 客户端将跨协议通信到 AMQP 客户端时,其他信息将在应用消息属性中编码。这是代理内部使用的良性信息,可以忽略。

  • ENTMQBR-599 - 由 Artemis cli 定义信任存储和密钥存储

    使用 --ssl-key、--ssl-key -password、--ssl- trust 和 --ssl -trust-password 参数 创建代理实例无法正常工作。要临时解决这个问题,在创建代理后在 bootstrap.xml 中手动设置对应的属性。

  • ENTMQBR-636 - 日志中断,在 perf 负载(mpt)下导致 JavaNullPointerException.

    为防止代理管理重度负载时发生 IO 相关问题,请验证 JVM 分配有足够的内存和堆空间。请参阅 ActiveMQ Artemis 文档中的 性能调优 章节中标题为"测试虚拟机"的小节。

  • ENTMQBR-648 - JMS Openwire 客户端无法通过定义的 purgeOnNoConsumer 或 queue 过滤器发送消息到队列

    如果队列没有使用者,使用 A-MQ 6 JMS 客户端发送消息到具有 purgeOnNoConsumer 设为 true 的队列的地址。建议您在使用 A-MQ 6 JMS 客户端时不要设置 purgeOnNoConsumer 选项。

  • ENTMQBR-652 - 已知的 amq-jon-plugin 错误 列表

    此版本的 amq-jon-plugin 已知代理和队列的 MBeans 存在问题。

    代理 MBean 的问题:

    • 关闭连接会引发 java.net.SocketTimeoutException 异常
    • listSessions() throws java.lang.ClassCastException
    • 添加地址设置会抛出 java.lang.IllegalArgumentException
    • 无法找到 getConnectorServices() 操作
    • 无法找到 列表ConsumersAsJSON() 操作
    • 无法找到 getDivertNames() 操作
    • 列出网络拓扑抛出 IllegalArgumentException
    • 删除地址设置有错误的参数名称

    队列 MBean 的问题:

    • expireMessage() 抛出参数类型不匹配异常
    • listDeliveringMessages() throws IllegalArgumentException
    • listMessages() throws java.lang.Exception
    • moveMessages() 抛出 IllegalArgumentException,并带有错误消息参数类型 mismatch
    • removeMessage() 抛出 IllegalArgumentException 并带有错误消息参数类型 mismatch
    • removeMessages() 抛出异常,错误 Can't find operation removeMessage with 2 参数
    • retryMessage() 抛出参数类型不匹配 IllegalArgumentException
  • ENTMQBR-655 - [AMQP] 在 启用填充验证用户时无法 发送消息

    对于使用 AMQP 协议生成的消息,配置选项不支持填充 验证用户。

  • ENTMQBR-897 - Openwire 客户端/协议问题在目标名称中带有特殊字符

    目前,AMQ OpenWire JMS 客户端无法访问在其名称中包含下列字符的队列和地址:逗号('')、hash('#')、大于('>')和空格。

  • ENTMQBR-944 - [A-MQ7、Hawtio、RBAC] 用户如果 RBAC 拒绝操作访问,则不会获得任何反馈

    控制台可以指示未授权用户尝试的操作在未成功时成功。

  • ENTMQBR-1875 - [AMQ 7、ha、复制存储] 备份代理在之后显示"活动"或关闭 - ActiveMQIllegalStateException errorType=ILLEGAL_STATE 消息=AMQ119026:备份服务器尚未与实时同步

    在备份代理尝试与 master 代理同步时删除 master 代理的分页磁盘会导致 master 代理失败。另外,备份代理无法处于活动状态,因为它会继续尝试与 master 同步。

  • ENTMQBR-2068 - 某些消息在 HA 故障切换、故障恢复期间接收但未发送

    目前,如果 OpenWire 客户端正在发送消息时代理无法切换到其从设备,则在发生故障转移时将消息传送到代理。要临时解决这个问题,请确保代理在声明消息前保留它们。

  • ENTMQBR-2928 - Broker Operator 无法从 CR 更改中恢复,从而导致错误状态

    如果 AMQ Broker Operator 在应用自定义资源(CR)更新时遇到错误,Operator 将无法恢复。特别是,Operator 会正常停止响应,进一步更新 CR。

    例如,假设 main broker CR 中的 image 属性值拼写错误,会导致代理 Pod 无法部署,以及关联的 ImagePullBackOff 错误消息。如果您随后修复了拼写错误并应用 CR 更改,Operator 不会部署指定数量的代理 Pod。另外,Operator 不会响应任何进一步的 CR 更改。

    要临时解决这个问题,您必须先删除您原先部署的 CR,然后才能重新部署它们。要删除现有的 CR,请使用 oc delete -f <CR name> 等命令。

  • ENTMQBR-3846 - MQTT 客户端不会在代理重启时重新连接

    当您重启代理或代理失败时,活跃代理不会恢复之前连接的 MQTT 客户端的连接。要临时解决这个问题,若要重新连接 MQTT 客户端,您需要在客户端上手动调用 subscribe() 方法。

  • ENTMQBR-4023 - AMQ Broker Operator:Pod 状态 pod 名称不反映现实

    对于给定 OpenShift 项目中基于 Operator 的代理部署,如果您使用 oc get pod 命令列出代理 Pod,Pod 的序值从 0 开始,例如 amq-operator-test-broker-s-0。但是,如果您使用 oc describe 命令获取从 activemqartmises 自定义资源(即 oc describe activemqartemises )创建的代理 Pod 的状态,Pod 序值会错误地从 1 开始,例如 amq-operator-test-broker-ss-1。无法解决这个问题。

  • ENTMQBR-4127 - AMQ Broker Operator:Operator 生成的路由名称对于 OpenShift 来说可能太长

    对于基于 Operator 的部署中的每个代理 Pod,Operator 为访问 AMQ Broker 管理控制台而创建的路由的默认名称包括自定义资源(CR)实例的名称、OpenShift 项目的名称以及 OpenShift 集群的名称。例如,my -broker-deployment-wconsj-0-svc-rte-my-openshift-project.my-openshift-domain。如果其中某些名称很长,默认的 Route 名称可能会超过 OpenShift 强制执行的 63 个字符的限制。在本例中,在 OpenShift Container Platform Web 控制台中,Route 的状态为 Rejected

    要临时解决这个问题,使用 OpenShift Container Platform Web 控制台手动编辑 Route 的名称。在控制台中点击 Route。在右上角的 Actions 下拉菜单中,选择 Edit Route。在 YAML 编辑器中,找到 spec.host 属性并编辑值。

  • ENTMQBR-4140 - AMQ Broker Operator:如果 storage.size 指定不正确,则安装将不可用

    如果您将自定义资源(CR)实例的 storage.size 属性配置为指定部署中持久性存储所需的持久性卷声明(PVC)的大小,如果没有正确指定此值,Operator 安装将不可用。例如,假设将 storage.size 的值设置为 1 (即,不指定单位)。在这种情况下,Operator 无法使用 CR 创建代理部署。另外,即使您删除了 CR 并正确部署了指定 storage.size 的新版本,Operator 仍然无法使用这个 CR 创建部署。

    要临时解决这个问题,请首先停止 Operator。在 OpenShift Container Platform web 控制台中点 Deployments。对于与 AMQ Broker Operator 对应的 Pod,请点击 More options 菜单(三个垂直点)。点 Edit Pod Count,将值设置为 0。当 Operator Pod 停止时,创建带有 storage.size 的新版本 CR。然后,要重启 Operator,请再次点击 Edit Pod Count,并将值重新设置为 1

  • ENTMQBR-4141 - AMQ Broker Operator:增大持久性卷大小需要手动参与,即使重新创建有状态集后也是如此

    如果您在持久性存储的部署中尝试增大代理所需的持久性卷声明(PVC)的大小,则在没有进一步手动步骤的情况下更改不会生效。例如,假设您将自定义资源(CR)实例的 storage.size 属性配置为为 PVC 指定初始大小。如果您修改 CR 以指定 不同的 storage.size 值,现有代理将继续使用原始 PVC 大小。即使您将部署缩减为零代理,然后备份到原始数字,也是如此。但是,如果您扩展部署的大小来添加额外的代理,新代理会使用新的 PVC 大小。

    要临时解决这个问题,并确保部署中的所有代理都使用相同的 PVC 大小,请使用 OpenShift Container Platform Web 控制台来扩展部署使用的 PVC 大小。在控制台中,单击 StoragePersistent Volume Claims。单击您的部署。在右上角的 Actions 下拉菜单中,选择 Expand PVC 并 输入一个新值。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.