我已经设置了一个具有 3个Master和3个Slaves 的Redis集群。 这里的主人被平均分片 即
Master1-0-5460插槽
Master2-5461-10922插槽
Master3-10923-16383插槽
,并在此之上实现了用于自动故障转移的Sentinel。 此外,我还为此实现了一个代理(HAPROXY),以便只能通过单个IP访问群集。
我的主服务器在端口7000、7001、7002上运行,从服务器在端口7003、7004、7005上运行。
进一步的Sentinel在端口23679上运行,而Haproxy在端口6378上运行。
在进行故障转移时,Sentinel可以正常工作。
这是我的配置文件:
#Master
protected-mode no
daemonize yes
port 7000
pidfile /var/run/redis_7000.pid
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
#Slave
protected-mode no
daemonize yes
port 7003
pidfile "/var/run/redis_7003.pid"
cluster-enabled yes
cluster-config-file "nodes-7003.conf"
cluster-node-timeout 5000
appendonly yes
# Generated by CONFIG REWRITE
dir "/home/ubuntu/redis-stable"
#HAPROXY
defaults REDIS
mode tcp
timeout connect 10s
timeout server 18s
timeout client 18s
frontend ft_redis
bind *:6378 name redis
default_backend redis-server
backend redis-server
balance roundrobin
mode tcp
option tcp-check
#balance source
tcp-check connect
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send info\ replication\r\n
tcp-check expect string role:master
tcp-check send QUIT\r\n
tcp-check expect string +OK
server server0 <IP1>:7000 check inter 1s
server server3 <IP2>:7003 check inter 1s
server server1 <IP3>:7001 check inter 1s
server server4 <IP4>:7004 check inter 1s
server server2 <IP5>:7002 check inter 1s
server server5 <IP6>:7005 check inter 1s
我面临的问题是:
当我尝试在网站上的生产中实现此体系结构时,有时会加载一些页面,有时却不会。而且我无法找出此问题/错误背后的可能原因。
如果我仅使用单个Redis节点,它就可以正常工作。
我什至尝试通过终端测试此Redis集群设置 redis-cli ,它工作正常。 它能够将Redis命令重定向到其他主机上所需的插槽中。
127.0.0.1:6378> get foo
"bar"
127.0.0.1:6378> get hello
-> Redirected to slot [866] located at <IP1>:7000
"123"
<IP1>:7000> get abcd
-> Redirected to slot [10294] located at <IP2>:7001
"1234"
<IP2>:7001> get foo
-> Redirected to slot [12182] located at <IP3>:7002
"bar"
<IP3>:7002>
有人可以帮我吗?我想念什么?上面的设置在哪里出问题了?