A.34. JGroups Protocols

协议协议类型描述

ASYM_ENCRYPT

Encryption

使用机密密钥存储在群集上的协调器中,用于加密群集成员之间的消息。

AUTH

身份验证

为群集成员提供身份验证层。

azure.AZURE_PING

发现

支持使用 Microsoft Azure 的 blob 存储进行节点发现。

FD_ALL

故障检测

基于简单的心跳协议提供故障检测.

FD_SOCK

故障检测

根据群集成员之间创建的 TCP 套接字环提供故障检测。

JDBC_PING

发现

通过使用成员在其中写入其地址的共享数据库发现群集成员。

MERGE3

merge

在集群分割时将子集群合并在一起。

MFC

流控制

在发送方和所有群集成员之间提供多播流控制。

MPING

发现

发现具有 IP 多播的群集成员。

pbcast.GMS

Group Membership

处理组成员资格,包括加入群集的新成员、保留现有成员的请求,以及针对已崩溃成员的 SUSPECT 消息。

pbcast.NAKACK2

消息传输

确保消息可靠性和顺序,保证一个发件人发送的所有消息按照发送者发送的顺序收到。

Pbcast.STABLE

消息稳定性

删除所有成员已看到的消息。

PING

发现

首次发现成员,并支持动态发现群集成员。

SASL

身份验证

使用 SASL 机制为群集成员提供身份验证层。

SYM_ENCRYPT

Encryption

使用共享密钥存储加密群集成员之间的消息。

S3_PING

发现

使用 Amazon S3 发现初始成员.

TCPGOSSIP

发现

使用外部 Gossip 路由器发现群集成员。

TCPPING

发现

包含用于组成群集的群集成员地址的静态列表。

UFC

流控制

提供发送方和所有群集成员之间的单播流控制

UNICAST3

消息传输

确保单播消息的消息可靠性和顺序,保证一个发件人发送的所有消息将按照发送的顺序接收。

VERIFY_SUSPECT

故障检测

验证可疑成员是否因 ping 成员在被驱除前的最后一个时间而结束。

通用协议属性

所有协议都有权访问以下属性:

表 A.121. 协议属性

属性默认描述

module

org.jgroups

用于解析协议类型的模块。

属性

 

此协议的属性.

启用了统计

false

是否启用统计数据.

身份验证协议

身份验证协议用于执行身份验证,主要负责确保只有经过身份验证的成员才能加入群集。这些协议位于 GMS 协议之下,因此它们可以侦听加入群集的请求。

AUTH 属性

虽然 AUTH 协议不包含额外的属性,但它必须将令牌定义为子元素。

注意

在定义此协议时,使用 auth-protocol 元素而不是 protocol 元素。

令牌类型

在使用 Elytron 实现安全性时,建议使用以下身份验证令牌之一:这些身份验证令牌专门设计为用于 Elytron,可能不用于传统安全配置。

表 A.122. Elytron 令牌类型

令牌描述

cipher-token

转换共享 secret 的身份验证令牌。RSA 是用于转换的默认算法。

digest-token

转换共享 secret 的身份验证令牌。SHA-256 是用于转换的默认算法。

plain-token

身份验证令牌,没有额外的转换到共享 secret。

以下身份验证令牌继承自 JGroups,并有资格在任何需要身份验证的配置中使用。

表 A.123. JGroups 令牌类型

令牌描述

MD5Token

一个身份验证令牌,其中共享 secret 使用 MD5 或 SHA 哈希进行加密。MD5 是用于加密的默认算法。

SimpleToken

身份验证令牌,没有额外的转换到共享 secret。此令牌不区分大小写,在决定字符串是否匹配时不考虑大小写。

X509Token

一个身份验证令牌,其中共享 secret 使用 X509 证书加密。

SASL 属性

表 A.124. SASL 属性

属性默认描述

client_callback_handler

 

当节点充当客户端时要使用的 CallbackHandler 类名称。

client_name

 

节点充当客户端时要使用的名称。如果使用 JAAS 登录模块,此名称也将用于获取该主题。

client_password

 

节点充当客户端时使用的密码。如果使用 JAAS 登录模块,此密码也将用于获取该主题。

login_module_name

 

用作创建 SASL 客户端和服务器的 JAAS 登录模块的名称。此属性仅需要某些 机制值,如 GSSAPI。

Mech

 

SASL 身份验证机制的名称。这个名称可以是本地 SASL 提供商支持的任何机制,而 JDK 默认提供 CRAM-MD5DIGEST-MD5GSSAPINTLM

sasl_props

 

已定义机制 的属性.

server_callback_handler

 

当节点充当服务器时要使用的 CallbackHandler 类名称。

server_name

 

完全限定服务器名称。

timeout

5000

等待响应质询的毫秒数。

发现协议

以下协议用于查找群集的初始成员身份,然后可用于确定当前的协调员。如下为发现协议的列表。

AZURE_PING Attributes

表 A.125. AZURE_PING Attributes

属性默认描述

Container

 

用于 PING 数据的 blob 容器的名称。这必须是有效的 DNS 名称。

storage_access_key

 

存储帐户的机密访问密钥。

storage_account_name

 

包含 blob 容器的 Microsoft Azure 存储帐户的名称。

JDBC_PING Attributes

表 A.126. JDBC_PING Attributes

属性默认描述

data-source

 

