跳到主要内容

服务

客户端和管理用户通过事件代理上的 TCP 服务端口访问 PubSub+ 上可用的服务。

PubSub+ 事件代理支持以下服务:

  • Solace 消息格式(SMF)——此服务允许客户端通过消息骨干接口(设备)和数据流量(软件事件代理)与事件代理通信。
  • Solace 元素管理协议(SEMP)——此服务允许管理应用程序通过管理接口(设备)和数据流量(软件事件代理)与事件代理通信。
  • Web 传输——此服务允许 Web 客户端与事件代理通信。
  • Solace 表示状态传输(REST)——此服务允许 REST 客户端使用标准 HTTP 请求与事件代理通信。
  • 消息队列遥测传输(MQTT)——此服务允许客户端使用 MQTT 消息协议与事件代理通信。
  • 高级消息队列协议(AMQP)——此服务允许 AMQP 客户端使用 AMQP 开放标准应用层协议与事件代理通信。

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

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

SMF服务管理

在系统级别,您可以为 SMF 服务配置监听端口,并在事件代理上的所有消息 VPN 上启用/禁用 SMF 服务。您还可以配置 SMF 事件和事件阈值。

设置SMF监听端口

在设置 SMF 监听端口之前,您必须关闭事件代理上的 SMF 服务,否则会收到错误消息。

要配置 SMF 客户端在连接到事件代理时使用的 TCP 端口号,请输入以下命令:

solace(configure)# service smf
solace(configure/service/smf)# listen-port <port> {[compressed] [routing-control] [ssl]}

其中:

  • <port> 指定 SMF 客户端在连接到事件代理时使用的 TCP 端口号。默认值为 55555。
  • compressed 指定用于交换非 SSL 压缩消息的端口。
  • routing-control 指定用于交换节点间路由控制消息的端口。请注意,节点间路由控制消息不能在压缩端口上运行。因此,您不能同时指定 compressedrouting-control
  • ssl 指定用于交换传输层安全(TLS)/ 安全套接字层(SSL)流量(无论是否压缩)的端口。

此命令的 no 版本执行以下操作:

  • no listen-port 将端口重置为默认值 55555
  • no listen-port compressed 将端口重置为默认值 55003
  • no listen-port routing-control 将端口重置为默认值 55556
  • no listen-port ssl 将端口重置为默认值 55443

启用系统级别的SMF服务

在系统级别禁用 SMF 服务将断开所有客户端和事件代理与事件代理的连接。因此,建议如果您需要停止事件代理上的 SMF 服务,请在服务中断影响最小的时候进行。此外,为了避免如此大的服务中断,您可以选择仅在特定的消息 VPN 上禁用 SMF 服务(请参阅配置 SMF 服务)。

默认情况下,SMF 服务在 PubSub+ 设备和 PubSub+ 软件事件代理上都是启用的。

  • 要在事件代理上启用 SMF 服务,请输入以下命令:

    solace(configure)# service smf
    solace(configure/service/smf)# no shutdown
  • 要在事件代理上禁用 SMF 服务,请输入以下命令:

    solace(configure)# service smf
    solace(configure/service/smf)# shutdown

配置SMF事件

您可以选择配置系统级别事件生成的设置和清除阈值,用于同时 SMF 客户端连接的数量或百分比。有关如何生成系统级别服务事件以及如何为它们设置事件阈值的信息,请参阅配置系统事件阈值。

SEMP服务管理

在系统级别,您可以执行以下操作:

  • 为 SEMP 服务配置监听端口
  • 启用/禁用分页 GET 的扩展超时
  • 在事件代理上启用/禁用 SEMP 服务
  • 设置客户端用户会话的超时值
  • 启用或禁用 SEMP 服务的跨源资源共享(CORS)

设置SEMP监听端口

在设置 SEMP 监听端口之前,您必须先关闭事件代理上的 SEMP 服务。

要配置 SEMP 客户端在连接到事件代理时使用的 TCP 端口号,请输入以下命令:

solace(configure)# service semp
solace(configure/service/semp)# listen-port <port> [ssl]

其中:

  • port 指定用于 SEMP 连接到事件代理的 TCP 端口号。
  • ssl 指定端口号用于 TLS/SSL 加密连接。

portssl 的默认端口取决于它是软件事件代理还是设备。有关使用哪个端口的信息,请参阅默认端口号。

