Não, ainda não há suporte - há um problema em aberto sobre o assunto: link
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).
Não, ainda não há suporte - há um problema em aberto sobre o assunto: link
Tags redis