我有以下设置。
My Vert.x verticals与Hazelcast集群,并部署在Kubernetes集群上,网络信息如下:
------------------------------------------------
TCP/IP NETWORK INFORMATION
------------------------------------------------
IP Entered = ..................: 10.60.0.0
CIDR = ........................: /14
Netmask = .....................: 255.252.0.0
Netmask (hex) = ...............: 0xfffc0000
Wildcard Bits = ...............: 0.3.255.255
------------------------------------------------
Network Address = .............: 10.60.0.0
Broadcast Address = ...........: 10.63.255.255
Usable IP Addresses = .........: 262,142
First Usable IP Address = .....: 10.60.0.1
Last Usable IP Address = ......: 10.63.255.254
Hazelcast的cluster.xml
有以下部分:
<join>
<multicast enabled="true">
<multicast-group>224.2.2.3</multicast-group>
<multicast-port>54327</multicast-port>
</multicast>
</join>
一切似乎都很好。当我在pod中开始垂直时,我会得到输出(缩写(:
>kubectl get pods --namespace develop -o wide
READY STATUS RESTARTS AGE IP
1/1 Running 0 52m 10.60.4.18
1/1 Running 0 4m 10.60.6.19
1/1 Running 0 4m 10.60.1.16
1/1 Running 0 4m 10.60.1.18
1/1 Running 0 4m 10.60.6.18
1/1 Running 0 4m 10.60.1.17
1/1 Running 0 4m 10.60.4.23
1/1 Running 0 8m 10.60.6.17
1/1 Running 0 4m 10.60.4.22
1/1 Running 0 4m 10.60.4.21
1/1 Running 0 4m 10.60.6.20
1/1 Running 0 5d 10.60.4.9
问题是,集群不是按指定的组名分组的,而是按ip地址的第三个数字分组的。所以,我得到了一个集群:
masterAddress=[10.60.1.17]:5701
Members[
[10.60.1.17]:5701
[10.60.1.16]:5701
[10.60.1.18]:5701]]
然后5个成员用于"集群"10.60.4.*
,4个成员用于10.60.6.*
等等,并且它们不合并。。。
我错过了什么?
TIA-
Hazelcast有一个专门的插件用于Kubernetes中的发现。请查收:榛子铸件kubernetes。
Mutilist可能工作,也可能不工作,因为它取决于底层网络。根据我在GKE的经验,它有时有效,有时无效。这就是为什么Kubernetes从不推荐使用基于多播的发现。
资源:
- Hazelcast Kubernetes自述
- Hazelcast Kubernetes代码示例
- 在Kubernetes上部署Hazelcast Embedded的Spring Boot应用程序示例