11.2. 集群发现协议
数据网格支持不同的协议,允许节点在网络和集群中自动查找彼此。
Data Grid 可以使用两种发现机制:
- 用于处理大多数网络的通用发现协议,不依赖于外部服务。
-
依赖于外部服务的发现协议为 Data Grid 集群存储和检索拓扑信息。
例如,DNS_PING 协议通过 DNS 服务器记录执行发现。
在托管平台上运行数据网格需要使用发现机制来适应各个云供应商所实施的网络限制。
其他资源
- JGroups 发现协议
- JGroup 集群传输配置 Data Grid 8.x (红帽知识库文章)
11.2.1. PING
PING 或 UDPPING 是一种通用 JGroups 发现机制,通过 UDP 协议使用动态多播。
加入后,节点会将 PING 请求发送到 IP 多播地址,以发现已位于 Data Grid 集群中的其他节点。每个节点使用包含协调器节点地址和其自身地址的数据包响应 PING 请求。c=coordinator 地址和 A=own 地址.如果没有节点响应 PING 请求,加入节点就成为新集群中的协调节点。
PING 配置示例
<PING num_discovery_runs="3"/>
其他资源
11.2.2. TCPPING
TCPPING 是一个通用 JGroups 发现机制,为集群成员使用静态地址列表。
使用 TCPPING 时,您将把 Data Grid 集群中每个节点的 IP 地址或主机名手动指定为 JGroups 堆栈的一部分,而不是让节点能够动态发现节点。
TCPPING 配置示例
<TCP bind_port="7800" /> <TCPPING timeout="3000" initial_hosts="${jgroups.tcpping.initial_hosts:hostname1[port1],hostname2[port2]}" port_range="0" num_initial_members="3"/>
其他资源
11.2.3. MPING
MPING 使用 IP 多播来发现数据网格集群的初始成员资格。
您可以使用 MPING 将 TCPPING 发现替换为 TCP 堆栈,并使用多caing 进行发现,而不是初始主机的静态列表。但是,您还可以将 MPING 与 UDP 堆栈搭配使用。
MPING 配置示例
<MPING mcast_addr="${jgroups.mcast_addr:239.6.7.8}" mcast_port="${jgroups.mcast_port:46655}" num_discovery_runs="3" ip_ttl="${jgroups.udp.ip_ttl:2}"/>
其他资源
11.2.4. TCPGOSSIP
Gossip 路由器在网络上提供一个中央位置,您的 Data Grid 集群可以检索其他节点的地址。
将 Gosssip 路由器的地址(IP:PORT
)注入 Data Grid 节点,如下所示:
-
将地址作为系统属性传递给 JVM;例如,
-DGossipRouterAddress="10.10.2.4[12001]"
. - 在 JGroups 配置文件中引用该系统属性。
Gossip 路由器配置示例
<TCP bind_port="7800" /> <TCPGOSSIP timeout="3000" initial_hosts="${GossipRouterAddress}" num_initial_members="3" />
11.2.5. JDBC_PING
JDBC_PING 使用共享数据库存储数据网格集群的信息。此协议支持任何可以使用 JDBC 连接的数据库。
节点将其 IP 地址写入共享数据库,以便加入节点可以在网络上找到 Data Grid 集群。当节点离开 Data Grid 集群时,它们会从共享数据库中删除其 IP 地址。
JDBC_PING 配置示例
<JDBC_PING connection_url="jdbc:mysql://localhost:3306/database_name" connection_username="user" connection_password="password" connection_driver="com.mysql.jdbc.Driver"/>
将适当的 JDBC 驱动程序添加到类路径,以便数据网格可以使用 JDBC_PING。
其他资源
11.2.6. DNS_PING
JGroups DNS_PING 查询 DNS 服务器,以在 Kubernetes 环境中发现数据网格群集成员,如 OKD 和红帽 OpenShift。
DNS_PING 配置示例
<dns.DNS_PING dns_query="myservice.myproject.svc.cluster.local" />
其他资源
- JGroups DNS_PING
- Service 和 Pod 的 DNS (用于添加 DNS 条目的 Kubernetes 文档)
11.2.7. 云发现协议
数据网格包括默认的 JGroups 堆栈,它使用特定于云提供商的发现协议实施。
发现协议 | 默认堆栈文件 | 工件 | 版本 |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
为云发现协议提供依赖项
要使用 aws.S3_PING
,GOOGLE_PING2
或 azure.AZURE_PING
云发现协议,您需要为数据网格提供依赖的库。
流程
- 下载工件 JAR 文件及所有依赖项。
将工件 JAR 文件和所有依赖项添加到 Data Grid Server 安装的
$RHDG_HOME/server/lib
目录中。如需了解更多详细信息,请参阅 JGroups 云发现数据网格服务器协议 (红帽知识库文章)
然后,您可以将云发现协议配置为 JGroups 堆栈文件或系统属性的一部分。