此命令的 no 版本执行以下操作:

  • no listen-port 将端口重置为明文连接的默认值。
  • no listen-port ssl 将端口重置为 TLS/SSL 连接的默认值。

启用分页GET的扩展SEMP超时

通配符 show 命令即使未请求分页,也可能返回分页数据,特别是如果命令执行时间超过几秒。此外,当返回分页数据时,返回的条目数量可能少于请求的条目数量。在某些情况下,分页响应可能是完全空的(仅包含 more-cookie)。客户端必须编写为接受任何小于或等于请求页面大小的分页数据。

您可以启用或禁用扩展 SEMP 超时,以帮助在您更新客户端以使用分页时保持系统运行。启用后,系统在客户端上强制分页之前产生响应的时间增加到 60 秒。禁用后,超时为 5 秒。

启用扩展超时仅作为临时解决方案,仅在 SEMP 客户端更新以便它们可以处理短页面时使用。

默认情况下,分页 GET 的扩展 SEMP 超时是禁用的。

  • 要在事件代理上启用分页 GET 的扩展 SEMP 超时,请输入以下命令:

    solace(configure)# service semp
    solace(configure/service/semp)# legacy-timeout
  • 要禁用分页 GET 的扩展 SEMP 超时,请输入以下命令:

    solace(configure)# service semp
    solace(configure/service/semp)# no legacy-timeout

启用系统级别的SEMP服务

在系统级别关闭 SEMP 服务将导致管理服务中断,因为它会断开所有 SEMP 和 SolAdmin 连接。因此,建议如果您需要停止事件代理上的 SEMP 服务,请在服务中断影响最小的时候进行。

  • 要在事件代理上启用 SEMP 服务,请输入以下命令:

    solace(configure/service/semp)# no shutdown
  • 要在事件代理上禁用 SEMP 服务,请输入以下命令:

    solace(configure/service/semp)# shutdown

管理SEMP会话

当客户端首次发出 SEMPv2 请求时,必须使用基本身份验证提供用户名和密码。

如果身份验证成功,事件代理将返回包含会话令牌的 cookie。客户端可以从后续请求中省略用户名和密码,因为事件代理现在使用会话 cookie 进行身份验证。当会话过期或被删除时,客户端必须再次提供用户名和密码,事件代理将创建新会话。

要查看会话如何与 SEMP v2 API 一起使用,请参阅 SEMP API 架构。

您可以为会话配置两种类型的超时:

  • session-idle-timeout:会话空闲超时,以分钟为单位。如果在此时间段内没有活动,会话将被无效。默认值为 15 分钟。
  • session-max-lifetime:会话的最大生命周期,以分钟为单位。无论活动如何,会话在此时间段后将被无效。默认值为 43200 分钟,相当于 30 天。

要设置 session-idle-timeout 值,请在 CLI 中输入以下命令:

solace-1> enable
solace-1# configure
solace-1(configure)# service
solace-1(configure/service)# semp
solace-1(configure/service/semp)# session-idle-timeout 30

要设置 session-max-lifetime 值,请在 CLI 中输入以下命令:

solace-1> enable
solace-1# configure
solace-1(configure)# service
solace-1(configure/service)# semp
solace-1(configure/service/semp)# session-max-lifetime 43260

要显示设置:

solace-1> show service semp

Service: SEMP
Config Status: Enabled
Oper Status (Plain-text): Up
Oper Status (SSL): No Cert
VRF: management
Port (Plain-text): 8080
Port (SSL): 1943
Legacy Timeout: No
Session Idle Timeout: 15 minutes
Session Maximum Lifetime: 43200 minutes
CORS Allow Any Host: No

要删除会话:

solace-1> enable
solace-1# admin
solace-1(admin)# semp-session <username-pattern> [session-id <session-id-value>]
solace-1(admin/semp-session)# delete

会话也由 Broker Manager 使用。有关详细信息,请参阅 Broker Manager 会话。

管理跨源资源共享

您可以启用或禁用 SEMP 服务的跨源资源共享(CORS)。默认情况下,为了增强安全性,CORS 是禁用的。

启用 CORS 会生成符合 CORS 的标头,允许从任何主机加载的 JavaScript 访问事件代理上的 SEMPv2 端点。这在您有涉及管理操作的 JavaScript 工具或基于浏览器的客户端且安全漏洞风险较低的情况下很有帮助。

要启用 CORS,请运行以下命令:

