Como você pode ligar nós em um cluster de redis via hostname em vez de ip?

2

O cluster Redis requer que todos os nós possam se ver para conversar; para acomodar algumas situações triviais (por exemplo, docker com todos os nós expostos publicamente), algumas opções de configuração adicionais estão disponíveis:

cluster-announce-ip 10.1.1.5
cluster-announce-port 6379
cluster-announce-bus-port 6380

(veja link para a única documentação disponível sobre essas opções)

Observe que esses valores são codificados no arquivo de configuração. Isso é extremamente inconveniente.

É possível configurar de alguma forma os redis para usar um hostname em vez de um IP para o endpoint? Existe alguma solução para isso?

Como um exemplo tangível de por que isso é necessário, considere tentar configurar um cluster de redis de teste em uma imagem do Docker com várias instâncias de redis no contêiner único por meio de um Dockerfile:

  • Se cluster-announce-ip for definido, todos os nós tentarão conversar por meio de cluster-announce-ip .

  • Se cluster-announce-ip for um IP externo, como a imagem do docker não está sendo executada com -p durante docker build... , o IP externo não está disponível e o cluster não pode ser configurado.

  • Se cluster-announce-ip não estiver definido, o cluster poderá ser configurado, mas como o ip é interno ao docker, ele não poderá ser visto externamente depois que o cluster estiver em execução (clientes externos reclamarão quando receberem um MOVED 10.0.0.x:2321 que não é visível para o cliente externo).

  • Você deve usar docker build ... e provisionar manualmente os nós usando docker commit ... para obter um instantâneo do resultado. \

  • Quando você executa o contêiner em um host físico diferente, é necessário atualizar a imagem manualmente para alterar o ip de anúncio (ao usar o DHCP, isso se torna ainda mais problemático).

Eu aprecio o docker swarm é uma possível solução para este problema em geral, mas para fins de teste (por exemplo, desenvolvimento local) não é uma solução relevante.

O simples uso de nomes de host em vez de ips permitiria que os desenvolvedores usassem apenas entradas do arquivo host em vez de atualizar manualmente a imagem do docker para cada desenvolvedor (obviamente, cada máquina de desenvolvimento tem seu próprio ip externo).

    
por Doug 31.01.2018 / 05:14

1 resposta

1

Não, ainda não há suporte - há um problema em aberto sobre o assunto: link

    
por 31.01.2018 / 06:01

Tags