Failovers falsos Redis Sentinel

1

Estou tendo problemas com o Redis.

Eu tenho 3 servidores. Cada servidor tem 10 redizes trabalhando em porta diferente. Além disso, cada servidor tem uma instância do Sentinel.

Além disso, existem 5 servidores de aplicativos. Cada servidor tem HaProxy, que verifica no pool qual servidor Redis é o mestre e redireciona o tráfego para ele.

Portanto, o aplicativo sempre usa 127.0.0.1:port, não importando qual servidor é o mestre Redis.

Estou com problemas com falsos positivos. Este é o meu log:

[37338] 29 Apr 07:51:36.813 # Connection with slave ip1:6388 lost.
[37338] 29 Apr 07:51:37.399 # Connection with slave ip3:6388 lost.
[7244] 29 Apr 07:51:38.809 * DB saved on disk
[7244] 29 Apr 07:51:38.814 * RDB: 35 MB of memory used by copy-on-write
[37338] 29 Apr 07:51:38.918 * Background saving terminated with success
[37338] 29 Apr 07:51:47.451 * SLAVE OF 192.168.234.ip1:6388 enabled (user request)
[37338] 29 Apr 07:51:47.457 # CONFIG REWRITE executed with success.
[37338] 29 Apr 07:51:47.541 * Connecting to MASTER ip1:6388
[37338] 29 Apr 07:51:47.541 * MASTER <-> SLAVE sync started
[37338] 29 Apr 07:51:47.541 * Non blocking connect for SYNC fired the event.
[37338] 29 Apr 07:51:47.541 * Master replied to PING, replication can continue...
[37338] 29 Apr 07:51:47.541 * Partial resynchronization not possible (no cached master)
[37338] 29 Apr 07:51:47.542 * Full resync from master: 0be90102031e58ef358f0ea48e58eeae869902d1:157705847
[37338] 29 Apr 07:51:51.730 * MASTER <-> SLAVE sync: receiving 85082188 bytes from master
[37338] 29 Apr 07:51:52.588 * MASTER <-> SLAVE sync: Flushing old data
[37338] 29 Apr 07:51:53.011 * MASTER <-> SLAVE sync: Loading DB in memory
[37338] 29 Apr 07:51:54.401 * MASTER <-> SLAVE sync: Finished with success
[37338] 29 Apr 07:52:39.072 * 10000 changes in 60 seconds. Saving...
[37338] 29 Apr 07:52:39.083 * Background saving started by pid 27656

Mas nada aconteceu o que causaria isso.

Eu já tive problema quando o tempo limite do Sentinel estava baixo (100ms), então mudei para 5s. Não houve timeouts até hoje.

Além disso, 5 servidores são redundantes. Quando eu virar de metade deles, o aplicativo começa a desacelerar. Não há problemas de disco da CPU, Mem, eu posso ver.

Ontem, eu questionei se o servidor de aplicativos havia perdido tráfego quando metade deles estava desligada. O servidor começa a ficar inativo por alguns segundos e depois funciona normalmente. O Nginx (servidor frontal) usa o proxypass para balancear o tráfego para o servidor de aplicativos. Eu duvidei no intervalo de portas (netstat contava com mais de 90k conexões). Além disso, havia mais de 30k conexões de 127.0.0.1:someport para 127.0.0.1:redisport no timewait. Aplicação - > Haproxy Redis.

net.ipv4.ip_local_port_range = 10000    65535

Além disso, liguei:

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

Depois disso, não houve mais tráfego perde, mas a aplicação ainda é muito lenta e não há razões óbvias para isso (cpu, mem, hdd ... tudo ok).

O que posso verificar mais?

    
por yax 30.04.2015 / 13:44

0 respostas