solace-1> enable
solace-1# configure
solace-1(configure)# service
solace-1(configure/service)# semp
solace-1(configure/service/semp)# cors
solace-1(configure/service/semp/cors)# allow-any-host

REST服务管理

PubSub+ 事件代理可以支持 REST 客户端。在系统级别,您可以启用或禁用事件代理的 REST 进入和出去连接。您还可以配置 REST 事件和事件阈值。

在系统级别关闭 REST 服务将断开所有 REST 客户端与事件代理的连接,新客户端将无法连接。因此,Solace 建议如果您需要停止事件代理上的 REST 服务,请在服务中断影响最小的时候进行。

启用进入的REST连接

默认情况下,事件代理上不运行进入的 REST 服务连接。

  • 要在事件代理上启用进入的 REST 服务连接,请输入以下命令:

    solace(configure)# service rest
    solace(configure/service/rest)# incoming
    solace(configure/service/rest/incoming)# no shutdown
  • 要在事件代理上禁用进入的 REST 服务连接,请输入以下命令:

    solace(configure)# service rest
    solace(configure/service/rest)# incoming
    solace(configure/service/rest/incoming)# shutdown

启用出去的REST连接

默认情况下,事件代理上不运行出去的 REST 服务连接。

  • 要在事件代理上启用出去的 REST 服务连接,请输入以下命令:

    solace(configure)# service rest
    solace(configure/service/rest)# outgoing
    solace(configure/service/rest/outgoing)# no shutdown
  • 要在事件代理上禁用出去的 REST 服务连接,请输入以下命令:

    solace(configure)# service rest
    solace(configure/service/rest)# outgoing
    solace(configure/service/rest/outgoing)# shutdown

配置REST事件

有关配置 REST 客户端事件阈值的信息,请参阅配置 REST 出去服务事件阈值。

Web传输服务管理

在系统级别,您可以为 Web 传输服务配置监听端口,指定 Web URL 后缀,并在事件代理上的所有消息 VPN 上启用/禁用 Web 传输服务。

设置Web传输监听端口

在设置 Web 传输监听端口之前,您必须先关闭事件代理上的 Web 传输服务。

要配置 Web 客户端在连接到事件代理时使用的 TCP 端口号,请输入以下命令:

solace(configure)# service web-transport
solace(configure/service/web-transport)# listen-port <port> [ssl]

其中:

  • port 指定 Web 客户端在连接到事件代理时使用的 TCP 端口号。
  • ssl 指定用于交换 TLS/SSL 流量的端口。

portssl 的默认端口取决于它是软件事件代理还是设备。有关使用哪个端口的信息,请参阅默认端口号。

此命令的 no 版本执行以下操作:

  • no listen-port 将端口重置为其默认值。
  • no listen-port ssl 将端口重置为其默认值。

启用系统级别的Web传输服务

在系统级别关闭 Web 传输服务将断开所有 Web 传输客户端与事件代理的连接,新客户端将无法连接。因此,建议如果您需要停止事件代理上的 Web 传输服务,请在服务中断影响最小的时候进行。此外,为了避免如此大的服务中断,您可以选择仅在特定的消息 VPN 上禁用 Web 传输服务(请参阅配置 Web 传输服务)。

默认情况下,Web 传输服务在事件代理上不运行。

  • 要在事件代理上启动 Web 传输服务,请输入以下命令:

    solace(configure)# service web-transport
    solace(configure/service/web-transport)# no shutdown
  • 要在事件代理上停止 Web 传输服务,请输入以下命令:

    solace(configure)# service web-transport
    solace(configure/service/web-transport)# shutdown
  • Web 传输服务默认在 SolOS 版本 8.4.0 之前的 PubSub+ 设备上是锁定的。要在这些设备上解锁 Web 传输服务,您必须拥有 Solace 提供的有效产品密钥。有关更多信息,请参阅产品密钥。

  • 要使 Web 传输客户端能够连接到事件代理,您必须启动事件代理上的 SMF 服务,因为 Web 传输客户端也被视为 SMF 客户端。有关更多信息,请参阅启用系统级别的 SMF 服务。

指定Web URL后缀

您可以设置 Web 客户端在登录时从事件代理接收的 Web URL 后缀,然后在与事件代理通信时使用(例如,用于负载均衡客户端会话)。

要指定 Web URL 后缀,您必须关闭事件代理上的 Web 传输服务,然后输入以下命令:

solace(configure)# service web-transport
solace(configure/service/web-transport)# web-url-suffix <suffix>

