跳到主要内容

多节点路由

多节点路由(MNR)允许多个Solace PubSub+事件代理被网络连接在一起,以便从连接到一个事件代理的客户端发布的直接消息可以被传递到连接到其他事件代理的客户端。这有效地将消息路由负载分布在多个事件代理上,从而使得网络中的聚合消息转发速率超过了任何一个事件代理的容量。

Solace的内容最短路径优先(CSPF)协议用于连接相邻的事件代理,并允许它们发现它们所属的完整消息网络拓扑。事件代理然后可以确定哪个邻居是转发到特定目标事件代理的消息的最佳节点。拓扑发现是连续的,并且随着网络中的事件代理上线或下线而动态更新。

订阅管理路由协议(SMRP)也用于使连接的相邻事件代理能够将一个事件代理的客户端添加的主题订阅在整个消息网络中传播。这使得发布到一个事件代理的消息可以被路由到其他也有连接客户端对这些主题感兴趣的消息代理。

默认情况下,通过MNR链接传输的数据和路由流量是通过TCP以明文形式传输的。可以在这些链接上应用数据压缩;然而,如果您将在事件代理之间传输的消息中传输敏感数据,则可以在MNR链接的数据通道上应用传输层安全性(TLS)/安全套接字层(SSL)加密。

MNR专门用于直接消息传递。对于使用队列或主题端点的保证消息传递,请使用DMR或消息VPN桥接。

连接事件代理

路由链接定义了事件代理之间的连接路径。在构建消息网络时,管理员必须明确配置事件代理邻居之间的路由链接。消息路由链接的两端都必须配置。也就是说,要连接事件代理A和B,必须在A中为B配置一个邻居,在B中为A配置一个邻居。使用这些双向链接,这些邻居然后能够使用CSPF协议交换网络拓扑,并使用SMRP交换订阅信息。这些配置的邻居链接允许客户端发布的直接消息在前往最终订阅客户端的途中在邻居之间传输。

可以在邻居事件代理数据连接上可选地使用压缩(仅数据连接受到影响)。

可以使用多个双向路由链接在您的网络中的事件代理之间路由消息以实现负载均衡或冗余,并且使用的路由协议将计算最短路径(由链接成本定义)。具有较低链接成本的路由优于具有较高链接成本的路由。如果有多个具有相等成本路径的路由链接,则选择具有较少跳数的路由作为首选路由。

在可能的替代路由中,管理员可以分配明确的链接成本以指示最佳的邻居间消息路由。为特定路由分配较高链接成本的理由可能基于底层通信链接的速度、延迟或成本等因素。

路由链接成本示例

要优先选择一条路由而不是另一条路由(例如,指定默认链接),您可以更改路由链接成本以设置首选的消息路由。

在路由链接成本—示例1中,事件代理A、B、C和D之间有四个双向路由链接可用:

  • A-B路由链接
  • B-C路由链接
  • B-D路由链接
  • C-D路由链接

如果与A-B路由链接相关的成本设置为150,而与另外三个路由链接相关的成本设置为100,则从事件代理A路由到C的消息将从事件代理A传输到事件代理B,然后传输到事件代理C。

路由链接成本—示例1

img

然而,如路由链接成本示例2所示,如果与A-B路由链接相关的成本设置为150,而与B-C路由链接相关的成本设置为250,与C-D和B-D路由链接相关的成本设置为100,则从事件代理A路由到C的消息将从事件代理A传输到站点B,然后传输到事件代理D,最后传输到事件代理C。在某些情况下,例如一个城市中的两个事件代理站点通过高速链接连接,而其他海外事件代理站点通过低速链接连接,这样的成本配置可能是理想的。

路由链接成本示例2

img

订阅传播和管理

当使用MNR时,主题订阅和匹配的消息仅在匹配的消息VPN之间分发。这意味着一个事件代理在一个消息VPN中具有主题订阅,只能从具有相同名称的消息VPN的邻居事件代理接收匹配的消息。例如,如果一条消息发布到Router A上的消息VPN Blue,则该消息可以传递给Router B上具有匹配主题订阅的客户端,该客户端位于消息VPN Blue中,但不能传递给Router B上具有匹配主题订阅的客户端,该客户端位于消息VPN Green中。

