第 8 章 已知问题
本节论述了 AMQ Broker 7.11 中已知的问题。
ENTMQBR-8106 - 在更改 CR 中的 MessageMigration 后 AMQ Broker Drainer pod 无法正常工作
您无法更改正在运行的代理部署中
messageMigration
属性的值。要临时解决这个问题,您必须在新的ActiveMQ Artemis
CR 中为messageMigration
属性设置所需的值,并创建新的代理部署。
ENTMQBR-8166 - 带有 UseClientAuth=true 的自签名证书可防止与 Jolokia 的 Operator 通信
如果在
ActiveMQ Artemis
CR 的console
部分中将useClientAuth
属性设置为true
,Operator 无法在代理上配置某些功能,如创建地址。在 Operator 日志中,您会看到以remote error: tls: bad certificate
结尾的错误消息。
ENTMQBR-7385 - 缓慢消费者上的联邦队列的消息 flops
如果本地应用程序消费者非常慢或无法消耗消息,可以在应用程序消费者最终消耗前多次发送一条消息,并在联邦连接中发送大量信息。
ENTMQBR-7820 - [Operator] supported version in 7.11.0 OPR1 operator 日志不正确
Operator 日志列出对以下 AMQ Broker 镜像版本的支持: 7.10.0 7.10.1 7.10.2 7.11.0 7.8.1 7.8.2 7.8.3 7.9.0 7.9.1 7.9.2 7.9.3 7.9.4。从 7.10.0 开始,Operator 实际上支持 AMQ Broker 镜像版本。
ENTMQBR-7359 - 使用 7.10.0 Operator 更改为当前处理凭证 secret
Operator 在 secret 中存储用于连接代理的管理员用户名和密码。默认 secret 名称的格式是 <
custom-resource-name>-credentials-secret
。您可以手动创建 secret,或允许 Operator 创建 secret。如果在 7.10.0 之前在自定义资源中配置
adminUser
和adminPassword
属性,Operator 会使用这些属性的值更新手动创建的 secret。从 7.10.0 开始,Operator 不再更新手动创建的 secret。因此,如果更改了 CR 中的adminUser
和adminPassword
属性的值,则必须:- 使用新用户名和密码更新 secret
-
删除 secret,并允许 Operator 创建 secret。当 Operator 创建 secret 时,如果在 CR 中指定,它会添加
adminUser
和adminPassword
属性的值。如果这些属性不在 CR 中,Operator 会为 secret 生成随机凭证。
ENTMQBR-7111 - 7.10 版本的 operator 会在升级过程中删除 StatefulSet
如果您要升级到 AMQ Broker Operator 7.10.0,新的 Operator 会在协调过程中自动删除每个部署的现有 StatefulSet。当 Operator 删除 StatefulSet 时,现有代理 pod 会被删除,这会导致临时代理中断。
您可以运行以下命令来手动删除 StatefulSet 并孤立正在运行的 pod,然后删除 StatefulSet: oc delete statefulset < statefulset-name& gt; --cascade=orphan
在升级过程中手动删除 StatefulSet 可让新 Operator 在不删除正在运行的 pod 的情况下协调 StatefulSet。如需更多信息,请参阅在 OpenShift 上部署 AMQ Broker 中的 使用 OperatorHub 升级 Operator。
ENTMQBR-6473 - 由于模式 URL 更改而不兼容的配置
当您尝试使用之前版本 7.9 或 7.10 实例的代理实例时,不兼容的配置会导致代理崩溃。要临时解决这个问题,请更新相关配置文件中的模式 URL,如在 Linux 上从 7.9.0 升级到 7.10.0 所述。
ENTMQBR-4813 AsynchronousCloseException 带有大型消息和多个 C++ 订阅者
如果多个使用 AMQP 协议的客户端与订阅者和代理在同一台主机上运行,并且发布者发送大型消息,其中一个订阅者会崩溃。
ENTMQBR-5749 - 删除 OperatorHub 中不支持的 operator
仅支持 从 OperatorHub 部署 Operator 中的 Operator 和 Operator 频道。出于与 Operator 出版物相关的技术原因,其他 Operator 和频道在 OperatorHub 中可见,并应该被忽略。对于参考,以下列表显示了哪些 Operator 是可见的,但不被支持:
- Red Hat Integration - AMQ Broker LTS - 所有频道
- Red Hat Integration - AMQ Broker - alpha、current 和 current-76
ENTMQBR-569 - 将 ID 从 OpenWire 转换为 AMQP 会导致将 ID 作为二进制发送
当从 A-MQ 6 OpenWire 客户端通信到 AMQP 客户端时,在应用程序消息属性中编码其他信息。这是代理内部使用的信息,可以被忽略。
ENTMQBR-655 - [AMQP] Unable to send message when
populate-validated-user
配置选项
populate-validated-user
不支持使用 AMQP 协议生成的消息。
ENTMQBR-1875 - [AMQ 7, ha, replicated store] 备份代理在 - ActiveMQIllegalStateException errorType=ILLEGAL_STATE message=AMQ119026: Backup Server 尚未与 live 同步后无法进入"实时"或关闭
当备份代理试图与主代理同步时,删除主代理的分页磁盘会导致主代理失败。另外,备份代理无法变为 live,因为它继续尝试与主代理同步。
ENTMQBR-2068 - 有些在 HA 故障切换过程中收到但未发送的消息,故障切换场景
目前,如果在 OpenWire 客户端发送消息时代理切换到其备份,则当故障转移丢失时发送到代理的消息。要临时解决这个问题,请确保代理在确认信息前保留信息。
ENTMQBR-3331 - Stateful set controller 无法从 CreateContainerError 恢复,阻止 Operator
如果 AMQ Broker Operator 从具有配置错误的自定义资源(CR)创建一个有状态的集合,有状态集控制器在错误解决时无法推出更新的有状态集。
例如,主代理 CR 中的
image
属性的值出现错误,从而导致有状态集合控制器创建的第一个 Pod 的状态保持Pending
。如果修复错误,并应用 CR 更改,AMQ Broker Operator 会更新有状态的集合。但是,Kubernetes 已知问题可防止有状态的集合控制器推出更新的有状态集。控制器无限期等待具有Pending
状态的 Pod 变为Ready
,因此不会部署新的 Pod。要临时解决这个问题,您必须删除具有
Pending
状态的 Pod,以允许有状态集控制器部署新 Pod。要检查哪些 Pod 具有Pending
状态,请使用以下命令:oc get pods --field-selector=status.phase=Pending
。要删除 Pod,请使用oc delete pod <pod name>
命令。
ENTMQBR-3846 - mq 客户端不会在代理重启时重新连接
当您重启代理或代理失败时,活跃代理不会恢复之前连接的 MQTT 客户端的连接。要临时解决这个问题,要重新连接 mq 客户端,您需要在客户端上手动调用
subscribe ()
方法。
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
。如果其中一些名称长,则默认路由名称可能会超过 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: Increasing Persistent Volume size 需要手动参与,即使重新创建 Stateful Set
如果您尝试在为持久性存储的部署中增加代理所需的持久性卷声明(PVC)的大小,则更改不会在进行进一步的手动步骤的情况下生效。例如,假设您配置自定义资源(CR)实例的
storage.size
属性,以便为 PVC 指定初始大小。如果您修改 CR 以指定storage.size
的不同值,现有代理将继续使用原始 PVC 大小。即使将部署缩减为零代理,然后备份到原始数字,也是如此。但是,如果您扩展部署的大小以添加额外的代理,新代理将使用新的 PVC 大小。要临时解决这个问题,并确保部署中的所有代理都使用相同的 PVC 大小,请使用 OpenShift Container Platform Web 控制台扩展部署使用的 PVC 大小。在控制台中,点
。点您的部署。在右上角的 Actions 下拉菜单中,选择 Expand PVC
并输入新值。