跳到主要内容

消息VPN桥接

消息VPN桥接可以连接两个消息VPN,使得发布到一个消息VPN且匹配桥接设置的主题订阅的消息也能被传递到链接的消息VPN。

消息VPN桥接允许将与远程消息VPN的明确主题订阅集匹配的直连消息传递到本地消息VPN。

当为远程消息VPN配置了额外参数时,保证消息也可以通过消息VPN桥接传递。

您可以在以下场景中使用消息VPN桥接:

  • 链接两个不同名称的消息VPN,以使发布到一个消息VPN的直连或保证消息能够被传递到另一个消息VPN。链接的消息VPN可以位于同一事件代理上,也可以位于两个独立的事件代理上。
  • 在两个独立的事件代理上链接两个相同名称的消息VPN,以使发布到一个消息VPN的保证消息能够被传递到另一个消息VPN。
  • 在两个独立的事件代理上链接两个相同名称的消息VPN,以使发布到一个消息VPN的直连消息能够被传递到另一个消息VPN。此场景与多节点路由不同。有两个关键区别:消息VPN桥接只传输与桥接的主题订阅匹配的直连消息,且消息VPN桥接不交换事件代理及其拓扑使用的完整主题订阅集。

PubSub+ Cloud事件代理服务只有一个消息VPN,因此PubSub+ Cloud中的消息VPN桥接总是在两个独立的事件代理服务之间。由于PubSub+ Cloud允许您快速创建多个事件代理服务,您可以使用单独的服务来隔离主题和客户端,而不是在同一个软件事件代理或设备上使用多个消息VPN。

桥接可以是单向的(消息只在一个方向上通过桥接传递)或双向的(消息在两个方向上通过桥接传递)。根据为每个本地消息VPN分配给桥接的远程主题订阅,传递的方向可能不同。

本节讨论了消息VPN桥接的行为、配置和使用,包括:

  • 配置消息VPN桥接
  • 管理消息访问
  • 网络互连
  • 建立消息VPN桥接
  • 通过消息VPN桥接的保证消息传递
  • 单向与双向消息VPN桥接

如果您正在使用动态消息路由(DMR),您可以使用DMR而不是静态消息VPN桥接来传递消息到链接的消息VPN。有关更多信息,请参见DMR或消息VPN桥接?

当您在也启用了复制的消息VPN中配置双向消息VPN桥接时,避免让桥接的两端订阅相同的主题,如果这些主题也配置了复制。这个限制也适用于重叠的通配符订阅。换句话说,它适用于任何会匹配从桥接接收的消息的订阅。如果存在这样的主题,那么在复制故障转移后,它们可能会导致原本从桥接接收的消息被发送回桥接到原始事件代理。这会导致原始代理中的消息重复。

配置消息VPN桥接

您可以通过两种方式设置消息VPN桥接:

PubSub+ Broker ManagerBroker Manager提供了一个点击连接配置向导来设置消息VPN桥接。Solace建议使用这种方法。您只需要从桥接的一端启动向导,向导就会在两端设置桥接。有关更多信息,请参见创建消息VPN桥接。手动设置或者,您可以使用Solace CLI手动配置消息VPN桥接。有关更多信息,请参见消息VPN桥接配置。

管理消息访问

您可以使用消息VPN桥接来管理从一个消息VPN传递到另一个消息VPN的消息。当消息VPN桥接链接两个消息VPN时,分配给桥接的主题订阅(或桥接队列用于保证消息)决定了哪些消息从远程消息VPN传递到与之链接的本地消息VPN。

典型的消息VPN桥接配置

img

网络互连

此场景包括多节点路由,这不被PubSub+ Cloud支持。您可能还想考虑在这种类型的scenario中使用动态消息路由。

消息VPN桥接可以用来链接两个网络。在此用例中,整个远程网络(而不仅仅是单个远程客户端)可以加入到另一个网络,形成一个扩展的内部网络。

这种配置对于在不同物理位置设有办事处和私有网络的公司非常有用,它们需要仔细控制跨站点之间昂贵的广域网链路上的消息流。在此场景中,每个位置使用多节点路由实现完全分布式的消息VPN连接以传递直连消息,消息VPN桥接用于通过局域网或城域网传输特定主题的消息。

用于网络互连的消息VPN桥接

img

一组事件代理可以被配置为邻居进行多节点路由,以高效地通过网络路由流量。该组中的网关事件代理随后可以通过消息VPN桥接链接,以便网络中匹配选定主题的消息可以被传递到连接到这些邻居组之外的事件代理的客户端。

在这种类型的消息VPN桥接应用中:

  • 发布者通常位于核心网络,订阅者位于网络边缘
  • 消息VPN桥接订阅核心消息VPN中的一小部分主题

具有多节点路由的核心中的消息VPN桥接

img

建立消息VPN桥接

要建立消息VPN桥接,您需要在本地消息VPN中创建桥接,这会自动创建桥接的内部客户端。此客户端可以与远程消息VPN建立连接。在远程事件代理上,消息VPN桥接像客户端连接一样工作,对远程事件代理的登录尝试以与其他客户端连接相同的方式进行身份验证。控制和数据消息通过客户端连接在本地和远程消息VPN之间发送。