主题订阅可以由外部客户端和内部客户端(例如,消息VPN的内部客户端,#client)添加。当外部客户端订阅与特定虚拟路由器名称相关联时;内部客户端订阅与物理事件代理名称相关联。

只有添加到队列的主题订阅才会被传播。添加到主题端点的主题订阅不会被传播。

导出主题订阅

每个消息VPN都有一个主题订阅导出策略与之相关联,该策略控制消息VPN上的主题订阅是否被广告到网络中的其他事件代理。默认策略是不导出订阅。

要从其他事件代理接收消息,消息VPN中的订阅导出策略必须设置为导出订阅。这将导致所有本地添加到消息VPN的订阅动态地传播到网络中的其他事件代理。

有关如何配置订阅导出策略的信息,请参见启用订阅导出。

配置先决条件

在配置网络中每个事件代理的MNR设置之前,您需要阅读并遵守以下所有内容:

  1. MNR使用消息路由网络中所有事件代理的静态IP地址。在您可以在事件代理上配置MNR之前,您必须知道您希望事件代理连接的每个邻居的静态IP地址。
  2. 名称在字母顺序中首先出现的事件代理将启动TCP连接。
  3. 您必须确保在消息路由网络中使用的每个事件代理上打开以下TCP端口:
    1. 路由控制端口。默认是55556。
    2. 根据所选配置,SMF数据、SMF压缩数据或SMF TLS/SSL数据端口之一。默认分别是55555、55003和55443。
  4. 事件代理必须具有唯一的物理路由器名称。

MNR模式配置

在PubSub+软件事件代理版本8.13.0+和设备版本9.1.0+中,默认启用DMR路由模式。您必须启用MNR模式才能使用MNR功能。

要启用或禁用MNR模式,请执行以下操作:

要启用MNR模式,请输入以下命令。

solace(configure)# routing
solace(configure/routing)# mode multi-node-routing [defer]

要禁用MNR模式并启用DMR模式,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# mode dynamic-message-routing [defer]

其中:

defer 指定将更改推迟到下一次事件代理重启。

您必须在更改生效之前重启事件代理。如果您不指定defer关键字,则会立即提示您重启事件代理。

CSPF路由链接从一个事件代理到一个邻居事件代理,由其物理路由器名称标识。

要成功连接邻居事件代理,消息路由链接的两端都必须配置。也就是说,在两个Solace事件代理A和B之间,必须在A中为B配置一个邻居,在B中为A配置一个邻居。

要从给定事件代理创建到邻居事件代理的CSPF路由链接,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# create cspf neighbor <physical-router-name>

要编辑从给定事件代理到邻居事件代理的现有CSPF路由链接的属性,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>

要启用CSPF路由链接,请输入以下命令:

solace(...ting/multi-node-routing/cspf/neighbor)# no shutdown

其中:

<physical-router-name> 是事件代理的名称。此名称可以包含最多64个字符,由0到9、a到z、A到Z、下划线''、点'.'和连字符组成。注意''、'.'和'-'不能用于事件代理名称的开头或结尾。路由器名称必须在所有配置的事件代理中是唯一的。

此命令的无操作版本no cspf neighbor,将删除给定事件代理上的CSPF链接,只要邻居已关闭。

用于链接的配置参数与创建路由链接的命令分开设置。您可以为现有链接执行的配置任务包括:

  • 配置邻居的IP和数据端口
  • 配置邻居的控制端口
  • 配置压缩数据连接
  • 启用TLS/SSL数据加密
  • 配置链接成本
  • 配置TCP设置

配置邻居的IP地址和数据端口

要配置邻居数据端口的 IP 地址和可选端口,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>
solace(...ting/multi-node-routing/cspf/neighbor)# connect-via <ip-port>

其中:

<ip-port> 是邻居事件代理的静态 IP 地址或完全限定域名 (FQDN) 和 TCP 端口,格式为 IP 地址[:端口]FQDN[:端口]。IPv4 地址必须以点分十进制表示法形式指定,nnn.nnn.nnn.nnn。从 SolOS 版本 9.12.0 开始,支持 IPv6 格式字符串(RFC 5952),但这些地址必须用方括号括起来。端口指定为从 0 到 65535 的十进制值。例如,正确格式的 IPv4 地址是:192.168.100.1:55555。相同的 IPv6 地址格式是 [::ffff:c0a8:6401]:55555。如果未指定端口,则默认为 55555。FQDN 可以包含最多 253 个字符。

配置邻居的控制端口

要配置邻居数据端口的 IP 地址和可选端口,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>
solace(...ting/multi-node-routing/cspf/neighbor)# control-port <control-port>

其中:

<control-port> 是邻居事件代理的 TCP 控制端口号。如果未指定,则使用邻居事件代理在邻居链接建立阶段返回的控制端口。如果指定为从 0 到 65535 的十进制值,则此值优先于邻居事件代理返回的值。

配置压缩数据连接

您可以在与邻居事件代理的数据连接上使用压缩。只有数据连接受到影响——控制连接始终是未压缩的。

压缩只在与邻居事件代理的纯文本连接上可用(默认)。消息压缩在数据连接上使用 TLS/SSL 加密时不可用(即,安全/加密的客户端连接).

要使用与邻居的压缩数据连接,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>
solace(...ting/multi-node-routing/cspf/neighbor)# compressed-data

此命令的否定版本 no compressed-data 将数据连接重置为默认的未压缩连接。

当邻居事件代理关闭时,才能更改此属性。

好的,继续翻译:

启用TLS/SSL数据加密

您可以在与邻居事件代理的数据连接上使用 TLS/SSL 加密。只有数据连接受到影响。控制连接不加密。

要为每个给定的链接启用邻居链接上的 TLS/SSL 数据加密,请使用以下命令:

要启用与邻居的加密数据连接,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>
solace(...ting/multi-node-routing/cspf/neighbor)# ssl-data

此命令的否定版本 no ssl-data 将数据连接重置为默认的纯文本连接。

  • 当邻居事件代理关闭时,才能更改此属性。
  • 当数据连接使用数据压缩时,TLS/SSL 加密不可用,因为数据压缩需要纯文本连接。
  • TLS/SSL 加密仅支持设备之间的数据连接以及软件事件代理之间的数据连接,软件事件代理版本为 8.5.0 及更高版本。

配置密码套件

可以指定一个密码套件列表,按优先顺序与远程事件代理协商。默认情况下,使用所有支持的密码套件,按从最安全到最不安全的顺序排列。空的密码套件列表将阻止路由链接启动连接。

要配置路由链接上应使用的密码套件,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>
solace(...ting/multi-node-routing/cspf/neighbor)# ssl
solace(.../multi-node-routing/cspf/neighbor/ssl)# cipher-suite {default | empty | name <suite-name> [{before | after} <suite-name>]}

其中:

  • default 指定使用默认支持的密码套件列表,按从最安全到最不安全的顺序排列。
  • empty 从列表中移除所有密码套件。
  • name <suite-name> 将指定的密码套件添加到要使用的套件列表中。
  • before <suite-name> 指定 name 参数指定的套件应插入到列表中,位置在 before 参数指定的套件之前(即,优先级更高)。
  • after <suite-name> 指定 name 参数指定的套件应插入到列表中,位置在 after 参数指定的套件之后(即,优先级更低)。

此命令的否定版本 no cipher suite name <suite-name> 将指定的密码套件从合格密码套件列表中移除。

如果邻居之间有多条路由,并且您希望强制使用一条路由而不是另一条路由,则可以为路由链接分配特定的成本,以反映每条底层通信链接的速度或费用差异。成本较低的链接优先于成本较高的链接。有关如何计算链接成本的示例,请参见相关部分。

要更改到邻居事件代理的路由链接的成本,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf neighbor <physical-router-name>
solace(...ting/multi-node-routing/cspf/neighbor)# link-cost <cost>

其中:

<cost> 是表示到邻居事件代理的新链接成本的整数值。有效范围是 1 到 255。如果未提供此参数,默认值为 100。

此命令的否定版本 no link-cost 将链接成本值重置为默认值。

可以使用 show cspf route 用户 EXEC 命令查看现有链接成本。 好的,继续翻译:

配置TCP设置

有关如何配置邻居链接的 TCP 设置的信息,请参阅 TCP 设置。本节讨论用于事件代理之间连接以及客户端与事件代理之间连接的 TCP 设置的配置。

分配路由接口

要使用 Solace 路由协议(如用于 MNR 的 CSPF 和 SMRP 协议),必须分配一个路由接口。

在 9.5.0 版本之前,如果事件代理要用于 HA 冗余对或启用 Config-Sync,则也必须分配一个路由接口。

要分配一个路由接口,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# interface <phy-interface>

其中:

<phy-interface> 是一个 ASCII 字符串,指定要分配的以太网接口端口或 LAG。有效值为 eth<port>(例如,eth1);<cartridge>/<slot>/<port>(例如,1/1/8);<cartridge>/<slot>/lag<N>(例如,1/1/lag1)。没有默认值。

启动/停止路由协议

要启动事件代理上的 Solace 路由协议(如用于 MNR 的 CSPF 协议和 SMRP),请输入以下命令:

solace(configure)# routing
solace(configure/routing)# no shutdown

要停止事件代理上的 Solace 路由协议,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# shutdown
  • 默认情况下,Solace 路由协议是停止的(即,它们不在事件代理上运行)。
  • 要启动 MNR,必须启动正在一起网络化的每个事件代理。
  • 每当事件代理在运行 MNR 时重新启动时,SMRP 需要知道它将成为活动状态的主题订阅。它通过与邻居事件代理同步其数据库来实现这一点。然而,如果 Solace 路由协议在任何邻居事件代理上停止,则尝试同步其 SMRP 数据库的事件代理将在三分钟后停止其重新同步尝试。 好的,继续翻译:

MNR 网络由两个或多个事件代理组成,CPSF 邻居链接连接在邻居事件代理之间,以符合定义的网络拓扑结构。

确定哪些事件代理对之间有邻居链接连接,决定了网络的拓扑结构。在此示例中,我们仅描述在完成所有网络工程后配置事件代理以进行 MNR 链接配置所需的任务。此外,本节适用于设备,并假设已完成 IP 接口配置中描述的基本事件代理配置任务。

要成功配置 MNR 网络,需要按顺序完成两个级别的配置:

  1. 事件代理级别的配置任务
  2. 每个邻居链接的配置任务

事件代理级别的配置任务

在 MNR 网络中的每个事件代理上执行这些任务,无论邻居链接连接的数量如何,以配置和启用 Solace 路由协议用于 MNR 的路由接口:

  1. 为了使事件代理能够连接到邻居的路由接口,为 MNR 网络中的每个事件代理配置一个静态 IP 接口。此静态 IP 接口可以是 NAB 上的一个独立端口,也可以是一个由一个或多个 NAB 端口组成的 LAG 接口。

    创建静态 IP 接口:

    solace> enable
    solace# configure
    solace(configure)# ip vrf msg-backbone
    solace(configure/ip/vrf)# create interface 1/6/1:3 static

    设置静态 IP 接口地址:

    solace(configure/ip/vrf/interface)# ip-address 192.168.1.10/24

    启用静态 IP 接口:

    solace(configure/ip/vrf/interface)# no shutdown
    solace(configure/ip/vrfinterface)# exit

    配置消息骨干 VRF 的 IP 路由:

    solace(configure/ip/vrf)# route default 192.168.1.1
    solace(configure/ip/vrf)# end
    solace#

    要为 NAB 的所有端口分配独立的 IP 地址(即,当没有配置 LAG 时),或在将一些 NAB 以太网端口组合成一个 LAG 和剩余端口独立寻址时,请参阅设备的 IP 接口配置。

  2. 验证邻居事件代理的静态 IP 地址之间的 IP 连接性。

    在以下示例中,邻居事件代理的静态 IP 接口地址为 192.168.1.11

    solace(configure)# ping msg-backbone:192.168.1.11
    PING 192.168.1.11 56(84) bytes of data.
    64 bytes from 192.168.1.11: icmp_seq=1 ttl=20 time=0.105ms
    64 bytes from 192.168.1.11: icmp_seq=2 ttl=20 time=1.570ms
    64 bytes from 192.168.1.11: icmp_seq=3 ttl=20 time=0.098ms
    64 bytes from 192.168.1.11: icmp_seq=4 ttl=20 time=0.089ms

    --- 192.168.1.11 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 4000ms
    rtt min/avg/max/mdev = 0.089/0.466/1.570/0.736 ms
  3. 在每个事件代理上,配置一个路由接口并启用 Solace 路由协议。

    路由接口应该是步骤 1 中已创建的静态 IP 接口相同的物理接口,无论是 NAB 上的一个端口还是一个 LAG 接口。

    solace# configure
    solace(configure)# routing
    solace(configure/routing)# interface 1/6/1
    solace(configure/routing)# no shutdown

在成功完成上述事件代理级别的配置任务后,请执行以下操作:

  1. 配置邻居事件代理之间的 CSPF 邻居链接连接。

    例如,假设邻居事件代理的名称为 solace10solace11,它们的静态 IP 地址分别为 192.168.1.10192.168.1.11

    solace10(configure)# routing
    solace10(configure/routing)# multi-node-routing
    solace10(configure/routing/multi-node-routing)# create cspf neighbor solace11
    solace10(...ting/multi-node-routing/cspf/neighbor)# connect-via 192.168.1.11
    solace11(configure)# routing
    solace11(configure/routing)# multi-node-routing
    solace11(configure/routing/multi-node-routing)# create cspf neighbor solace10
    solace11(...ting/multi-node-routing/cspf/neighbor)# connect-via 192.168.1.10
  2. 对 MNR 网络中的每个 CSPF 邻居链接连接的两端重复上一步。 好的,继续翻译:

配置邻居队列

CSPF 邻居队列用于在消息通过数据连接发送到邻居事件代理之前对其进行排队。这些 TCP 传输队列用于管理从事件代理通过路由链接传输到其邻居的数据流。

您可以执行以下任务:

  • 配置最大邻居队列深度
  • 配置最小消息突发量

在尝试配置事件代理上的 CSPF 邻居队列之前,请始终联系 Solace 获取技术支持。否则,可能会导致由于对事件代理性能的意外副作用而导致数据丢失或服务中断.

配置最大邻居队列深度

每个邻居队列都有一个与之关联的最大深度,以工作单元为单位,其中工作单元代表一条消息的 2048 字节。当新消息被放置在邻居队列上时,其深度以工作单元为单位与队列的配置最大深度进行比较。

如果 CSPF 邻居队列的深度达到或超过配置的最大深度,并且收到新消息,则可以丢弃队列中当前最旧的消息,以为最新收到的消息腾出空间。当这种情况发生时,数据平面统计信息 Egress Congestion Discards 会增加。

要修改 CSPF 邻居队列的最大深度,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf queue
solace(...routing/multi-node-routing/cspf/queue)# max-depth <depth>

其中:

<depth> 是表示邻居队列的工作单元数的整数值。有效范围是 50 到 262144。默认值为 20000。更改此值不会影响已成功放置在队列上的消息。

此命令的否定版本 no max-depth 将邻居重置为相关默认值。

将消息大小转换为工作单元数的公式是:NumWorkUnits = CEILING(message.length/2048)

配置最小消息突发量

如果邻居队列具有足够大的最小突发长度容差,则邻居队列可以暂时超出其最大深度。最小突发长度容差确保邻居队列在接收非常大消息的突发时不会丢失消息。它指定了无论当前配置的最大深度如何,始终允许进入队列的消息数量。

要配置在 CSPF 邻居队列上必须有最小数量的消息,然后队列的深度才会与最大深度设置进行比较(从而允许队列吸收超出允许工作单元数的大型消息突发),请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf queue
solace(...routing/multi-node-routing/cspf/queue)# min-msg-burst <depth>

其中:

<depth> 是表示队列突发深度的消息数的整数值。有效范围是 0 到 262144。默认值为 255。更改此值不会影响已成功放置在队列上的消息。

此命令的否定版本 no min-msg-burst 将队列突发深度的消息数重置为默认值 255。

查看CSPF队列设置

要查看事件代理上的 CSPF 队列设置,请输入以下命令:

solace> show cspf queue

配置邻居链接加密

要在邻居事件代理之间的数据连接上使用 TLS/SSL 加密,需要在路由链接的两个事件代理上进行以下配置:

  • 必须为事件代理配置并启用 TLS/SSL 服务,这需要在本地事件代理上配置 TLS/SSL 服务器证书。请参阅管理服务器证书。
  • 必须在事件代理上加载标识本地事件代理的客户端证书文件。请参阅配置要呈现给邻居的证书文件。
  • 根据您的网络环境,确保您的证书验证设置适当。请参阅配置证书验证设置。
  • 必须启用并配置邻居链接的 TLS/SSL 加密。请参阅启用 TLS/SSL 数据加密。

配置要呈现给邻居的证书文件

要使用 TLS/SSL 数据连接与邻居事件代理通信,您必须配置邻居链接在与邻居建立数据连接时将呈现给远程事件代理的客户端证书。指定的文件必须已经通过 copy 特权 EXEC 命令添加到 /usr/sw/jail/certs 目录中(请参阅复制文件)。

要配置要使用的证书文件,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf
solace(...igure/routing/multi-node-routing/cspf)# ssl
solace(...e/routing/multi-node-routing/cspf/ssl)# client-certificate
solace(...e-routing/cspf/ssl/client-certificate)# certificate-file <filename>

其中:

<filename> 是要加载的证书的文件名。证书必须以隐私增强邮件(PEM)格式编码。最多可以加载 64 个 CA 证书。一旦配置了证书,就会在内部保存其副本。certs 目录中的文件不再需要。

此命令的否定版本 client-certificate 将撤销指定的客户端证书。

配置证书验证设置

您可以配置事件代理上的证书验证设置,该事件代理可以接受来自邻居事件代理的 TLS/SSL 数据连接。这些设置用于验证在 TLS/SSL 握手期间从邻居事件代理传递到本地事件代理的客户端证书。

您可以调整的配置参数包括以下内容:

  • 验证服务器名称
  • 最大证书链深度
  • 验证证书日期

验证服务器名称

您可以启用或禁用 TLS 身份验证机制以验证用于连接到邻居的名称。如果启用,则用于该连接的服务器名称将与从邻居返回的证书中的主题备用名称(SAN)扩展中的服务器名称进行验证。

此参数对于从版本低于 9.9 的版本升级的现有 VPN 的代理默认为禁用;否则,默认为启用。

要启用 MNR 链接的服务器名称验证,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf
solace(...igure/routing/multi-node-routing/cspf)# ssl
solace(...e/routing/multi-node-routing/cspf/ssl)# certificate-validation
solace(...uting/cspf/ssl/certificate-validation)# validate-server-name

此命令的否定版本 no validate-server-name 禁用服务器名称的验证。

最大证书链深度

证书链的深度是证书链中签名 CA 证书的数量,直到可信的自签名根 CA 证书。设置最大证书链深度意味着事件代理将拒绝任何深度高于最大限制的证书。

要配置 MNR 链接的最大证书链深度,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf
solace(...igure/routing/multi-node-routing/cspf)# ssl
solace(...e/routing/multi-node-routing/cspf/ssl)# certificate-validation
solace(...uting/cspf/ssl/certificate-validation)# max-certificate-chain-depth <max-depth>

其中:

<max-depth> 是从 0 到 8 的数字,指定证书链中可能存在的签名 CA 证书的最大数量。默认值为 3。

此命令的否定版本 no max-certificate-chain-depth 将此参数重置为其默认值。

验证证书日期

证书可能指定“不早于”和“不晚于”日期,以提供证书有效的日期范围。此设置将启用或禁用这些日期的验证。如果禁用此检查,事件代理将接受证书,即使证书中提供的有效日期范围未满足。默认情况下,证书日期的验证是启用的。

要启用 MNR 链接的证书日期验证,请输入以下命令:

solace(configure)# routing
solace(configure/routing)# multi-node-routing
solace(configure/routing/multi-node-routing)# cspf
solace(...igure/routing/multi-node-routing/cspf)# ssl
solace(...e/routing/multi-node-routing/cspf/ssl)# certificate-validation
solace(...uting/cspf/ssl/certificate-validation)# validate-certificate-date

此命令的否定版本 no validate-certificate-date 禁用证书日期的验证。

查看MNR信息

您可以使用以下 show 命令查看 MNR 信息。

要显示事件代理上的 CSPF 邻居链接的配置和状态,请输入以下命令:

solace> show cspf neighbor <physical-router-name> [stats [queues | detail] | connections [wide] | detail]

其中:

  • <physical-router-name> 是邻居事件代理的名称。此名称不能以“v:”开头,因为这表示虚拟路由器。
  • stats 要求显示指定邻居的消息的基本数据平面统计信息。
  • queues 要求显示指定邻居的排队消息的数据平面统计信息。
  • detail 要求显示指定邻居的消息的详细数据平面统计信息。
  • connections 要求显示与指定邻居之间的 TCP 连接状态信息。
  • connections wide 要求在宽屏计算机显示格式(300+ 字符宽度)中显示邻居之间的详细 TCP 连接状态信息。
  • detail 要求显示 CSPF 链接的配置和状态的详细信息。

清除CSPF邻居链接统计信息

要清除与邻居链接相关的 CSPF 消息统计信息,请输入以下命令:

solace> enable
solace# clear cspf neighbor <physical-router-name> stats

其中:

<physical-router-name> 是邻居事件代理的名称。此名称不能以“v:”开头,因为这表示虚拟路由器。

输入此命令时,所有 CSPF 消息统计信息将重置为 0,并从此时开始重新记录 CSPF 统计信息。

查看SMRP订阅信息

要查看事件代理上的 SMRP 订阅信息,请输入以下命令:

solace> show smrp subscriptions [message-vpn <vpn-name>] [destination-name <destination-name>] [remote-router] [client] [queue] [topic-endpoint] [primary] [backup] [static] [{[dto-priority <priority>] [topic <topic-str>] [persistent] [non-persistent]} | {summary}]

其中:

  • message-vpn 要求仅显示指定 Message VPN 的 SMRP 订阅,<vpn-name>。给定的 Message VPN 名称可以是其完整名称,或部分名称,使用通配符字符 ? 表示名称中的一个字符,或使用通配符字符 * 表示名称中的零个或多个字符。仅输入通配符字符 * 作为名称将显示所有 Message VPN。
  • destination-name 要求仅显示指定目的地的 SMRP 订阅,<destination-name>。给定的目的地名称可以是目的地的完整名称,或部分名称,使用通配符字符 ? 表示名称中的一个字符,或使用通配符字符 * 表示名称中的零个或多个字符。仅输入通配符字符 * 作为名称将显示所有目的地。
  • remote-router 要求仅显示对远程事件代理的 SMRP 订阅。
  • client 要求仅显示对本地客户端的 SMRP 订阅。
  • queue 要求仅显示对本地队列的 SMRP 订阅。
  • topic-endpoint 要求仅显示对本地主题端点的 SMRP 订阅。
  • primary 要求仅显示对主本地目的地的 SMRP 订阅。
  • backup 要求仅显示对备份本地目的地的 SMRP 订阅。
  • static 要求仅显示对静态本地目的地的 SMRP 订阅。
  • <priority> 要求仅显示指定 Deliver-To-One (DTO) 客户端优先级级别的 SMRP 订阅。有效值为 P1、P2、P3、P4 或 DA(始终交付)。
  • topic 要求显示主题订阅字符串为 topic-str 的 SMRP 订阅。给定的主题订阅字符串必须是形式 a/b/c
  • persistent 要求仅显示对持久主题的 SMRP 订阅。
  • non-persistent 要求仅显示对非持久主题的 SMRP 订阅。
  • summary 要求显示每个目的地的 SMRP 订阅数量。

除了 Solace 消息格式(SMF)主题订阅外,show smrp subscriptions 用户 EXEC 命令还可能显示消息队列遥测传输(MQTT)主题订阅。由于此命令必须能够表示 SMF 和 MQTT 主题语法,如果主题订阅使用其主题语法中有特殊含义的字符(例如,通配符),则这些字符可能会在输出中显示为转义字符。

直接消息健康检查可以与设备和负载均衡器一起使用,以水平扩展直接消息传递。 好的,继续翻译:

防止订阅传播竞争条件

如果您使用 MNR 进行请求/回复消息传递,则必须使用 Solace API 的请求/回复方法,以防止与订阅传播相关的可能竞争条件。具体来说,您必须使用内置的请求/回复主题(默认为内部 P2P 主题)。如果您将 ReplyTo 设置为自定义值,则可能会出现订阅延迟和订阅传播竞争条件的可能性。

有关请求/回复消息传递的更多信息,请参阅请求/回复消息传递。

有关 Solace API 的更多信息,请参阅 PubSub+ 消息传递 API。