Я настроил кластер Redis с 3 мастерами и 3 подчиненными .Мастера здесь имеют одинаковые слоты, т.е.
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>
Кто-нибудь может мне помочь с этим?Что мне не хватает?Где проблема в вышеуказанной настройке?