1、现象

项目使用了hazelcast,双服务器,ip分别为192.168.xxx.202,192.168.xxx.203,启动报错:
在这里插入图片描述
配置如下:

hazelcast:
  cluster-name: xxx
  network:
    join:
      multicast:
        enabled: false
      # 本地开发
      tcp-ip:
        enabled: true
        members: 192.168.xxx.202,192.168.xxx.203
        member-list:

2、怎么解决

查了下,这个“Target is this node”报错是节点尝试向自身发送操作请求时,Hazelcast 检测到这种无效操作后抛出异常。因此,将配置映射成两份,避免自身向自身发送联结请求
202的服务器:

hazelcast:
  cluster-name: xxx
  network:
    join:
      multicast:
        enabled: false
      # 本地开发
      tcp-ip:
        enabled: true
        members: 192.168.xxx.203
        member-list:

203的服务器:

hazelcast:
  cluster-name: xxx
  network:
    join:
      multicast:
        enabled: false
      # 本地开发
      tcp-ip:
        enabled: true
        members: 192.168.xxx.202
        member-list:

但还是报同样的错误:Target is this node! -> [172.24.8.3]:5701backend-saasbackend-saasat

172.24.8.3这个ip引起注意,发现他是容器ip,且202服务器的容器ip和203的服务器容器ip都是172.24.8.3!!!
猜测hazelcast把容器ip作为节点判断依据,因此将两个服务器当成同一个。网上查询后发现有两种解决方法,第一个是保证容器ip唯一,要设置子网网段;第二个方法是可以将hazelcast绑定ip,避免ip重复导致冲突
在这里插入图片描述
加上public-address配置后顺利解决

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