其中:

  • <suffix> 指定 PubSub+ 消息 API 在与事件代理通信时附加到 Web URL 的文本。此文本可以包含多达 127 个字母数字字符,并应在所有创建的 Web URL 后缀中是唯一的。

此命令的 no 版本 no web-url-suffix 将 Web URL 后缀重置为默认值为空字符串(即“ ”)。

有关会话负载均衡和 URL 使用的更多信息,请参阅 Web 消息概述。

MQTT服务管理

您可以在系统级别启用或禁用事件代理上的 MQTT 服务。

启用系统级别的MQTT服务

您可以全局启用或禁用事件代理上的 MQTT 服务。默认情况下,MQTT 服务未启用。

  • 要在事件代理上启用 MQTT 服务,请输入以下命令:

    solace(configure)# service mqtt
    solace(configure/service/mqtt)# no shutdown
  • 要在事件代理上禁用 MQTT 服务,请输入以下命令:

    solace(configure)# service mqtt
    solace(configure/service/mqtt)# shutdown

如果您在系统级别禁用 MQTT 服务,您将断开所有当前连接到事件代理上任何启用了 MQTT 服务的消息 VPN 的客户端,新客户端将无法连接。因此,建议如果您需要停止 MQTT 服务,请在服务中断影响最小的时候进行。此外,为了避免大的服务中断,您可以选择仅在特定的消息 VPN 上禁用 MQTT 服务(请参阅启用和禁用 MQTT 连接)。

AMQP服务管理

PubSub+ 事件代理可以支持 AMQP 客户端。在系统级别,您可以启用/禁用 AMQP 服务。客户端可以通过全局和/或每个消息 VPN 监听端口连接。

要从事件代理为连接的 AMQP 客户端提供服务,您必须执行以下系统级别配置:

  • 设置 AMQP 监听端口
  • 配置虚拟主机名(使用每个消息 VPN 端口时不需要)
  • 启用系统级别的 AMQP 服务

设置AMQP监听端口

AMQP 服务支持明文和加密数据传输。如果您希望传输明文和 TLS/SSL 数据,则必须为每种传输类型配置一个单独的端口。要将 AMQP 明文客户端连接到事件代理,必须配置每个消息 VPN 的 AMQP 明文端口。

对于 AMQP TLS/SSL 客户端连接到事件代理,您可以配置以下监听端口:

  • 全局 AMQP TLS/SSL 端口,所有消息 VPN 共享。当仅使用每个消息 VPN 端口时,此配置不是必需的。
  • 每个消息 VPN 的端口,特定于特定的消息 VPN。

AMQP全局端口与每个消息VPN端口

事件代理可以配置全局 AMQP TLS/SSL 端口。所有 AMQP TLS/SSL 客户端都可以连接到全局端口。因此,不需要每个消息 VPN 端口,配置更简单。这减少了端口使用(一个全局端口与每个消息 VPN 的一个端口),无论消息 VPN 的数量如何。它还可能减少防火墙配置。

如果您同时配置了全局端口和每个消息 VPN 端口,客户端可以连接到任何一个。对于全局端口连接,必须配置虚拟主机名以将客户端提供的主机名映射到相应的消息 VPN。请注意,连接到全局端口的客户端必须通过 TLS 的服务器名称指示(SNI)扩展设置主机名。有关虚拟主机名的更多信息,请参阅配置虚拟主机名。

此外,当连接到全局端口时,客户端必须能够根据它们连接到的虚拟主机名验证事件代理的服务器证书。确保这一点的标准方法是将虚拟主机名添加到事件代理服务器证书的主题备用名称(或覆盖虚拟主机名的通配符)中。

设置全局AMQP监听端口

要为 AMQP 连接设置全局监听端口,请输入以下命令:

solace(configure)# service amqp
solace(configure/service/amqp)# listen-port <port> ssl

此命令的 no 版本 no listen-port ssl 将移除当前配置的端口号。

其中:

  • <port> 是端口号,范围为 1 到 65535。
  • ssl 指定给定端口将使用 TLS 传输。

要更改全局监听端口,必须全局关闭 AMQP 服务。请参阅启用系统级别的 AMQP 服务。

设置每个消息 VPN 的 AMQP 监听端口

要为 AMQP 连接设置每个消息 VPN 的监听端口,请参阅设置消息 VPN 的 AMQP 监听端口。

配置虚拟主机名

