1、看了官方文档,没有发现有关整个集群关闭再启动的方法。集群是多机器多节点运行,一般情况不可能出现所有机器都挂掉。但万一同时挂掉,数据丢失的可能性就极大了。
验证方法:手动关闭了集群中所有节点,然后再逐一启动所有节点。然后用redis-trib.rb在创建集群时报如下错误,从官方文档中也没有找到相关说明。
[ERR] Node 192.168.116.130:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
2、不支持在配置文件中设置密码认证。
在配置文件中设置密码,redis-trib.rb在创建集群提示无法连接节点。
在命令行客户端下使用config set requirepass password 可以设置密码。
但测试发现集群中只要有多个节点重启后,密码认证就会失去作用。
3、发现额外开启了一些端口,暂不清楚作用,猜测是用于集群节点健康检查。
最初搭建集群规划机器和端口情况如下:
192.168.116.129 7000,7003
192.168.116.130 7001,7004
192.168.116.131 7002,7005
由于在公网环境下使用,所以开启iptables,添加了一规则:
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.129 --dport 7000 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.129 --dport 7003 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.131 --dport 7000 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.131 --dport 7003 -j ACCEPT
开启iptables之后,检测集群一直发现异常:
在192.168.116.129 这台机器执行netstat -nltp命令查看,发现监听的端口除了配置文件中定义的7000和7003外,还监听了17000
和17003.
在另外两台机器上查看,发现情况一样。
随后在每台机器上重新添加几条规则,192.168.116.129规则如下:
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.129 --dport 17000 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.129 --dport 17003 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.131 --dport 17000 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.116.131 --dport 17003 -j ACCEPT
然后重新检测下集群,恢复正常: