跳到主要内容

系统级消息暂存管理

本节讨论了许多系统级别的消息池管理任务。

断言磁盘所有权

本节讨论的程序仅适用于Solace PubSub+设备。

在某些情况下,设备可能会与外部磁盘存储阵列发生磁盘所有权冲突。磁盘所有权冲突可能因以下条件而发生:

  • 通过disk-array消息池CONFIG命令,用相同的WWN配置两个非冗余设备。在这种情况下,设备检测到磁盘所有权冲突,无法挂载外部磁盘存储阵列。
  • 用新的IP地址或CVRID重新配置设备。设备检测到由旧IP地址或CVRID创建的入队文件,但无法区分地址更改或与其他事件代理的冲突。

使用以下管理命令来覆盖磁盘所有权冲突(如show message-spool detail用户执行命令输出的详细状态和使用项目摘要屏幕中显示的Disk Contents Invalid),并断言对配置的外部磁盘存储阵列的所有权:

solace# admin
solace(admin)# system message-spool
solace(admin/system/message-spool)# assert-disk-ownership

备份ADB到磁盘

您可以在更换ADB之前备份ADB配置和任何入队的消息。执行ADB备份时,您必须首先关闭系统消息池和msg-backbone服务。执行备份时,它将自动重新启动设备,以将消息池内容和ADB配置恢复到新的ADB硬件上。

要备份ADB配置,请输入以下管理EXEC命令:

solace# admin
solace(admin)# system message-spool
solace(admin/system/message-spool)# backup-adb-to-disk

有关如何备份ADB信息然后安装新的ADB的详细信息,请参考ADB更换。

故障排除闪存卡故障

本节讨论的程序仅适用于Solace PubSub+设备。

如果设备上的ADB在设备上电后无法从闪存卡恢复其数据,事件日志将生成“ADB failed to restore image from flash”,并且闪存卡也将处于“Restore Failed”状态。(您可以通过输入show hardware detail用户执行命令来确认ADB的闪存卡状态。)

这种“Restore Failed”状态通常表示闪存卡经历了致命故障,并且不再运行。在这种情况下,应尽快更换ADB。更多信息,请联系Solace。

如果您想暂时使用没有运行闪存卡的ADB,直到可以安装替换的ADB,您可以覆盖闪存故障。然而,如果您使用没有运行闪存卡的ADB,如果再次发生电源故障,您将面临丢失保证消息的风险。

要覆盖闪存卡故障并使用没有运行闪存卡的ADB,请输入以下管理EXEC命令:

solace# admin
solace(admin)# system message-spool
solace(admin/system/message-spool)# override-flash-failure

有些场景可能导致Restore Failed状态,其中闪存卡仍然功能正常,但未运行并需要重新初始化。这些包括:

  • 在设备中安装了新的ADB和/或闪存卡,并且闪存卡未初始化。
  • 在保存到闪存操作期间从设备中移除了ADB和/或闪存卡。
  • ADB上的电源模块没有足够的电量完成保存到闪存操作。

对于这些场景,override-flash-failure系统消息池管理EXEC命令将覆盖闪存卡故障并重新初始化闪存卡。尽管在运行命令后闪存卡不会立即运行,但重新启动设备,然后输入show hardware detail用户执行命令以确定Restore Failed状态是否已清除(即,闪存卡状态为“Ready”)。如果Restore Failed状态仍然存在,应尽快更换ADB。

如果在启用HA冗余的情况下执行override‑flash‑failure消息池系统管理EXEC命令,并且HA配对不活跃于保证消息传递,可能会丢失任何配置的端点。

重置保证消息池

您可以重置事件代理的系统级保证消息传递消息池,而不影响事件代理的其他配置。消息池重置将删除所有端点的所有入队消息,并将系统级消息池重置为其默认配置。

重置将中断您的保证消息传递服务,最好在对消息网络上的客户端影响最小的时候清除事件代理的消息池。在重置之前,您必须停止事件代理上的保证消息传递和消息池。要做到这一点,请执行shutdown消息池CONFIG命令(如果配置了事件代理冗余,请输入shutdown冗余CONFIG命令)。

solace(configure)# hardware message-spool
solace(configure/hardware/message-spool)# shutdown
solace(configure/hardware/message-spool)# exit
solace(configure/hardware)# exit
solace(configure)# exit

一旦关闭了保证消息传递,通过输入以下命令清除事件代理的保证消息传递消息池设施:

solace# admin
solace(admin)# system message-spool
solace(admin/system/message-spool)# reset [full]

其中:

full重置将分配给下一条入队消息的ID和将分配给下一条消息池文件的ID重置为1。它还将可能入队的消息的最大数量(max-message-count)重置为系统默认值。如果此命令不包含full参数,则当前运行的消息ID和消息池ID序列将继续(即,下一个分配的ID将比最后一个ID大一个),并且max‑message‑count将不会改变。

执行reset命令后,输入no shutdown消息池CONFIG命令以重新启动事件代理上的保证消息传递和消息池(如果配置了事件代理冗余,请执行no shutdown冗余CONFIG命令以重新启动事件代理冗余)。

此时,事件代理的消息池已清除,对于设备,ADB已重置为其默认配置状态,而不影响事件代理的其他配置。

使用full选项从消息VPN桥的远程事件代理重置消息池将停止通过该VPN桥传递保证消息。如果发生这种情况,请移除配置在该VPN桥上的持久消息队列,然后再次添加。例如,对于配置了名为q/market/orders的队列的VPN桥:

solace(configure/bridge/remote/message-vpn)# message-spool no queue
solace(configure/bridge/remote/message-vpn)# message-spool queue q/market/orders

在重新配置VPN桥上的队列之前不要关闭桥。

指定下一条消息ID

要设置将分配给下一条入队消息的消息ID,请输入以下命令:

solace# admin
solace(admin)# system message-spool
solace(admin/system/message-spool)# next-message-id <message-id>

其中:

<message-id>是在启用消息池后将分配给下一条消息的消息ID