【问题标题】:Hazelcast adding address to blacklist and client not connectingHazelcast将地址添加到黑名单并且客户端未连接
【发布时间】:2021-07-22 07:57:23
【问题描述】:

我是 Hazelcast 新手,在我的应用程序中,当我启动 Hazelcast 成员时,它显示两个地址被列入黑名单,不知道为什么,Hazelcast 集群的最佳配置是什么?

这是我得到的日志:

2021-07-22 13:15:51.823  INFO 212124 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2021-07-22 13:15:51.844  INFO 212124 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-07-22 13:15:51.845  INFO 212124 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.44]
2021-07-22 13:15:52.094  INFO 212124 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-07-22 13:15:52.094  INFO 212124 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4676 ms
2021-07-22 13:15:52.417  INFO 212124 --- [           main] com.hazelcast.instance.AddressPicker     : [LOCAL] [APP] [4.2] Interfaces is disabled, trying to pick one address from TCP-IP config addresses: [192.168.0.104]
2021-07-22 13:15:53.350  INFO 212124 --- [           main] com.hazelcast.system                     : [192.168.0.104]:5701 [APP] [4.2] Hazelcast 4.2 (20210324 - 405cfd1) starting at [192.168.0.104]:5701
2021-07-22 13:15:54.178  INFO 212124 --- [           main] com.hazelcast.instance.impl.Node         : [192.168.0.104]:5701 [APP] [4.2] Using TCP/IP discovery
2021-07-22 13:15:54.180  WARN 212124 --- [           main] com.hazelcast.cp.CPSubsystem             : [192.168.0.104]:5701 [APP] [4.2] CP Subsystem is not enabled. CP data structures will operate in UNSAFE mode! Please note that UNSAFE mode will not provide strong consistency guarantees.
2021-07-22 13:15:54.680  INFO 212124 --- [           main] c.h.internal.diagnostics.Diagnostics     : [192.168.0.104]:5701 [APP] [4.2] Diagnostics started
2021-07-22 13:15:54.680  INFO 212124 --- [           main] c.h.i.diagnostics.BuildInfoPlugin        : [192.168.0.104]:5701 [APP] [4.2] Plugin:active
2021-07-22 13:15:54.681  INFO 212124 --- [           main] c.h.i.d.SystemPropertiesPlugin           : [192.168.0.104]:5701 [APP] [4.2] Plugin:active
2021-07-22 13:15:54.681  INFO 212124 --- [           main] c.h.i.d.ConfigPropertiesPlugin           : [192.168.0.104]:5701 [APP] [4.2] Plugin:active
2021-07-22 13:15:54.684  INFO 212124 --- [           main] c.h.i.d.PendingInvocationsPlugin         : [192.168.0.104]:5701 [APP] [4.2] Plugin:active: period-millis:30000 threshold:1
2021-07-22 13:15:54.686  INFO 212124 --- [           main] c.h.internal.diagnostics.MetricsPlugin   : [192.168.0.104]:5701 [APP] [4.2] Plugin:active, period-millis:60000
2021-07-22 13:15:54.686  INFO 212124 --- [           main] c.h.i.diagnostics.SlowOperationPlugin    : [192.168.0.104]:5701 [APP] [4.2] Plugin:active, period-millis:30000
2021-07-22 13:15:54.687  INFO 212124 --- [           main] c.h.i.d.PendingInvocationsPlugin         : [192.168.0.104]:5701 [APP] [4.2] Plugin:active: period-millis:30000 threshold-millis:5000
2021-07-22 13:15:54.687  INFO 212124 --- [           main] c.h.i.d.PendingInvocationsPlugin         : [192.168.0.104]:5701 [APP] [4.2] Plugin:active: period-millis:5000
2021-07-22 13:15:54.688  INFO 212124 --- [           main] c.h.i.d.OperationProfilerPlugin          : [192.168.0.104]:5701 [APP] [4.2] Plugin:active, period-millis:5000
2021-07-22 13:15:54.688  INFO 212124 --- [           main] .h.i.d.MemberHazelcastInstanceInfoPlugin : [192.168.0.104]:5701 [APP] [4.2] Plugin:active, period-millis:60000
2021-07-22 13:15:54.689  INFO 212124 --- [           main] c.h.i.diagnostics.SystemLogPlugin        : [192.168.0.104]:5701 [APP] [4.2] Plugin:active: logPartitions:false
2021-07-22 13:15:54.692  INFO 212124 --- [SchedulerThread] c.h.internal.diagnostics.Diagnostics     : [192.168.0.104]:5701 [APP] [4.2] Diagnostics log directory is [D:\Parth\Hazelcast\logs]
2021-07-22 13:15:54.694  INFO 212124 --- [           main] c.h.i.diagnostics.StoreLatencyPlugin     : [192.168.0.104]:5701 [APP] [4.2] Plugin:active: period-millis:60000 resetPeriod-millis:0
2021-07-22 13:15:54.696  INFO 212124 --- [           main] .h.i.d.MemberHazelcastInstanceInfoPlugin : [192.168.0.104]:5701 [APP] [4.2] Plugin:active, period-millis:10000
2021-07-22 13:15:54.697  INFO 212124 --- [           main] c.h.i.d.OperationHeartbeatPlugin         : [192.168.0.104]:5701 [APP] [4.2] Plugin:active: period-millis:10000 max-deviation:33%
2021-07-22 13:15:54.699  INFO 212124 --- [           main] com.hazelcast.core.LifecycleService      : [192.168.0.104]:5701 [APP] [4.2] [192.168.0.104]:5701 is STARTING
2021-07-22 13:15:59.367  INFO 212124 --- [cached.thread-3] c.h.internal.cluster.impl.TcpIpJoiner    : [192.168.0.104]:5701 [APP] [4.2] [192.168.0.104]:5702 is added to the blacklist.
2021-07-22 13:15:59.524  INFO 212124 --- [cached.thread-5] c.h.internal.cluster.impl.TcpIpJoiner    : [192.168.0.104]:5701 [APP] [4.2] [192.168.0.104]:5703 is added to the blacklist.
2021-07-22 13:16:00.178  INFO 212124 --- [           main] c.h.internal.cluster.ClusterService      : [192.168.0.104]:5701 [APP] [4.2] 

