Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hazelcast在SpringBoot管理中通过Docker Swarm运行2个实例_Java_Docker_Docker Swarm_Hazelcast_Spring Boot Admin - Fatal编程技术网

Java Hazelcast在SpringBoot管理中通过Docker Swarm运行2个实例

Java Hazelcast在SpringBoot管理中通过Docker Swarm运行2个实例,java,docker,docker-swarm,hazelcast,spring-boot-admin,Java,Docker,Docker Swarm,Hazelcast,Spring Boot Admin,我是SpringBoot管理员、HazelCast和Docker Swarm的新手。。。 我要做的是在Docker Swarm中运行2个SpringBoot管理服务器实例。 它只适用于一个实例。我认为SBA的每一个特点都很有效。 如果我在swarm中将复制副本的数量设置为“2”,并且出现以下情况,则登录页面不起作用(它会显示出来,但我无法登录,控制台中没有错误): 模式:复制 副本:2份 更新配置: 平行度:1 延迟:60秒 失败\u操作:回滚 订单:先开始 监视器:60秒 回滚配置: 平行度:

我是SpringBoot管理员、HazelCast和Docker Swarm的新手。。。 我要做的是在Docker Swarm中运行2个SpringBoot管理服务器实例。 它只适用于一个实例。我认为SBA的每一个特点都很有效。 如果我在swarm中将复制副本的数量设置为“2”,并且出现以下情况,则登录页面不起作用(它会显示出来,但我无法登录,控制台中没有错误):

模式:复制
副本:2份
更新配置:
平行度:1
延迟:60秒
失败\u操作:回滚
订单:先开始
监视器:60秒
回滚配置:
平行度:1
延迟:60秒
操作失败:暂停
订单:先开始
监视器:60秒
重新启动\u策略:
条件:任何
延迟:60秒
最多尝试次数:3次
窗口:3600
我当前的HazelCast配置如下(如SpringBoot管理文档中所指定):

@Bean
公共配置hazelcast(){
//此映射用于存储事件。
//应将其配置为可靠地保存所有数据,
//如果事件太多,Spring Boot Admin将压缩事件
MapConfig eventStoreMap=new MapConfig(默认名称\事件\存储\映射)。setInMemoryFormat(InMemoryFormat.OBJECT)
.setBackupCount(1).SetReceivingPolicy(ReceivingPolicy.NONE)
.setMergePolicyConfig(新的MergePolicyConfig(PutIfAbsentMapMergePolicy.class.getName(),100));
//此映射用于消除通知中的重复数据。
//如果此地图中的数据丢失,这应该不是一个大问题,因为它将导致大气污染
//导致
//要由多个实例发送的相同通知
MapConfig sentNotificationsMap=新的MapConfig(默认\u名称\u发送的\u通知\u映射)
.setInMemoryFormat(InMemoryFormat.OBJECT).setBackupCount(1).SetReceivinPolicy(ReceivinPolicy.LRU)
.setMergePolicyConfig(新的MergePolicyConfig(PutIfAbsentMapMergePolicy.class.getName(),100));
Config=new Config();
config.addMapConfig(eventStoreMap);
config.addMapConfig(sentNotificationsMap);
config.setProperty(“hazelcast.jmx”,“true”);
//警告:这将设置本地群集,您可以根据需要对其进行更改。
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true);
TcpIpConfig TcpIpConfig=config.getNetworkConfig().getJoin().getcpipconfig();
tcpIpConfig.setEnabled(true);
//NetworkConfig network=config.getNetworkConfig();
//InterfacesConfig interfaceConfig=network.getInterfaces();
//interfaceConfig.setEnabled(真)
//.addInterface(“192.168.1.3”);
//setMembers(singletonList(“127.0.0.1”);
返回配置;
}
```
我猜这些输入不足以让您提供适当的帮助,但由于我并不真正了解HazelCast的工作方式,我真的不知道什么有用或不有用。所以请不要犹豫,问我需要什么帮助!:)
你们知道我做错了什么吗?
非常感谢!

默认覆盖驱动程序中的Docker Swarm无法运行多播(至少声明了这一点)。 我曾尝试使用weave网络插件使其运行,但运气不佳。 在我的例子中,将Hazelcast切换到TCP模式并提供我喜欢搜索其他副本的网络就足够了

诸如此类:

 -Dhz.discovery.method=TCP
 -Dhz.network.interfaces=10.0.251.*
 -Dhz.discovery.tcp.members=10.0.251.*

能否粘贴应用程序中的日志(尤其是Hazelcast中的日志)?通常,我不确定以下配置是否正确:
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true)。不确定多播在Docker Swarm中是否正常工作。你可以查看这个社区插件:@RafałLeszko我将在下周复制pb后立即发布日志:)谢谢你的回答!我应该把这个配置放在哪里?在application.yml中?它应该是一种在配置中以某种方式指定它的方法。我相信它就在这里的某个地方://NetworkConfig network=config.getNetworkConfig();//InterfacesConfig interfaceConfig=network.getInterfaces();//interfaceConfig.setEnabled(真)/.addInterface(“192.168.1.3”);//setMembers(singletonList(“127.0.0.1”);