跳到主要内容

配置 VPN 级复制设置

默认情况下,消息 VPN 没有启用复制设施。要使用复制设施,必须在两个站点的消息 VPN 上启用复制。

当您在站点使用冗余事件代理时,为一个消息 VPN 配置复制设置,然后它们将自动传播到其伙伴。(复制桥配置设置是例外 - 它们不会在复制站点之间自动传播。)

配置ACK传播间隔

客户端从持久端点消费消息后,会生成一个确认(即一个‘ACK’),以便从消息池中移除消息。(如果从消息池中删除消息,也会生成 ACK。)

默认情况下,对于具有活动复制状态的消息 VPN,客户端从其端点消费一定数量的消息后,ACK 消息会传播到具有备用复制状态的伙伴消息 VPN。当这个 ACK 消息被伙伴复制消息 VPN 上的相应持久端点接收时,这些端点会移除那些被复制到它的消息。这个过程确保了两个站点之间的消息状态保持同步。

如果未达到消息间隔,一秒周期性计时器确保 ACK 及时传播。这个 ACK 传播间隔仅影响复制桥上的带宽使用,通常不需要调整。

要设置传播 ACK 消息的间隔,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# replication
solace(configure/message-vpn/replication)# ack-propagation
solace(...ssage-vpn/replication/ack-propagation)# interval messages [messages]

其中:

  • messages 是在将 ACK 消息传播到伙伴站点上具有复制备用状态的同一消息 VPN 之前必须确认的消费消息数量。默认值是 20。

此命令的 no 版本,no messages,将 ack-propagation 间隔重置回默认值。

默认情况下,活动复制消息 VPN 上的端点会将消费者 ACK 传播到备用复制消息 VPN;但是,可以在每个端点的基础上启用/禁用 ACK 传播(对于队列,参见启用/禁用向复制 VPN 传播消费者 ACK;对于主题端点,参见启用/禁用向复制 VPN 传播消费者 ACK)。

配置复制桥

复制桥用于连接具有活动复制状态的消息 VPN 和伙伴站点上具有备用复制状态的同名消息 VPN。当为消息 VPN 启用复制时,会自动创建一个名为 #MSGVPN_REPLICATION_BRIDGE 的复制桥。

Config-Sync 不会自动同步此对象或属性。因此,如果事件代理在高可用性(HA)冗余配置中使用,或在复制站点中使用,您必须在每个伙伴事件代理或复制消息 VPN 上手动配置此对象/属性。

要确定对象/属性是否由 Config-Sync 同步,请在 CLI 命令参考中查找用于配置对象/属性的命令,或在 Solace CLI 中输入命令,以 " ?" 结尾。帮助列表是否同步了对象/属性。

用于复制桥的单向客户端配置文件是例外 - 这些在复制伙伴之间是同步的。

您可以为给定消息 VPN 的复制桥执行以下配置:

  • 配置认证方案
  • 启用压缩数据的使用
  • 配置消息池窗口大小
  • 配置重试延迟
  • 启用桥连接的 TLS/SSL 加密
  • 设置单向桥的客户端配置文件

配置认证方案

可以在复制桥上设置认证,以在复制站点之间提供安全连接。提供基本和客户端证书认证模式。基本使用基本用户名和密码认证进行复制桥连接,客户端证书使用客户端证书认证进行复制桥连接。

在认证场景中,复制备用消息 VPN 充当客户端,复制活动消息 VPN 充当认证服务器。

为基本认证配置客户端用户名

要设置用于基本复制桥认证的客户端用户名,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# bridge
solace(configure/message-vpn/replication/bridge)# authentication basic
solace(...plication/bridge/authentication/basic)# client-username <name> [password <password>]

其中:

  • <name> 是桥用于登录复制备用消息 VPN 的客户端用户名。用户名可以包含多达 189 个字符。
  • <password> 是可选密码,如果设置,则也需要用于认证。密码可以包含多达 128 个字符。

