Nós usamos o HAproxy para equilibrar entre dois clusters redundantes. Durante a operação normal, cada um recebe ~ 50% do tráfego; cada um é provisionado para tirar 100% quando necessário.
Tivemos uma falha recentemente baseada em um caso de falha que não planejamos: todos os nós cliente e mestre permaneceram ativos, então nosso cluster respondeu ao REST, mas todos os nós de dados estavam temporariamente off-line, todos os índices apareciam vermelhos e vazios e consultas contra eles retornaram 0 resultados. Mas com 200, seguindo a convenção REST.
Nossa verificação de integridade simples do HAproxy falhou neste caso; apenas verificado por 200s.
Agora estou investigando o uso de http-check expect ! string red
com um URI que segmenta diretamente o índice de interesse. Eu não usei os recursos http-check
mais avançados antes.
Uma verificação mais cara, mas deve levar corretamente os nós clientes de um cluster lobotomizado para fora do pool.
UPDATE (2): eu mudei para nós usando
option httpchk get /_cat/indices/<index of interest>
http-check expect rstring \b(green|yellow)\b
e, de fato, parece um teste melhor.
(Segunda revisão: usando a verificação explícita para green
ou yellow
em vez de apenas não-vermelho, pensava tardiamente no índice totalmente ausente de _cat
fiter ..._