Como configurar IPs de failover para alta disponibilidade com o Hetzner Online

1

Eu tenho um cluster de três nós do Ubuntu em execução em VMs no laboratório e quero levá-lo agora para a produção. Hetzner Online A hetzner.de oferece alguns servidores dedicados de bom valor, por isso aluguei três máquinas, conectadas a um comutador gigabit.

Minha intenção é criar um HA-Setup com dois keepalived na frente de 2 servidores HAProxy. O Keepalived é configurado com um VIP dentro da minha configuração. Infelizmente isso não funciona com Hetzner. No entanto, eles fornecem um sistema chamado IP de failover, onde um pode alternar com a ajuda de um script para o outro servidor: link

Minha configuração para keepalived se parece com isso:

vrrp_script chk_haproxy {
        script "killall -0 haproxy"     # cheaper than pidof
        interval 2                      # check every 2 seconds
        weight 2                        # add 2 points of prio if OK
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    virtual_ipaddress {
        192.168.56.101/24 # this is the shared IP I was using
      }
    track_script {
        chk_haproxy
    }
}

Então, como o script de failover se encaixaria nisso?

Parece que eu não sou o único com o problema, apenas a solução não é tão óbvia. link

    
por merlin 08.09.2015 / 12:32

1 resposta

1

Como esta é uma resposta antiga, não tenho certeza se você ainda está procurando uma resposta. Mas eu me deparei com isso procurando a melhor maneira de como fazer isso.

A maneira como o Hetzner atribui um IP de failover a um servidor dedicado não é permitir que ele seja configurado no servidor, mas rotear o tráfego para o IP do servidor original. Portanto, é possível não alterar nada em seu servidor e alternar manualmente o IP em sua interface administrativa. Contudo; Esta não é uma solução adequada para a maioria como eu não gostaria de sair da cama para manualmente failover. Isso deve ser feito automaticamente e, em seguida, notificar o administrador de que o failover foi feito. Talvez até mesmo com um pequeno relatório que emite o sistema e por que ele falhou.

O Keepalived pode fazer isso por você, a única coisa necessária é configurar o keepalived para executar o script durante o failover. Mas se não houver IP para failover, como podemos, então, fazer o failover?

Simples; crie uma rede interna entre os servidores e atribua seu próprio IP interno não roteado para ser mantido. Como essa rede interna usa a mesma interface da rede externa, isso não importa realmente. Um benefício dessa abordagem é que você pode manter todo o tráfego interno 100% interno usando esse VIP interno.

Uma vez que o Keepalived falha você ordena que ele execute o script do Hetzner para também trocar o ip externo usando: notificar

Um exemplo:

vrrp_script chk_haproxy {
        script "killall -0 haproxy"     # cheaper than pidof
        interval 2                      # check every 2 seconds
        weight 2                        # add 2 points of prio if OK
}

vrrp_instance VI_1 {
    state MASTER
    interface enp0s31f6.4000
    virtual_router_id 51
    priority 101
    virtual_ipaddress {
        192.168.100.3/24 # this is the shared IP I was using
      }
    track_script {
        chk_haproxy
    }
    notify /usr/sbin/hetzner_failoverIP.sh database set $THIS_SERVER_IP
}

É claro que o script Hetzner pode ser ajustado para ser muito mais inteligente, selecionando o IP do servidor por si só, por exemplo.

A desvantagem que deve ser notada é que o IP externo levará entre 40 e 60 segundos. Para mim, um mínimo de 40 segundos e um máximo de 1 minuto é muito longo.

Outra opção é usar as instâncias de nuvem do Hetzner para ativar o HA sem o uso do IP de failover e do script acima. Na nuvem, há outra solução: IP flutuante na nuvem .

Esta opção irá custar cerca de € 8,50 por mês por:

  • duas instâncias de nuvem (1 cpu básica, 2 GB de memória e 20 TB de tráfego cada)
  • dois IP flutuantes na nuvem

Em seguida, use o keepalived para gerenciar o IP flutuante da nuvem (seção virtual_ipaddress) e o HAProxy para enviar todo o tráfego para os servidores dedicados. O HAProxy fará então as verificações de integridade e você não precisa se preocupar com:

  • Comutação de IP usando a API do Hetzner
  • 40 a 60 segundos de tempo de inatividade adicional

Vale a pena mencionar que os servidores em nuvem da Hetzner não suportam uma rede interna. Mas não é necessário se você usá-los desta forma e não lhe custará extra, já que o tráfego interno é gratuito. Por segurança, proteja os balanceadores de carga (instâncias de nuvens Keepalived + HAProxy) com o SELinux / AppArmor e o Firewalld. Use o tráfego criptografado entre os dois clusters (cloud < - > Dedicated) para prefentar o sniffing de pacotes. Eu também criptografaria o tráfego entre seus servidores dedicados, mesmo se você estiver usando uma VLAN privada, o tráfego ainda está sendo enviado através do mesmo NIC. Algo para ter em mente.

Fontes usadas:

  1. link
  2. link
  3. link
  4. link
  5. link
  6. link
por 23.11.2018 / 19:11