此命令的 no 版本,no client username,移除客户端用户名及其关联的任何密码。

  • 只有在复制桥关闭时才能为复制桥配置客户端用户名。
  • 用于建立复制桥连接的客户端用户名必须被授予创建桥连接的权限(参见允许桥连接)。

为客户端证书认证配置证书文件

要设置用于客户端证书复制桥认证的证书文件,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# bridge
solace(configure/message-vpn/replication/bridge)# authentication client-certificate
solace(...dge/authentication/client-certificate)# certificate-file <filename>

其中:

  • <filename> 是用于认证的证书文件名。证书必须位于事件代理的 /usr/sw/jail/certs 目录中,并具有 .pem 扩展名。配置证书后,会保存其副本。不再需要 certs 目录中的文件。

此命令的 no 版本,no certificate file,将证书文件与当前复制桥解关联。

要使认证成功,证书文件中提供的通用名称必须存在于远程消息 VPN 上的客户端用户名上。客户端用户名必须已启用,并且使用该客户端用户名的客户端配置文件必须启用 allow-bridge-connections。提供的客户端证书还必须在远程消息 VPN 上启用,并符合远程消息 VPN 上指定的客户端证书认证设置。

只能在复制桥关闭时配置证书文件。

如果没有为复制桥配置客户端证书文件,桥将出示事件代理的服务器证书进行认证。

启用压缩数据的使用

可以为复制桥的数据连接启用压缩,以更好地利用可用的 WAN 带宽。默认设置是不压缩。

要启用压缩,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/bridge)# compressed-data

此命令的 no 版本,no compressed-data,禁用压缩的使用。

在消息 VPN 处于备用状态时配置复制桥的压缩之前,必须禁用消息 VPN 上的复制(参见启用复制)。

配置消息池窗口大小

复制桥的消息池窗口大小的默认值预计在大多数典型部署中都能很好地工作。配置过大的消息池窗口大小可能会对网络性能产生负面影响。在更改此参数之前,请联系 Solace 以协助选择适合您的网络条件的值。

消息池窗口大小决定了在具有活动复制状态的消息 VPN 必须接收确认之前,可以通过复制桥发送多少未确认的配置消息。

要配置消息池窗口大小,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/bridge)# message-spool
solace(...-vpn/replication/bridge/message-spool)# window-size <number>

其中:

  • <number> 是一个从 1 到 65536 的整数,设置窗口中可以有多少消息。默认值是 255。

此命令的 no 版本,no message-spool window-size,将消息池窗口大小值重置回默认值。

在配置消息池窗口大小时,必须通过关闭消息 VPN 上的复制功能来禁用复制桥连接(参见启用复制)。

配置重试延迟

要配置在复制桥上重试连接复制伙伴之前必须经过的秒数,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/bridge)# retry-delay <seconds>

其中:

  • <seconds> 是一个从 1 到 255 的整数,指定在重试连接复制伙伴之前等待的秒数。默认值是 3。

此命令的 no 版本,no retry-delay,将等待秒数重置回默认值。

在配置重试延迟值之前,必须通过关闭消息 VPN 上的复制功能来禁用复制桥连接(参见启用复制)。

启用桥连接的TLS/SSL加密

可以在复制桥上启用 TLS/SSL 加密。

要启用,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/bridge)# ssl

要禁用,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/bridge)# no ssl

设置单向桥的客户端配置文件

默认情况下,当从具有活动复制状态的消息 VPN 建立到伙伴站点上具有备用复制状态的同名消息 VPN 的桥连接时,会使用非编辑的默认客户端配置文件 #client-profile 的 TCP 参数(此默认客户端配置文件的 TCP 最大窗口大小为 2 MB)。然而,如果 #client‑profile 客户端配置文件使用的 TCP 参数不适合您的网络,您可以使用具有活动复制状态的消息 VPN 上的另一个客户端配置文件的参数。

要指定一个将为单向桥链路提供 TCP 参数的客户端配置文件,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/bridge)# unidirectional
solace(...vpn/replication/bridge/unidirectional)# client‑profile <name>