创建消息VPN桥接后,您必须配置以下参数,然后才能启用桥接并开始传输消息:

  • 远程消息VPN和事件代理 - 这是接收消息的远程消息VPN和事件代理。事件代理可以通过其名称或“通过”地址指定,以IP地址或DNS名称表示。也可以指定多个远程消息VPN,以优先顺序排列。这些冗余的远程消息VPN提供了一些保护,以防桥接首先连接的远程消息VPN变得不可用。

如果您想建立一个桥接到位于同一本地事件代理上的远程消息VPN,请使用127.0.0.1的IP地址,并且不要指定物理接口。此配置将建立一个回环消息VPN桥接。

  • 远程消息VPN身份验证方案 - 桥接用于与远程消息VPN进行身份验证的身份验证方案。为桥接配置的每个远程消息VPN都需要一个身份验证方案。
    • 基本身份验证客户端用户名 - 如果配置了基本身份验证,用于与远程消息VPN进行身份验证的用户名。还可以指定一个可选的密码。
    • 客户端证书身份验证证书文件 - 如果配置了客户端证书身份验证,用于与远程消息VPN进行身份验证的证书文件。如果没有指定证书文件,桥接将呈现事件代理的服务器证书进行身份验证。

默认情况下,远程消息VPN桥接连接对客户端不可用 - 您必须首先在分配给客户端用户名的客户端配置文件中配置权限。您可以通过客户端分配的客户端配置文件启用创建桥接连接的权限。有关更多信息,请参见为设备和软件事件代理允许桥接连接和为PubSub+ Cloud创建客户端配置文件。

  • 远程订阅主题 - 如果您想通过消息VPN桥接传输直连消息,请为此桥接配置一个或多个主题订阅,以吸引发布到远程消息VPN的直连消息。主题被添加到桥接的顶层,并且适用于所有主机。可以在桥接启用时更改主题集。

  • 远程消息池队列 - 如果您想通过消息VPN桥接传输保证消息,请使用此参数指定远程消息VPN上现有的持久队列(具有独占访问类型),以便消费者流将连接到该队列。必须向队列添加主题订阅,以吸引发布到特定主题的消息。

还可以配置以下参数(如果它们没有被修改,默认值将被使用):

  • 远程交付优先级 - 分配给桥接的订阅的交付优先级。默认情况下,使用最高优先级。

  • 远程消息VPN SSL - 设置是否为远程消息VPN桥接链接使用TLS/SSL加密。这可以为桥接配置的每个远程消息VPN进行配置。如果使用TLS/SSL加密,事件代理上用于远程消息VPN的端口也必须是TLS/SSL端口(默认TLS/SSL端口为55443)。有关使用TLS/SSL与消息VPN桥接的信息,请参见TLS / SSL服务配置。

  • 远程消息VPN压缩数据 - 设置是否为远程消息VPN桥接链接使用数据压缩。这可以为桥接配置的每个远程消息VPN进行配置。如果使用数据压缩,事件代理上用于远程消息VPN的端口也必须是压缩端口(默认压缩端口为55003)。

  • 远程消息VPN连接顺序 - 配置桥接尝试连接到配置的冗余远程消息VPN主机的顺序。这是每个主机配置的(即,对于桥接配置的每个远程消息VPN)。

  • SSL参数 - 设置用于TLS/SSL加密的密码套件列表以及用于验证远程服务器证书身份的信任公用名列表。有关使用TLS/SSL加密与消息VPN桥接的信息,请参见TLS / SSL服务配置。

  • 远程消息VPN消息池窗口大小 - 设置绑定到远程队列的消费者流的请求传输窗口大小。这决定了在必须由远程队列接收确认之前,可以从远程队列通过消息VPN连接传递多少未确认的保证消息。修改窗口大小对于跨高延迟链路的桥接可能很有帮助。

VPN桥接和容错

有关如何建立消息VPN桥接到远程事件代理的连接的详细信息,当这些远程事件代理已经被部署在高可用性(HA)冗余事件代理对中以实现容错时,请参阅桥接到使用冗余的远程事件代理。

通过消息VPN桥接的保证消息传递

要使用消息VPN桥接从远程消息VPN传输保证消息到本地消息VPN,您需要:

  • 在远程消息VPN上提供持久队列
  • 向该持久队列添加持久主题订阅,以便匹配主题的消息可以被保存到队列

然后,当您在本地消息VPN上创建桥接时,您必须指定以下内容:

  • 要连接桥接到的远程消息VPN
  • 远程消息VPN上的配置队列

建立桥接后,消费者流将绑定到队列。然后,发布到远程消息VPN且匹配主题的消息可以通过桥接传输到使用绑定流的消费事件代理。

为了让客户端接收这些消息,必须在本地消息VPN上添加主题订阅:

  • 为了让从桥接接收的保证消息仍然作为保证消息(即,保留它们的非持久或持久传递模式),需要一个已分配匹配主题订阅的持久队列。在这种情况下,接收的消息被持久保存,因为它们被保存到消息池中。
  • 如果从桥接接收的保证消息只匹配本地消息VPN上的客户端主题订阅,消息将被转换为直连消息,并且不会被持久保存。
  • 如果在本地消息VPN上没有匹配的订阅,事件代理将丢弃消息。

