Google 容器引擎 (GKE - Kubernetes) 上的 Redis 集群
Redis cluster on Google Container Engine (GKE - Kubernetes)
我已经在 Kubernetes(Google 容器引擎)上设置了 redis-cluster。引用自:https://github.com/zuxqoj/kubernetes-redis-cluster/blob/master/README-using-statefulset.md
所以目前的状态是,我们在Kubernetes Cluster的单个节点下有6个pods,3个pods作为masters,3个pods作为slaves。已将所有 pods 带入 redis-cluster,一切正常。
但是,当我尝试关闭其中一个主/从 pod 时,kubernetes 会自动启动一个具有新 IP 的新 pod。并且新 IP 在所有其他 pods 节点配置中自动更新,除了它自己的节点配置。
有什么我想念的吗?
我使用的是redis 4.0.0
Redis 集群 Yaml:https://drive.google.com/open?id=1oSQzYu-pAJmehaAfU_HdIa3qAJBx1n5C
尝试使用 DNS 主机名而不是 IP 地址。
查看执行此操作的 Helm 图表:
您需要在 nodes.conf 中更新新 pod 的 IP。
你可以在pod的初始化中通过运行这个脚本来完成。
#!/bin/sh
set -e
REDIS_NODES_FILE="/data/nodes.conf"
if [ -f ${REDIS_NODES_FILE} ]; then
if [ -z "${POD_IP}" ]; then
echo "Unable to determine Pod IP address!"
exit 1
fi
echo "Updating my IP to ${POD_IP}"
sed -i.bak -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES_FILE}
fi
我已经在 Kubernetes(Google 容器引擎)上设置了 redis-cluster。引用自:https://github.com/zuxqoj/kubernetes-redis-cluster/blob/master/README-using-statefulset.md
所以目前的状态是,我们在Kubernetes Cluster的单个节点下有6个pods,3个pods作为masters,3个pods作为slaves。已将所有 pods 带入 redis-cluster,一切正常。
但是,当我尝试关闭其中一个主/从 pod 时,kubernetes 会自动启动一个具有新 IP 的新 pod。并且新 IP 在所有其他 pods 节点配置中自动更新,除了它自己的节点配置。 有什么我想念的吗?
我使用的是redis 4.0.0
Redis 集群 Yaml:https://drive.google.com/open?id=1oSQzYu-pAJmehaAfU_HdIa3qAJBx1n5C
尝试使用 DNS 主机名而不是 IP 地址。
查看执行此操作的 Helm 图表:
您需要在 nodes.conf 中更新新 pod 的 IP。 你可以在pod的初始化中通过运行这个脚本来完成。
#!/bin/sh
set -e
REDIS_NODES_FILE="/data/nodes.conf"
if [ -f ${REDIS_NODES_FILE} ]; then
if [ -z "${POD_IP}" ]; then
echo "Unable to determine Pod IP address!"
exit 1
fi
echo "Updating my IP to ${POD_IP}"
sed -i.bak -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES_FILE}
fi