其中:

  • <name> 是具有活动复制状态的消息 VPN 上存在的客户端配置文件的名称。客户端配置文件名称可以包含多达 32 个字母数字字符(区分大小写)。

此命令的 no 版本,no client-profile,移除当前客户端配置文件分配,并重新分配默认客户端配置文件 #client-profile

配置复制队列

当为消息 VPN 启用复制时,会自动创建一个复制队列(命名为 #MSGVPN_REPLICATION_DATA_QUEUE)。消息在此队列中被卷绕,然后才在复制伙伴上复制。

您可以设置以下复制队列配置参数:

  • 最大池使用量
  • 丢弃时拒绝消息给发送者

最大池使用量

要配置消息 VPN 的复制队列可以使用的最大消息池磁盘空间,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/queue)#
solace(configure/message-vpn/replication/queue)# max-spool-usage <size>

其中:

  • <size> 是指定复制队列允许使用的最大消息池磁盘空间的整数值,单位为 MB。

此命令的 no 版本,no max-spool-usage,将队列可用的消息池使用配额重置回默认值。

丢弃时拒绝消息给发送者

reject-msg-to-sender-on-discard 选项设置当发布的消息没有入队并且被丢弃时,复制队列是否会向客户端提供负面确认(即一个“nack”)。当使用复制事务时,如果事务不能放入复制队列,客户端也会收到负面确认。默认情况下,reject-msg-to-sender-on-discard 选项是启用的。

可以在消息 VPN 的复制队列上配置 reject-msg-to-sender-on-discard 选项。通常,不应禁用此值,因为禁用它将允许无法复制的保证消息或事务被接受。然而,如果由于备用站点的长期故障导致复制队列已满,可以禁用此选项,以便提供非复制服务。

要配置复制队列在保证消息和事务没有入队并且被丢弃时的行为,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication/queue)#
solace(configure/message-vpn/replication/queue)# reject-msg-to-sender-on-discard

其中:

  • reject-msg-to-sender-on-discard 启用队列的 reject-msg-to-sender-on-discard 选项,以便在消息或事务没有入队并且被丢弃时,会话事件(即 nacks)发送给发布客户端。这些消息不允许在任何其他端点上入队。

此命令的 no 版本,no reject-msg-to-sender-on-discard,禁用队列的 reject-msg-to-discard 选项,以便在消息或事务没有入队复制队列并且被丢弃时,不向发布客户端返回会话事件。

配置拒绝消息当同步不合格

如果具有活动复制状态的消息 VPN 在将复制的消息和事务传播到具有备用复制状态的伙伴消息 VPN 时使用同步复制,并且复制桥非常慢或断开连接,消息 VPN 可以切换到异步复制模式(这是默认操作),或者可以维持同步复制模式并向发布复制消息和事务的客户端发送错误指示(即 nacks),当它们不能传播到备用消息 VPN 时。

要配置给定的消息 VPN,使其维持同步复制模式并回向发布客户端发送 nacks,请在一个活动站点的事件代理上输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# reject-msg-when-sync-ineligible

此命令的 no 版本,no reject-msg-when-sync-ineligible,配置给定的消息 VPN 在复制桥出现问题时切换到异步复制。这是默认行为。

  • 当配置为拒绝消息当同步不合格并且复制服务降级时(即,消息 VPN 同步不合格),新的同步 XA 事务将无法启动。
  • 这些命令可以在客户端连接并发布消息时执行,无论是否启用复制。

配置复制主题订阅

要配置用于复制消息到伙伴站点上相应消息 VPN 的主题模式,请在一个活动站点的事件代理上输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# create replicated-topic <topic-pattern>

其中:

  • topic pattern 是用于复制消息到复制伙伴上相应消息 VPN 的主题模式。通常,主题模式是主题订阅。在这种情况下,只有主题与配置的复制主题订阅匹配的消息才被复制到伙伴复制站点上的相应消息 VPN。要启用对队列的复制,主题模式也可以表示队列。例如,队列的主题模式可以是 “#P2P/QUE/<queueName>”。