在事件代理上配置虚拟主机名以将客户端提供的主机名映射到相应消息 VPN。此映射仅用于通过全局 AMQP 端口到达的连接。如果客户端通过每个消息 VPN 端口连接,虚拟主机名(如果提供)将被忽略。有关全局和每个消息 VPN 监听端口的信息,请参阅设置 AMQP 监听端口。

通过服务器名称指示(SNI)提供主机名并连接到全局端口的客户端将被定向到其对应的消息 VPN。对客户端提供的主机名与配置的虚拟主机名进行精确的大小写不敏感匹配。此机制仅支持 AMQP,并且仅支持通过 TLS 的 SNI 扩展提供的主机名。如果主机名的映射不存在或指向不存在的消息 VPN,客户端登录将失败。

请注意,虚拟主机名仅限于包含 ASCII 字符。要在事件代理上用虚拟主机名表示国际化域名,您必须首先将非 ASCII 字符转换为 punycode 编码的 A 标签形式。例如,如果应用程序使用“éxample.com”作为虚拟主机名,则必须在事件代理上将其配置为虚拟主机名“xn--xample-9ua.com”。

要配置虚拟主机名,请输入以下命令:

solace(configure)# service
solace(configure/service)# create virtual-hostname <name>

此命令的 no 版本 no virtual-hostname <name> 将移除虚拟主机名。它必须被禁用才能被移除。

其中:

  • <name> 是虚拟主机名。它必须是 FQDN(1..253 个字符)或 IP 地址(nnn.nnn.nnn.nnn)。

将虚拟主机名映射到消息 VPN

要将虚拟主机名映射到相应消息 VPN,请输入以下命令:

solace(configure/service/virtual-hostname)# message-vpn <vpn-name>

此命令的 no 版本 no message-vpn 将移除消息 VPN 映射。

其中:

  • <vpn-name> 是要连接到的消息 VPN 的名称。

启用虚拟主机名

虚拟主机名到消息 VPN 映射默认是禁用的。您可以通过执行以下命令来启用它:

solace(configure/service/virtual-hostname)# no shutdown

要禁用虚拟主机名到消息 VPN 映射,请输入以下命令:

solace(configure/service/virtual-hostname)# shutdown

启用系统级别的AMQP服务

您可以在系统级别启用或禁用事件代理上的 AMQP 服务。

  • 要为事件代理启用 AMQP 服务,请输入以下命令:

    solace(configure)# service amqp
    solace(configure/service/amqp)# no shutdown
  • 要为事件代理禁用 AMQP 服务,请输入以下命令:

    solace(configure)# service amqp
    solace(configure/service/amqp)# shutdown

如果您在系统级别禁用 AMQP 服务,您将断开所有当前连接到事件代理上任何启用了 AMQP 服务的消息 VPN 的客户端。为了避免如此大的服务中断,您可以仅在特定的消息 VPN 上禁用 AMQP 服务(请参阅为 VPN 启用/禁用 AMQP 服务)。

启用所有消息服务

Solace 事件代理的消息骨干是包含所有 Solace 事件代理接口(物理、LAG 和 IP)的虚拟路由和转发(VRF)对象,并在客户端应用程序和事件代理上的虚拟路由器之间传输消息和主题订阅流量。

消息骨干充当全局开关,启用或禁用所有消息服务。禁用消息骨干将禁用所有消息服务,直到重新启用消息骨干。

使用消息骨干开关禁用的服务在重新启用消息骨干时将保留其各自配置的状态。例如,如果在禁用消息骨干时 Web 传输服务处于禁用状态,则在重新启用消息骨干时 Web 传输服务将保持禁用状态。

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

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

要关闭消息骨干以在全局级别禁用所有消息服务,请输入以下命令:

solace(configure)# service msg-backbone shutdown
所有客户端将被断开连接。
您是否想继续 (y/n)? y

此命令的 no 版本 no msg-backbone shutdown 全局启用消息服务。在关闭消息骨干之前禁用的服务在运行此命令时将保持禁用状态。

管理服务事件阈值

要配置定义何时为事件代理的客户端连接数量生成系统级别事件的阈值,请输入以下命令:

solace(configure)# service event

CLI 现在处于可以配置设置和清除事件阈值的级别,用于生成系统级别事件的客户端连接数量。这些阈值根据所使用的服务类型(例如 SMF、Web 传输、REST)进行设置。有关更多信息,请参阅配置系统事件阈值。