【问题标题】:Hazelcast client conneciton portHazelcast 客户端连接端口
【发布时间】:2020-03-27 17:26:36
【问题描述】:

我有一个多服务部署,其中一些服务使用 Hazelcast 进行缓存。在实际部署中,服务驻留在单独的 VM 中,hazelcast 实例从端口 5701 启动。但是,在本地进行测试时,所有服务都驻留在同一 VM 上。这意味着第一个 Hazelcast 实例在 5701 开始,第二个在 5702 开始,依此类推(在配置中自动增量设置为 true)。

问题是hazelcast客户端尝试连接5701到5703,并没有进一步搜索。

为了确保端口没有任何重叠(因此没有进行自动增量),我手动配置了 Hazelcast 实例的端口。因此,对于其中一项服务,我将其设置为 5710。但是,客户端尝试从 5701 连接。

我读到网络->端口不适用于 Hazelcast 客户端配置,但我找不到如何指定要尝试连接的端口?

我正在使用 Hazelcast 3.6

配置文件:

    <group>
        <name>myNode</name>
        <password>MyPass</password>
    </group>
    <properties>
        <property name="hazelcast.rest.enabled">true</property>
        <property name="hazelcast.shutdownhook.enabled">false</property>
    </properties>
    <management-center enabled="false"/>
    <network>
        <port auto-increment="true">5701</port>
        <join>
            <multicast enabled="true"/>
            <tcp-ip enabled="false"/>
            <aws enabled="false"/>
        </join>
    </network>

【问题讨论】:

    标签: hazelcast


    【解决方案1】:

    解决方案是将集群配置添加到客户端配置 xml:

       <network>
            <cluster-members>
                <address>127.0.0.1:57xx</address>
            </cluster-members>
        </network>
    

    【讨论】:

      【解决方案2】:

      您只需将地址 (ip:port) 传递给客户端的连接配置。无论如何,我想知道您如何在一台机器上启动这么多独立的集群成员(不同的集群?)。

      【讨论】:

      • 我无法真正指定 ip:port。我使用这样的方式获取缓存管理器:Properties properties = new Properties(); properties.setProperty(HazelcastCachingProvider.HAZELCAST_CONFIG_LOCATION, "classpath:hazelcast.xml"); CacheManager manager = Caching.getCachingProvider() .getCacheManager(new URI("opp_transaction"), null, properties); 所以我没有实际访问配置的权限。
      • 关于您的问题,就像我提到的那样,这是针对通常运行不同机器的不同服务。仅用于本地测试我遇到了这个问题。
      • 找到解决方案:)
      【解决方案3】:

      对于 hazelcast 4 及更高版本,您可以使用以下

      客户端配置

       config.getNetworkConfig()
                    .addAddress(HazelcastProperties.getAddress())
                    .setRedoOperation(true)
                    .setSmartRouting(true);
      
              config.setClusterName(HazelcastProperties.getGroupName());
              config.setInstanceName(HazelcastProperties.getInstanceName());
      
      
      String address = HazelcastProperties.getAddress();
              if (address.contains(":"))
              {
                  String port = address.substring(address.indexOf(":" + 1));
                  config.getNetworkConfig()
                        .addOutboundPort(Integer.parseInt(port));
              }
          else
              {
                  config.getNetworkConfig()
                        .addOutboundPort(5701);
              }
      
      

      参考:https://docs.hazelcast.org/docs/4.0/manual/html-single/index.html#port

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 2023-04-10
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多