您还可以通过在主题订阅前添加一个领先的 "!" 字符来指定主题订阅异常。在这种情况下,与配置的主题订阅异常匹配的主题的消息不会被复制到复制站点上的相应消息 VPN。例如,如果您添加了一个主题订阅 "animals/f*" 和一个主题订阅异常 "!animals/fox",发布到 "animals/frog" 的消息会被复制到复制站点;然而,发布到 "animals/fox" 的消息则不会。有关订阅异常的更多信息,请参见系统级订阅异常配置。

此命令的 no 版本,no replicated-topic,移除指定的复制主题模式。

  • 主题模式可以包括 * 和 > 通配符字符。
  • 由于匹配复制主题的直接消息将被提升为保证消息,建议避免使用可以匹配直接消息的通配符,以防止不必要的消息提升。
  • 匹配 replicated-topic 的消息根据配置的复制模式(参见下面的复制模式)同步或异步复制。复制模式是在每个复制主题的基础上指定的。
  • 当使用本地和 XA 事务时,事务中发布的消息必须匹配主题模式才能被复制。如果一个事务包含一些匹配复制主题的消息和一些不匹配的消息,只有匹配的消息作为事务的一部分被传播到复制伙伴。

复制模式

要设置复制主题订阅的复制模式,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# create replicated-topic <topic-pattern>
solace(...sage-vpn/replication/replicated-topic)# replication-mode {sync | async}

其中:

  • sync 是同步复制模式。当使用同步复制模式时,与复制主题订阅匹配的主题的消息在消息被复制到伙伴复制站点之前不会被事件代理确认。消息在本地被卷绕后,消息复制和发布者确认被序列化。
  • async 是异步复制模式。当使用异步复制模式时,与复制主题订阅匹配的主题的消息在消息被卷绕到活动站点的本地之前不会被事件代理确认。消息被卷绕后,消息复制和发布者确认异步进行。Async 是默认的复制模式。

此命令的 no 版本,no replication-mode,将复制模式设置为默认值。

  • 当使用事务时,复制主题订阅的复制模式被忽略。事务的复制模式由消息 VPN 设置决定。有关更多信息,请参见复制模式。
  • 主题订阅异常仅适用于使用相同复制模式的订阅。例如,如果您配置了一个异步主题订阅 "animals/f*" 和一个同步主题订阅异常 "!animals/fox",发布到 "animals/fox" 的消息将在伙伴复制站点上接收。

显示复制主题订阅

要显示整个系统或每个消息 VPN 基础上配置的复制主题订阅,请输入以下 User EXEC 命令:

solace> show replicated-topic <topic> [message-vpn <vpn-name>] [replication-mode {sync | async}] [count <num-elements>]

其中:

  • <topic> 是复制主题模式的字符串表示(即,要么是主题订阅,要么是队列名称)。主题模式可以包括 CLI 通配符结构,如 * 和 >。
  • message-vpn <vpn-name> 是消息 VPN 名称。消息 VPN 名称可以包含 1 到 32 个字符,并且可以包含通配符 * 或 ?。
  • replication-mode 根据复制模式过滤复制主题订阅。
  • sync 请求仅列出配置为使用同步复制模式的主题订阅。
  • async 请求仅列出配置为使用异步复制模式的主题订阅。
  • count 指定要显示的显示元素数量。<num-elements> 是指定元素数量的整数。有效值是 1 到 4294967295。

img示例:

solace> show replicated-topic * message-vpn vpn-1 replication-mode async

消息 VPN: vpn-1
复制
主题 模式
------------------------------------------------------------------------------
t-1-1-1 async
t-1-1-2 async
t-1-1-3 async

配置事务复制模式

事务复制模式控制事务是同步复制还是异步复制。同步事务等待事务在备用站点完成,而异步事务只等待事务存储在活动站点的复制队列上。异步事务提供更好的性能,但它们允许在某些故障转移场景中消息重复。在活动站点发生不可恢复的故障时,还可能丢失复制队列中的消息或事务。

