如何对生产中的Redis-Cluster进行故障排除

时间:2019-04-24 12:02:03

标签: redis production-environment sharding sentinel redis-cluster

我已经设置了一个具有 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> 

有人可以帮我吗?我想念什么?上面的设置在哪里出问题了?

0 个答案:

没有答案