Members {size:1, ver:1} [
    Member [192.168.0.104]:5701 - c35ebca4-ca5f-404c-ba0e-1c5e1287aa21 this
]

2021-07-22 13:16:00.194  INFO 212124 --- [           main] com.hazelcast.core.LifecycleService      : [192.168.0.104]:5701 [APP] [4.2] [192.168.0.104]:5701 is STARTED
2021-07-22 13:16:00.514  INFO 212124 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-07-22 13:16:01.489  INFO 212124 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2021-07-22 13:16:01.506  INFO 212124 --- [           main] com.APPhub.Application                   : Started Application in 15.086 seconds (JVM running for 15.996)

这里有两个地址被列入黑名单,不知道为什么。

我的服务器配置如下:

        Config config = new Config();
        
        config.getNetworkConfig().setPort(5701)
        .setPortAutoIncrement( true ).setPortCount(20);
        
        config.getNetworkConfig().setReuseAddress( true );
        

        System.setProperty( "hazelcast.diagnostics.enabled", "true" );
        System.setProperty( "hazelcast.diagnostics.metric.level", "info" );
        System.setProperty( "hazelcast.diagnostics.invocation.sample.period.seconds", "30" );
        System.setProperty( "hazelcast.diagnostics.pending.invocations.period.seconds", "30" );
        System.setProperty( "hazelcast.diagnostics.slowoperations.period.seconds", "30" );
        System.setProperty( "hazelcast.diagnostics.storeLatency.period.seconds", "60" );
        System.setProperty( "hazelcast.diagnostics.directory", "D:/Parth/Hazelcast/logs/" );
        System.setProperty( "hazelcast.diagnostics.filename.prefix", "Server" );
        
        
        config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
        
        config.getNetworkConfig().getInterfaces().addInterface("127.0.0.1");
        
        JoinConfig join = config.getNetworkConfig().getJoin();
        join.getTcpIpConfig().addMember("192.168.0.104");
        join.getTcpIpConfig().setEnabled(true);

当尝试连接客户端时:

2021-07-22 12:07:24.081  INFO 192584 --- [ration.thread-0] c.h.c.i.p.t.AuthenticationMessageTask    : [192.168.0.104]:5701 [APP] [4.2] Received auth from Connection[id=2, /127.0.0.1:5701->/127.0.0.1:5703, qualifier=null, endpoint=[127.0.0.1]:5703, alive=true, connectionType=JVM, planeIndex=-1], successfully authenticated, clientUuid: 6bebb36c-b865-4fd5-aa12-d0f3ec82ae8d, client version: 4.2

When Connect 1 ==============================================================
6bebb36c-b865-4fd5-aa12-d0f3ec82ae8d
8c54b788-7dfb-401a-ae2c-70444534fa8d
When Connect 1 ==============================================================
2021-07-22 12:07:38.902  WARN 192584 --- [.IO.thread-in-1] c.h.i.server.tcp.TcpServerConnection     : [192.168.0.104]:5701 [APP] [4.2] Connection[id=1, /127.0.0.1:5701->/127.0.0.1:5702, qualifier=null, endpoint=[127.0.0.1]:5702, alive=false, connectionType=JVM, planeIndex=-1] closed. Reason: Exception in Connection[id=1, /127.0.0.1:5701->/127.0.0.1:5702, qualifier=null, endpoint=[127.0.0.1]:5702, alive=true, connectionType=JVM, planeIndex=-1], thread=hz.APP1.IO.thread-in-1