例如,保证消息流程可能如下:

  • 事件代理1已配置消息VPN桥接到事件代理2上的持久队列建立保证消息流程

  • 指定的队列在事件代理2上配置了映射到队列的主题列表。

  • 所有发布到任何映射主题的消息都通过保证消息流程通过消息VPN桥接传输到事件代理1

  • 到达事件代理1后,消息被传递给所有具有匹配订阅的队列和主题端点。

消息VPN桥接配置以实现保证消息传递

img

如果您计划建立多个消费者流到远程消息VPN,我们建议在消息VPN中为每个接收保证消息的入站桥接创建单独的持久消息队列。

避免VPN桥接丢失保证消息

当正确配置时,保证消息在通过消息VPN桥接发送时不会丢失。正常操作行为如下:

  • 除非它们可以被本地消息VPN上所有匹配端点保存,否则保证消息不会从未桥接的远程消息VPN的消息池中取消。当保证消息不能成功保存到本地消息VPN上所有匹配订阅的端点时,事件代理会定期重新传输消息跨消息VPN桥接。一旦保证消息成功保存到本地消息VPN上所有匹配端点,然后它就从未桥接的远程消息VPN的消息池中取消。

  • 如果保证消息在重新传输跨桥接时被本地消息VPN拒绝,那么没有其他保证消息可以穿越桥接。这可能导致远程消息VPN上的桥接队列填满。如果桥接队列达到其配额,它将拒绝刚刚发布到远程消息VPN的保证消息。然而,直连消息,包括在本地消息VPN上提升的,仍然可以在这种状态下穿越桥接。

  • 一旦清除了阻止保证消息被本地消息VPN上的端点保存的条件,保证消息开始再次穿越消息VPN桥接。一旦桥接队列低于配额,它开始再次接受新发布的保证消息。

正确的配置需要在持久端点上启用reject-msg-to-sender-on-discard选项,并在本地消息VPN上配置匹配的持久订阅。默认情况下,reject-msg-to-sender-on-discard选项在队列上启用,但在主题端点上禁用。

尽管只需要在本地消息VPN上的一个匹配端点上启用reject-msg-to-sender-on-discard选项就可以获得所需的行为,但建议在本地消息VPN上的所有端点上启用它。有关此功能的更多信息,请参阅消息VPN级保证消息配置。

本地消息VPN还必须有匹配的持久订阅以接收保证消息。如果没有匹配的订阅端点,那么消息将作为“无合格目的地”在本地消息VPN上被丢弃,并且消息从未桥接的远程消息VPN的桥接队列中取消。这防止了桥接消费者流被本地消息VPN上没有目的地的消息阻塞。

如果从桥接接收的保证消息与本地消息VPN上的客户端主题订阅匹配,消息将被转换为直连消息,并且不会被持久保存。

单向与双向消息VPN桥接

必须在消息VPN桥接上静态配置订阅以吸引来自远程消息VPN的直连消息。下图显示了在事件代理1上配置的单向桥接,以便从事件代理2的远程消息VPN传输匹配主题的消息可以通过单个TCP连接过桥。

单向消息VPN桥接

img

可以将上图所示的配置扩展以在两个消息VPN之间创建双向桥接。双向桥接本质上在现有单向桥接的相反方向上创建桥接链接;其中单向桥接的本地消息VPN是新桥接链接的远程消息VPN,单向桥接链接的远程消息VPN是新桥接链接的本地消息VPN。

如下图所示,通过在事件代理2上从消息VPN yellow 添加桥接配置到事件代理1上的消息VPN blue,建立了双向桥接,并使用单个TCP连接传输两个消息VPN之间的所有消息。

消息VPN桥接的无本地交付属性自动启用,以防止转发循环。这意味着通过消息VPN桥接到远程消息VPN传输的消息不能被发送回它们最初来自的本地消息VPN以再次满足匹配的主题订阅。

双向消息VPN桥接

img

建立双向桥接链接

两个单向桥接不能在相同的两个消息VPN之间建立 - 必须使用双向桥接。因此,在本地事件代理尝试与远程事件代理建立桥接之前,它会检查现有的入站桥接,看看是否有一个兼容的桥接已经从远程事件代理建立并且可以使用。要兼容,从远程事件代理的现有桥接必须通过以下测试:

  • 来自对等事件代理的远程事件代理名称必须与本地事件代理名称匹配
  • 对等事件代理的事件代理名称必须与指定的远程事件代理名称匹配
  • 对等的远程消息VPN必须与本地消息VPN匹配
  • 对等的消息VPN必须与指定的远程消息VPN匹配
  • 如果要使用TLS/SSL加密,则两个桥接都必须配置TLS/SSL(即,TLS/SSL桥接与非TLS/SSL桥接不兼容)

如果有兼容的入站桥接,那么就不需要新的消息VPN桥接连接,现有的单向消息VPN桥接将转变为双向消息VPN桥接。使用现有连接进行登录。