Amazon web services 使用负载平衡器在AWS EKS上公开Hazelcast群集
我们有一个Hazelcast 3.12集群运行在AWS EKS kubernetes集群中 您知道如何将运行在AWS EKS kubernetes群集内部的具有多个pod的Hazelcast群集暴露到kubernetes群集外部吗? Hazelcast集群有6个吊舱,暴露在kubernetes集群之外,具有LoadBalancer(AWS经典负载平衡器)类型的kubernetes“服务” 当我从kubernetes集群外部运行Hazelcast客户端时,我能够使用AWS负载平衡器连接到Hazelcast集群。但是,当我尝试从Hazelcast映射中获取一些值时,客户端失败,出现以下错误: java.io.IOException:没有到地址[172.17.251.81]:5701的可用连接,地址为com.hazelcast.client.spi.impl.SmartClientInvocationService.getOrTriggerConnect(SmartClientInvocationService.java:75 该错误提到IP地址172.17.251.81。这是Hazelcast吊舱的内部kubernetes IP,我无法从kubernetes群集外部连接到该吊舱。我不知道客户端为什么尝试连接到此IP地址而不是负载平衡器公共IP地址 另一方面,当我将hazelcast集群从6个pod缩放到1个pod时,我能够连接并获得地图值,没有任何问题 如果要查看kubernetes LoadBalancer服务配置:Amazon web services 使用负载平衡器在AWS EKS上公开Hazelcast群集,amazon-web-services,kubernetes,hazelcast,amazon-elb,amazon-eks,Amazon Web Services,Kubernetes,Hazelcast,Amazon Elb,Amazon Eks,我们有一个Hazelcast 3.12集群运行在AWS EKS kubernetes集群中 您知道如何将运行在AWS EKS kubernetes群集内部的具有多个pod的Hazelcast群集暴露到kubernetes群集外部吗? Hazelcast集群有6个吊舱,暴露在kubernetes集群之外,具有LoadBalancer(AWS经典负载平衡器)类型的kubernetes“服务” 当我从kubernetes集群外部运行Hazelcast客户端时,我能够使用AWS负载平衡器连接到Hazel
kind: Service
apiVersion: v1
metadata:
name: hazelcast-elb
labels:
app: hazelcast
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
spec:
ports:
- name: tcp-hazelcast-elb
port: 443
targetPort: 5701
selector:
app: hazelcast
type: LoadBalancer
如果使用一个LoadBalancer服务公开所有POD,则需要使用Hazelcast 如果您想使用默认设置(这意味着更好的性能),那么您需要使用单独的服务公开每个Pod,因为每个Pod都需要从Kubernetes集群外部访问
请阅读博文:。非常感谢您的解决方案。我在客户端禁用了“智能路由”,现在它可以工作了!
hazelcast-client:
smart-routing: false