java.io.IOException: An existing connection was forcibly closed by the remote host
    at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[na:1.8.0_275]
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) ~[na:1.8.0_275]
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[na:1.8.0_275]
    at sun.nio.ch.IOUtil.read(IOUtil.java:197) ~[na:1.8.0_275]
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) ~[na:1.8.0_275]
    at com.hazelcast.internal.networking.nio.NioInboundPipeline.process(NioInboundPipeline.java:119) ~[hazelcast-all-4.2.jar:4.2]
    at com.hazelcast.internal.networking.nio.NioThread.processSelectionKey(NioThread.java:383) [hazelcast-all-4.2.jar:4.2]
    at com.hazelcast.internal.networking.nio.NioThread.processSelectionKeys(NioThread.java:368) [hazelcast-all-4.2.jar:4.2]
    at com.hazelcast.internal.networking.nio.NioThread.selectLoop(NioThread.java:294) [hazelcast-all-4.2.jar:4.2]
    at com.hazelcast.internal.networking.nio.NioThread.executeRun(NioThread.java:249) [hazelcast-all-4.2.jar:4.2]

客户端配置:

ClientConfig clientConfig = new ClientConfig();
        clientConfig.setClusterName("APP");
        clientConfig.getNetworkConfig().addAddress("localhost");
        clientConfig.getNetworkConfig().setSmartRouting(true);
        clientConfig.getNetworkConfig().addOutboundPortDefinition(5702-5720);
        
        
        clientConfig.setProperty("hazelcast.client.heartbeat.timeout", "60000");
        clientConfig.setProperty("hazelcast.client.heartbeat.timeout", "5000");
        
        ClientConnectionStrategyConfig connectionStrategyConfig = clientConfig.getConnectionStrategyConfig();
        connectionStrategyConfig.setReconnectMode(ClientConnectionStrategyConfig.ReconnectMode.ON);
        connectionRetryConfig.setInitialBackoffMillis(1000)
                             .setMaxBackoffMillis(60000)
                             .setMultiplier(2)
                             .setClusterConnectTimeoutMillis(1000)
                             .setJitter(0.2);

让我知道我做错了什么,或者什么是成员和客户端集群的最佳配置,其中成员为 1,客户端为多个。

【问题讨论】:

  • 据我所知,您并没有做错什么,您可以忽略黑名单消息。如果您在 192.168.0.104 机器上添加更多具有相同配置的节点,集群仍然会形成,因为新成员也会执行扫描并找到第一个节点。另外,由于您是 hazelcast 的新手,我建议您查看 clusterName 配置,这是避免集群中意外成员的最简单方法。
  • @vitalyros 感谢重播,但是当我将两个客户端与集群成员连接时出现问题,其中一个客户端断开连接并显示:com.hazelcast.spi.exception.TargetDisconnectedException:心跳超时连接ClientConnection,关于clutername我不认为这是一个问题,因为我只有一个成员和多个客户端,所以clustername对所有人都是一样的。
  • 第二个客户端连接时,集群节点是否记录任何内容?我的假设是 Windows 防火墙或网络配置是问题所在。
  • 没有太多日志,它只是自行断开连接,让我尝试关闭防火墙:com.hazelcast.spi.exception.TargetDisconnectedException: Heartbeat timed out to connection ClientConnection{alive=true, connectionId=1 , channel=NioChannel{/127.0.0.1:5703->localhost/127.0.0.1:5701}, remoteAddress=[localhost]:5701, lastReadTime=2021-07-22 17:04:29.122, lastWriteTime=2021-07-22 17:04:37.712, closedTime=never, 连接服务器版本=4.2}
  • 关闭防火墙并尝试但仍然是同样的问题。

标签: java hazelcast hazelcast-jet


【解决方案1】:

可能是客户端的心跳超时太短了。

你可能已经从https://docs.hazelcast.com/imdg/4.2/clients/java.html复制了心跳配置

clientConfig.setProperty("hazelcast.client.heartbeat.timeout", "60000");
clientConfig.setProperty("hazelcast.client.heartbeat.interval", "5000");

但是对于第二行,您再次设置了 timeout 而不是 interval,用 5000 覆盖了 60000 的值

【讨论】:

  • 哦,是的,谢谢你,它现在正在连接,真是愚蠢的错误,但让我尝试几次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多