首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis Cluster Client不支持GKE上的Redis集群

Redis Cluster Client不支持GKE上的Redis集群
EN

Stack Overflow用户
提问于 2019-07-23 19:12:16
回答 2查看 250关注 0票数 0

我的设置有一个包含8个节点和32个pod的K8S Redis集群,顶部有一个负载均衡器服务。

我正在使用Redis集群客户端,通过负载均衡器的外部IP访问该集群。但是,在处理查询时,作为Redis集群重定向(MOVED / ASK)的一部分,集群客户端收到32个Pod的内部IP地址,客户端连接失败。

例如,我提供了负载均衡器的IP地址(35.245.51.198:6379),但是Redis集群客户端抛出错误,例如: redis.clients.jedis.exceptions.JedisConnectionException:连接到主机10.32.7.2:6379失败,这是一个内部Pod IP。

任何关于如何处理这种情况的想法都将非常感谢。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-07-24 17:28:10

如果您在GKE上运行,您可以使用IP masquerade agent NAT Pod IP

在群集中使用IP伪装的

可以防止单个Pod IP地址暴露给本地链路范围(169.254.0.0/16)和其他任意IP范围之外的流量,从而提高其安全性

具体来说,您的问题是,pod范围在10.0.0.0/8上,默认情况下是一个non-masquerade CIDR

您可以使用ConfigMap对此进行更改,以将该范围视为伪装,以便它选择节点的外部IP作为源地址。

或者,您可以对任何被屏蔽的内容执行change the pod range in your cluster操作。

票数 0
EN

Stack Overflow用户

发布于 2022-01-20 18:31:29

在gke上安装bitnami/redis-cluster时,我一直在努力解决同样的问题。

为了拥有正确的网络设置,您应该将群集设置创建为公共群集

在MYPROJECT中创建集群的等效命令行是:

代码语言:javascript
复制
gcloud beta container --project "MYPROJECT" clusters create "redis-cluster" --zone "us-central1-c" --no-enable-basic-auth --cluster-version "1.21.5-gke.1802" --release-channel "regular" --machine-type "e2-medium" --image-type "COS_CONTAINERD" --disk-type "pd-standard" --disk-size "100" --metadata disable-legacy-endpoints=true --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --logging=SYSTEM,WORKLOAD --monitoring=SYSTEM --no-enable-ip-alias --network "projects/MYPROJECT/global/networks/default" --subnetwork "projects/oddsjam/regions/us-central1/subnetworks/default" --no-enable-intra-node-visibility --no-enable-master-authorized-networks --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0 --workload-pool "myproject.svc.id.goog" --enable-shielded-nodes --node-locations "us-central1-c"

然后,您需要在Network VPC产品中创建尽可能多的外部IP地址。这些IP地址将由Redis节点自动挑选。

然后,您就可以获取Bitnami Redis Cluster Helm chartvalues.yaml并根据您的用例更改conf了。将您创建的外部ips列表添加到cluster.externalAccess.loadBalancerIP值。

最后,您可以通过以下命令在GKE上运行该命令来安装Redis集群

代码语言:javascript
复制
helm install cluster-name -f values.yaml bitnami/redis-cluster

此命令将为您提供集群的密码。您可以使用redis-client通过以下方式连接到新集群:

代码语言:javascript
复制
redis-cli -c -h EXTERNAL_IP -p 6379 -a PASSWORD
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57162876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档