要使用的数据源引用,而不使用连接和 JNDI 查找属性。

注意

在定义 JDBC_PING 协议时,使用 jdbc-协议 元素而不是 协议 元素。

S3_PING Attributes

表 A.127. S3_PING Attributes

属性默认描述

access_key

 

用于访问 S3 存储桶的 Amazon S3 访问密钥。

主机

s3.amazonaws.com

S3 Web 服务的目的地。

位置

 

要使用的 Amazon S3 存储桶的名称。bucket 必须存在,并且使用唯一名称。

pre_signed_delete_url

 

用于 DELETE 操作的预签名 URL。

port

  • 443(如果 use_ssltrue
  • 80,如果 use_sslfalse.

Web 服务正在侦听的端口。

pre_signed_put_url

 

用于 PUT 操作的预签名 URL。

prefix

 

如果设置了 ,则将存储桶名称定义为 PREFIX-LOCATION。如果设置,并且存储桶在指定的 PREFIX-LOCATION 中不存在,则存储桶名称将变为 PREFIX,后跟随机 UUID。

secret_access_key

 

用于访问 S3 存储桶的 Amazon S3 机密访问密钥。

use_ssl

true

确定在联系主机和端口组合时是否使用 SSL。

TCPGOSSIP 属性

表 A.128. TCPGOSSIP 属性

属性默认描述

socket-binding

 

此协议层的套接字绑定规格。弃用:改为使用 socket-bindings

socket-bindings

 

此协议的出站套接字绑定。

注意

定义 TCPGOSSIP 协议时,将使用 socket-discovery-protocol 元素而不是 协议 元素。

TCPPING Attributes

表 A.129. TCPPING Attributes

属性默认描述

socket-binding

 

此协议层的套接字绑定规格。弃用:改为使用 socket-bindings

socket-bindings

 

此协议的出站套接字绑定。

注意

在定义 TCPPING 协议时,使用 socket-discovery-protocol 元素而不是 协议 元素。

加密协议

下列协议用于保护通信堆栈。加密基于群集所有成员拥有的共享 secret 密钥。当使用 SYM_ENCRYPT 时,这个密钥可以从共享密钥存储获取,或使用 ASYM_ENCRYPT 时从公钥/私钥交换获取。在定义以下任何协议时,会在生成的 XML 中创建 encrypt-protocol 元素:

注意

如果使用 ASYM_ENCRYPT,则同一堆栈必须定义 AUTH 协议。使用 SYM_ENCRYPT 时,AUTH 协议是可选的。

ASYM_ENCRYPT Attributes

表 A.130. ASYM_ENCRYPT Attributes

属性默认描述

key-alias

 

来自指定的密钥存储的加密密钥别名。

key-credential-reference

 

从密钥存储获取加密密钥所需的凭据。

key-store

 

对包含加密密钥的密钥存储的引用。

SYM_ENCRYPT Attributes

表 A.131. SYM_ENCRYPT Attributes

属性默认描述

key-alias

 

来自指定的密钥存储的加密密钥别名。

key-credential-reference

 

从密钥存储获取加密密钥所需的凭据。

key-store

 

对包含加密密钥的密钥存储的引用。

故障检测协议

以下协议用于探测群集成员,以确定它们是否仍然处于活动状态。除了通用属性外,这些协议没有任何额外属性。

  • FD_ALL
  • FD_SOCK
  • VERIFY_SUSPECT

流控制协议

以下协议负责流控制,或者调整消息发送器到最慢接收者的速率。如果发送方持续以快于接收方的速度发送消息,接收方将排队或丢弃消息,从而导致重新传输。除了通用属性外,这些协议没有任何额外属性。

  • MFC - 多播流控制
  • UFC - 单播流控制

组成员资格协议

pbcast.GMS 协议负责加入群集的新成员、现有成员离开群集,以及怀疑已崩溃的成员。除了通用属性外,此协议没有任何额外属性。

合并协议

如果集群被分割,则 MERGE3 协议负责将子集群合并在一起。虽然此协议负责将群集成员重新合并在一起,但这不会合并群集的状态。应用负责处理回调以合并状态。除了通用属性外,此协议没有任何额外属性。

消息稳定性

pbcast.STABLE 协议负责收集群集所有成员已看到的消息。此协议启动包含给定成员的消息编号的稳定消息,称为摘要。旦群集的所有成员收到其他人的摘要,则消息可能会从重新传输表中移除。除了通用属性外,此协议没有任何额外属性。

可靠的消息传输

以下协议为发送到集群中所有节点的消息提供可靠的消息发送和 FIFO 属性。可靠发送意味着发送方发送的任何邮件都不会丢失,因为所有消息都是编号的,如果未收到序列号,则会发送重新传输请求。除了通用属性外,这些协议没有任何额外属性。

  • pbcast.NAKACK2
  • pbcast.UNICAST3

弃用的协议

以下协议已弃用,并被仅包含类名称的协议所取代。例如,协议名称应为 ASY M_ENCRYPT,而不是指定 org.jgroups.protocols.ASY M_ENCRYPT

  • org.jgroups.protocols.ASYM_ENCRYPT
  • org.jgroups.protocols.AUTH
  • org.jgroups.protocols.JDBC_PING
  • org.jgroups.protocols.SYM_ENCRYPT
  • org.jgroups.protocols.TCPGOSSIP
  • org.jgroups.protocols.TCPPING