redis 集群仅使用 2 个节点而不是 4

问题描述

我尝试在 4 个节点上设置一个 redis 集群,每个节点都有不同的 IP 和端口。

nohup ${install_dir}/redis-stable/src/redis-server ${install_dir}/${port}/node.conf &
let "port++"

for i in $ipb $ipc $ipd; do 
 ssh -i ~/.ssh/"ssh key" "sshid"@${i} /bin/bash << EOF
 nohup ${install_dir}/redis-stable/src/redis-server ${install_dir}/${port}/node.conf &
EOF
 let "port++"
done

# setup the cluster 
$install_dir/redis-stable/src/redis-cli --cluster create $ipa:7001 $ipb:7002 $ipc:7003 $ipd:7004 --cluster-replicas 0

这里的“文本”是匿名的,但 ssh 工作正常。 问题是集群仅在节点 2 (ipb) 上启动,具有 2 节点集群:ipa 和 ipb。 在 ipc 和 ipd 上,甚至没有启动 redis-server 进程。如果我关闭当前集群,它将启动一个带有 ipa 和 ipc 的 2 节点集群,然后如果我再次关闭,它将创建一个带有 ipd 和 ipa 的 2 节点集群。最后,如果我关闭这个,它就会关闭。我希望集群立即启动所有 4 个节点而不是 2 个,我应该修复什么才能得到这个?副本 0 是故意的,我不需要副本奴隶。 Node.conf 文件包含正确的端口、启用集群的 yes 等,就像 redis 官方页面集群教程中一样。 for 循环似乎是问题所在,但我在 EOF 中使用了与另一个命令完全相同的命令,并且运行良好。 我想尽可能避免添加节点然后重新分片技术,但如果没有其他选择...... 感谢您的帮助,如果您需要更多信息,请随时指出。如果我的错误与 redis 无关,而是由于我的 bash 水平不佳造成的,我深表歉意。

编辑:我看到我获得了将近 60 次观看,但没有人回答,我该怎么做才能让我的问题更适合你们?还是有那么蠢?

解决方法

nohup ${install_dir}/redis-stable/src/redis-server ${install_dir}/${port}/node.conf >${port}.out 2>${port}.err < /dev/null &

重定向输入输出并解决问题。