Hazelcast系列(六): TCP-IP发现机制

系列文章

Hazelcast系列(一):初识hazelcast

Hazelcast系列(二):hazelcast集成

Hazelcast系列(三):hazelcast管理中心

Hazelcast系列(四):Auto-Detection发现机制

Hazelcast系列(五):Multicast发现机制

Hazelcast系列(六): TCP-IP发现机制

目录

前言

配置

配置元素

其他

总结


前言

如果是通信环境比较复杂,在外网或者安全性不高的网络通信的情况下,Multicast 可能不是首选,那么,这里就可以采用 TCP/IP 集群配置的方式。

当将 Hazelcast 配置为通过 TCP/IP 发现成员时,必须将成员的主机名和/或 IP 地址的全部或子集列出为集群成员。TCP/IP 不必列出所有这些集群成员,但当新成员加入时,所列出的成员中至少有一个必须在集群中处于活动状态。

配置

  • XML
XML 复制代码
<hazelcast>
    ...
    <network>
        <join>
            <tcp-ip enabled="true">
                <member-list>
                    <member>machine1</member>
                    <member>machine2</member>
                    <member>machine3:5799</member>
                    <member>192.168.1.0-7</member>
                    <member>192.168.1.21</member>
                </member-list>
            </tcp-ip>
        </join>
    </network>
    ...
</hazelcast>
  • YAML
java 复制代码
hazelcast:
  network:
    join:
      tcp-ip:
        enabled: true
        member-list:
          - machine1
          - machine2
          - machine3:5799
          - 192.168.1.0-7
          - 192.168.1.21

注意:

  1. 这里TCP/IP enabled 为 true 后,其他的发现方式需要设置为false,尤其是默认的发现方式
  2. machine1、machine2、machine3 等名称可以是 主机名 或者 IP地址
  3. member-list 中每个成员,可以设置范围,但是必须要配置至少一个存活的成员
  4. 可以不配置端口,Hazelcast 会自动尝试端口 5701、5702

配置元素

  • enabled:指定是否启用 TCP/IP 发现。值可以是true或false。
  • required-member:所需成员的IP地址。仅当找到具有该 IP 地址的成员时才会形成集群。
  • member-list:一位或多位集群成员的 IP 地址。一旦会员连接到这些众所周知的地址,所有成员地址就会相互通信。这里还可以使用members元素给出以逗号分隔的 IP 地址。
  • connection-timeout-seconds:定义连接超时(以秒为单位)。这是 Hazelcast 在放弃之前尝试连接到成员的最长时间。将其设置为太低的值可能意味着成员无法连接到集群。将其设置为过高的值意味着成员启动可能会因超时较长而变慢,例如当集群成员未启动时。如果列出了许多 IP 并且成员无法正确构建集群,建议增加此值。它的默认值为 5 秒。

其他

  • 默认情况下,Hazelcast 绑定到所有本地网络接口以接受传入流量。可以使用系统属性更改此行为hazelcast.socket.bind.any。如果将此属性设置为 false,Hazelcast 将使用元素中指定的接口 interfaces 。如果未提供接口,则它会尝试解析一个接口以从member 元素 绑定。
java 复制代码
System.setProperty("hazelcast.socket.bind.any", "false");
  • TCP/IP 在网络情况不好的情况下,发现成员时 或者 脑裂恢复会有一个集群成员合并的过程,这里可以通过设置两个参数:
    • hazelcast.merge.first.run.delay.seconds:分裂或者合并在服务初始后多久开始,默认300,单位秒
    • hazelcast.merge.next.run.delay.seconds:分裂或者合并过程的运行间隔,默认120,单位秒
java 复制代码
System.setProperty("hazelcast.merge.first.run.delay.seconds", "300");
System.setProperty("hazelcast.merge.next.run.delay.seconds", "120");
  • TCP/IP 发现成员IP可以配置为 负载均衡的服务器IP网关IP,主要 负载均衡IP 或者 网关IP 能跟下面的具体集群成员之间相互通信

总结

TCP/IP 是一个可以解决复杂环境的 Hazelcast 集群成员发现方式,但是需要指定一个存活的成员地址。

相关推荐
进击的程序汪9 小时前
深入理解网络监听:TCP、UDP、IPv4 和 IPv6
网络·tcp/ip·udp
勤奋的凯尔森同学12 小时前
ubuntu22.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)
chrome·tcp/ip·ssh·ubuntu22.04·搜狗输入法·ubuntu24.04
hgdlip13 小时前
家里电脑ip地址怎么设置?详细指导
网络·tcp/ip·智能路由器·家里电脑
米饭是菜qy14 小时前
TCP 三次握手意义及为什么是三次握手
服务器·网络·tcp/ip
yaoxin52112314 小时前
第十九章 TCP 客户端 服务器通信 - 数据包模式
服务器·网络·tcp/ip
IPdodo全球网络16 小时前
解析“ChatGPT网络错误”:从网络专线到IP地址的根源与解决方案
网络·tcp/ip·chatgpt
hgdlip1 天前
本地连接IP地址的自主设置指南‌
网络·网络协议·tcp/ip·本地连接
დ旧言~1 天前
【网络】子网掩码
服务器·网络·网络协议·tcp/ip·php·apache
前端李易安1 天前
什么是UDP和TCP?有什么区别?应用场景分别都有哪些?
网络·tcp/ip·udp
极客小张1 天前
基于STM32的智能宠物自动喂食器设计思路:TCP\HTTP、Node.js技术
stm32·单片机·物联网·tcp/ip·node.js·毕业设计·宠物