要配置消息 VPN 的事务复制模式,请在 Solace CLI 中输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# transaction-replication-mode {async| sync}

其中:

  • async 将消息 VPN 的事务复制模式设置为异步(默认状态)。
  • sync 将消息 VPN 的事务复制模式设置为同步。

此命令的 no 版本将模式设置为 async。

  • 对此设置的更改不影响正在进行的事务。这些事务将使用其之前的复制模式完成。新启动的事务将使用新设置。
  • 使用事务时,复制主题的复制模式被忽略。例如,在同步事务中发布到异步主题的消息使用同步处理。

配置VPN复制状态

要配置消息 VPN 的复制状态,请输入以下 CONFIG 命令:

solace(configure/message-vpn/replication)# state {standby|active}

其中:

  • standby 将消息 VPN 的复制状态设置为备用(默认状态)。

  • active 将消息 VPN 的复制状态设置为活动。

  • 当执行此命令时复制处于关闭状态,它设置了复制启用时使用的复制状态。当执行此命令时复制处于启用状态,它会立即更改复制状态。

  • 当复制状态从活动转换为备用时,除 #MSGVPN_REPLICATION_BRIDGE 和在其客户端配置文件中设置了 allow-clients-when-standby 的客户端外,所有客户端都会从事件代理断开连接。客户端断开连接后,在 VPN 保持备用状态时,不允许它们重新连接。

  • 当复制状态从活动转换为备用时,所有活动和空闲的 XA 事务都会被取消,因为它们还没有达到需要持久化的状态。应用程序服务器事务管理器将正确恢复这些事务。

启用复制

默认情况下,消息 VPN 上的复制处于禁用状态。

  • 在为消息 VPN 启用复制功能之前,请确保消息 VPN 的复制状态(参见监控复制)和复制桥和复制队列已适当配置(参见配置复制桥和配置复制队列)。
  • 如果满足以下条件,无法为消息 VPN 启用复制:
    • 在事件代理上禁用了保证消息传递和消息池。(参见启用保证消息池。)
    • 未配置复制桥客户端用户名。(参见配置复制桥。)
    • 未配置复制伙伴的 virtual-router-name。(参见配置复制伙伴。)

Config-Sync 不会自动同步此对象或属性。因此,如果事件代理在高可用性(HA)冗余配置中使用,或在复制站点中使用,您必须在每个伙伴事件代理或复制消息 VPN 上手动配置此对象/属性。

要确定对象/属性是否由 Config-Sync 同步,请在 CLI 命令参考中查找用于配置对象/属性的命令,或在 Solace CLI 中输入命令,以 " ?" 结尾。帮助列表是否同步了对象/属性。

  • 要为消息 VPN 启用复制功能,请输入以下 CONFIG 命令:
solace(configure/message-vpn/replication)# no shutdown [force-use-existing-queue | force-recreate-queue]

其中:

  • force‑use‑existing‑queue 保留任何预先存在的复制队列上的消息,并重用现有的复制队列。在使用此选项之前,请确保消息不旧或以其他方式不适合传播;此选项只能在存在预先存在的复制队列时指定。
  • force-recreate-queue 会导致任何预先存在的复制队列上的消息被丢弃,然后重新创建复制队列。请注意,此选项只能在存在预先存在的复制队列时指定。

通常,no shutdown 命令可以不加任何进一步的参数使用 - 它启用消息 VPN 的复制功能,并创建新的桥和复制队列对象。然而,如果您遇到即使复制被禁用,之前的复制队列仍然存在的情况,您可以使用命令中的强制选项来处理预先存在的复制队列和任何卷绕到其中的消息。

  • 要为给定的消息 VPN 禁用复制,请输入以下 CONFIG 命令:
solace(configure/message-vpn/replication)# shutdown

禁用消息 VPN 的复制会删除其关联的复制桥和复制队列对象,这也可能删除任何入队的消息。因此,建议在关闭复制之前确保复制队列上没有消息入队。