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 |
处理组成员资格,包括加入群集的新成员、保留现有成员的请求,以及针对已崩溃成员的 |
pbcast.NAKACK2 | 消息传输 | 确保消息可靠性和顺序,保证一个发件人发送的所有消息按照发送者发送的顺序收到。 |
Pbcast.STABLE | 消息稳定性 | 删除所有成员已看到的消息。 |
PING | 发现 | 首次发现成员,并支持动态发现群集成员。 |
SASL | 身份验证 | 使用 SASL 机制为群集成员提供身份验证层。 |
SYM_ENCRYPT | Encryption | 使用共享密钥存储加密群集成员之间的消息。 |
S3_PING | 发现 | 使用 Amazon S3 发现初始成员. |
TCPGOSSIP | 发现 | 使用外部 Gossip 路由器发现群集成员。 |
TCPPING | 发现 | 包含用于组成群集的群集成员地址的静态列表。 |
UFC | 流控制 | 提供发送方和所有群集成员之间的单播流控制 |
UNICAST3 | 消息传输 | 确保单播消息的消息可靠性和顺序,保证一个发件人发送的所有消息将按照发送的顺序接收。 |
VERIFY_SUSPECT | 故障检测 | 验证可疑成员是否因 ping 成员在被驱除前的最后一个时间而结束。 |
通用协议属性
所有协议都有权访问以下属性:
属性 | 默认 | 描述 |
---|---|---|
module | org.jgroups | 用于解析协议类型的模块。 |
属性 | 此协议的属性. | |
statistics-enabled | false | 是否启用统计数据. |
身份验证协议
身份验证协议用于执行身份验证,主要负责确保只有经过身份验证的成员才能加入群集。这些协议位于 GMS
协议之下,因此它们可以侦听加入群集的请求。
AUTH 属性
虽然 AUTH
协议不包含额外的属性,但它必须将令牌定义为子元素。
在定义此协议时,使用 auth-protocol
元素而不是 protocol
元素。
令牌类型
在使用 Elytron 实现安全性时,建议使用以下身份验证令牌之一:这些身份验证令牌专门设计为用于 Elytron,可能不用于传统安全配置。
令牌 | 描述 |
---|---|
cipher-token | 转换共享 secret 的身份验证令牌。RSA 是用于转换的默认算法。 |
digest-token | 转换共享 secret 的身份验证令牌。SHA-256 是用于转换的默认算法。 |
plain-token | 身份验证令牌,没有额外的转换到共享 secret。 |
以下身份验证令牌继承自 JGroups,并有资格在任何需要身份验证的配置中使用。
令牌 | 描述 |
---|---|
MD5Token | 一个身份验证令牌,其中共享 secret 使用 MD5 或 SHA 哈希进行加密。MD5 是用于加密的默认算法。 |
SimpleToken | 身份验证令牌,没有额外的转换到共享 secret。此令牌不区分大小写,在决定字符串是否匹配时不考虑大小写。 |
X509Token | 一个身份验证令牌,其中共享 secret 使用 X509 证书加密。 |
SASL 属性
属性 | 默认 | 描述 |
---|---|---|
client_callback_handler |
当节点充当客户端时要使用的 | |
client_name | 节点充当客户端时要使用的名称。如果使用 JAAS 登录模块,此名称也将用于获取该主题。 | |
client_password | 节点充当客户端时使用的密码。如果使用 JAAS 登录模块,此密码也将用于获取该主题。 | |
login_module_name |
用作创建 SASL 客户端和服务器的 JAAS 登录模块的名称。此属性仅需要某些 | |
Mech |
SASL 身份验证机制的名称。这个名称可以是本地 SASL 提供商支持的任何机制,而 JDK 默认提供 | |
sasl_props |
已定义机制 | |
server_callback_handler |
当节点充当服务器时要使用的 | |
server_name | 完全限定服务器名称。 | |
timeout | 5000 | 等待响应质询的毫秒数。 |
发现协议
以下协议用于查找群集的初始成员身份,然后可用于确定当前的协调员。如下为发现协议的列表。
- AZURE_PING
- JDBC_PING
- MPING
- PING
- S3_PING
- TCPGOSSIP
- TCPPING
AZURE_PING Attributes
属性 | 默认 | 描述 |
---|---|---|
Container | 用于 PING 数据的 blob 容器的名称。这必须是有效的 DNS 名称。 | |
storage_access_key | 存储帐户的机密访问密钥。 | |
storage_account_name | 包含 blob 容器的 Microsoft Azure 存储帐户的名称。 |
JDBC_PING Attributes
属性 | 默认 | 描述 |
---|---|---|
data-source | 要使用的数据源引用,而不使用连接和 JNDI 查找属性。 |
在定义 JDBC_PING
协议时,使用 jdbc-协议
元素而不是 协议
元素。
S3_PING Attributes
属性 | 默认 | 描述 |
---|---|---|
access_key | 用于访问 S3 存储桶的 Amazon S3 访问密钥。 | |
主机 | s3.amazonaws.com | S3 Web 服务的目的地。 |
位置 | 要使用的 Amazon S3 存储桶的名称。bucket 必须存在,并且使用唯一名称。 | |
pre_signed_delete_url | 用于 DELETE 操作的预签名 URL。 | |
port |
| Web 服务正在侦听的端口。 |
pre_signed_put_url | 用于 PUT 操作的预签名 URL。 | |
prefix |
如果设置了 | |
secret_access_key | 用于访问 S3 存储桶的 Amazon S3 机密访问密钥。 | |
use_ssl | true | 确定在联系主机和端口组合时是否使用 SSL。 |
TCPGOSSIP 属性
属性 | 默认 | 描述 |
---|---|---|
socket-binding |
此协议层的套接字绑定规格。弃用:改为使用 | |
socket-bindings | 此协议的出站套接字绑定。 |
定义 TCPGOSSIP
协议时,将使用 socket-discovery-protocol
元素而不是 协议
元素。
TCPPING Attributes
属性 | 默认 | 描述 |
---|---|---|
socket-binding |
此协议层的套接字绑定规格。弃用:改为使用 | |
socket-bindings | 此协议的出站套接字绑定。 |
在定义 TCPPING
协议时,使用 socket-discovery-protocol
元素而不是 协议
元素。
加密协议
下列协议用于保护通信堆栈。加密基于群集所有成员拥有的共享 secret 密钥。当使用 SYM_ENCRYPT
时,这个密钥可以从共享密钥存储获取,或使用 ASYM_ENCRYPT
时从公钥/私钥交换获取。在定义以下任何协议时,会在生成的 XML 中创建 encrypt-protocol
元素:
如果使用 ASYM_ENCRYPT
,则同一堆栈必须定义 AUTH
协议。使用 SYM_ENCRYPT
时,AUTH
协议是可选的。
ASYM_ENCRYPT Attributes
属性 | 默认 | 描述 |
---|---|---|
key-alias | 来自指定的密钥存储的加密密钥别名。 | |
key-credential-reference | 从密钥存储获取加密密钥所需的凭据。 | |
key-store | 对包含加密密钥的密钥存储的引用。 |
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