无法为Spring Boot应用程序重写Hazelcast.yaml中的属性



我有一个带有Hazelcast的Spring Boot应用程序(使用4.2,也尝试使用4.0.3的Hazelcast所有依赖项(。Hazelcast是为嵌入式拓扑配置的。我使用TCP-IP网络连接方式。Hazelcast的属性是使用文件Hazelcast.yaml和Spring Boot属性spring.hazelcast.config设置的(默认情况下,Spring将此名称用于Hazelccast配置,这是多余的(。

在属性member-list中,我表示一个子网中两台机器的IP地址(例如192.0.0.1和192.0.0.2(

我使用OpenJdk上基于Alpine的镜像在Docker中构建应用程序。图像包括启动java -jar命令作为ENTRYPOINT

问题所在地:

我在前面描述的两台机器上运行两个docker容器。我只转发两个集装箱上的5701端口(使用-p(。而且容器彼此看不见。Spring Boot日志显示正在使用容器网络。

PS:

  1. 如果使用--net host运行docker,则所有工作
  2. 如果我在Hazelcast.yaml中为两个容器打包具有属性public-address的Spring Boot应用程序,那么所有这些都可以工作——一个包的值为192.0.0.1,另一个包值为1920.0.2。Spring Boot Hazelcast实例使用机器网络(192.0.0.1和192.0.0.2(相互查看

问题:

我尝试使用:覆盖Hazelcast.yaml中的属性public-address

  • docker run -e HZ_NETWORK_PUBLICADDRESS=192.0.0.1
  • export HZ_NETWORK_PUBLICADDRESS=192.0.0.1 && docker run
  • JAVA_OPTS="-Dhz.network.public-address=192.0.0.1"
  • JAVA_OPTS="-Dhazelcast.local.publicAddress=192.0.0.1"
  • JAVA_OPTS="-Dhazelcast.config=/mnt/overrided_hazelcast.yaml"
  • ENV HZ_NETWORK_PUBLICADDRESS=192.0.0.1-在Dockerfile中
  • ENTRYPOINT java -jar -Dhz.network.public-address=192.0.0.1 my-app.jar

什么都不管用。有人知道为什么在启动时无法覆盖Hazelcast.yaml中的属性public-address吗?

也许有人知道我如何在不同的机器上的不同Docker容器中运行两个嵌入Hazelcast的Spring Boot应用程序。

设置Hazelcast公共地址的方式是正确的,至少从添加了Config Override功能的Hazelcast4.1开始是正确的。

要查看工作版本,您可以查看Hazelcast指南:Kubernetes上的嵌入式Hazelcast。您可以使用TCP-IP来代替Hazelcast Kubernetes配置。以下Hazelcast配置对我有效(我的主机IP是172.22.41.210(。

hazelcast:
cluster-name: hazelcast-cluster
network:
join:
tcp-ip:
enabled: true
member-list:
- 172.22.41.210:5701
- 172.22.41.210:5702

然后,构建和启动两个应用程序应该形成一个集群。

$ mvn package && docker build -t hazelcast-embedded .
$ docker run --rm -e HZ_NETWORK_PUBLICADDRESS=172.22.41.210 -p 5701:5701 hazelcast-embedded
$ docker run --rm -e HZ_NETWORK_PUBLICADDRESS=172.22.41.210:5702 -p 5702:5701 hazelcast-embedded

您应该看到集群是在应用程序日志中形成的。

Members {size:2, ver:2} [
Member [172.22.41.210]:5701 - 21af9e1a-7e98-4305-905c-451ee23486c3 this        
Member [172.22.41.210]:5702 - 0507d970-1f31-4df3-9ea5-8c3981eb7c98     
]

最新更新