Verificação de saúde para detectar o mestre de redis do balanceador de carga tcp do google

1

Estou tentando configurar um balanceador de carga interno do google TCP. O grupo de instâncias por trás desse lb consiste em processos de servidor-redis que estão escutando na porta 6379. Fora dessas instâncias de redis, apenas um deles é o mestre.

Problema : Adicione uma verificação de integridade TCP para detectar o mestre de redis e faça lb desviar todo o tráfego para apenas mestre de redis.

Abordagem : Adicionada uma verificação de integridade TCP para a porta 6379. Para enviar o comando role para o processo redis-server e analisar a resposta, estou usando os parâmetros opcionais fornecidos na verificação de integridade. Por favor, verifique a imagem aqui .

Resultado : a verificação de integridade está falhando para todos. Se eu remover os parâmetros de solicitação / resposta opcionais, a verificação de integridade começa a passar para todos.

Depuração :

  1. Conectado a lb usando netcat e emitiu o comando role , ele envia a resposta começando com *3 (para mestre) e *5 (para escravo) conforme o esperado.
  2. Registrado na instância e interrompido processo redis-server. Começou a escutar na porta 6379 usando nc -l -p 6379 para verificar exatamente o que está sendo recebido no lado da instância na verificação de integridade. Ele recebe role\r\n .
  3. Após o passo 2, reiniciei o redis-server e executei o comando MONITOR no redis-cli, para ver o log dos comandos recebidos por este processo. Aqui não há log de role . Isso significa que a instância está recebendo os dados ( role\r\n ) sobre o tcp, mas não é recebida pelo processo redis-cli (conforme o comando MONITOR ) ou algo mais está acontecendo. Por favor ajude.
por Yadvendar 05.04.2017 / 12:58

0 respostas