我正在运行一个由 48 个实例组成的 Redis 集群,分布在 6 台物理服务器上。这些 redis 实例在 docker 容器中运行。
集群设计如下:
1)这 4 台服务器(M1、M2、M3、M4)上分别运行 4 个用于 Redis Master 的 Docker 容器。
2) 每个主服务器有 2 个从服务器。因此,这意味着 Redis 从服务器有 16 个 Docker 容器,运行在另外两台服务器(S1、S2)上。
我在获取密钥时遇到问题。例如,我使用 M1D1 上的 redis-cli 获取存储在 M1D2 上的密钥时,出现以下错误。
# echo "get a " | redis-cli -c -h 172.16.84.181 -p 6351
-> Redirected to slot [3902] located at 172.17.0.1:6350
Could not connect to Redis at 172.17.0.1:6350: Connection refused
Could not connect to Redis at 172.17.0.1:6350: Connection refused
我很确定这个问题与 Docker 有关。是否可以让 Docker 使用 Base Host eth0 IP 作为 redis 的 IP,而不是使用 docker0 IP?
答案1
它使用基本主机 eth0 IP 本身,以便在外部进行访问。因此,可能会更改 redis 的配置,以使用 redis 实例的 IP 作为基本主机 eth0 IP,并在 docker 上进行端口转发