Configurando proxy reverso para máquinas virtuais no HostOS

Configurando proxy reverso para máquinas virtuais no HostOS

Atualmente estou instalando um servidor que consiste em um Host de Virtualização (kvm no ubuntu) e 7 VMs, algumas rodando MySQL e LDAP, outras rodando diferentes servidores web e aplicações web. As VMs que executam os bancos de dados seriam consultadas apenas pelas outras VMs no mesmo servidor físico. As VMs do servidor web executarão algo em torno de 10 a 20 sites e aplicativos web. O servidor será colocado em um datacenter, conectado diretamente à internet.

Minha ideia era usar rede NAT entre Host e VM's (formando uma LAN internamente) e atribuir ao HostOS o endereço IP público. O HostOS irá executar o firewall (com iptables) e distribuir o tráfego de rede para as VMs. As VMs seriam inicialmente completamente protegidas do exterior e, portanto, não haveria necessidade neste esquema de ter um firewall completo em qualquer uma das VMs. Além disso, eu precisaria apenas de 1 endereço IP público. Tenho que pagar a mais por endereços IP adicionais e não posso ter mais do que 5.

Achei que poderia usar um proxy reverso no HostOS para distribuir o tráfego entre as VMs com base nos nomes de host solicitados.

Minha pergunta é dupla:

  • Esta é uma boa maneira de configurar o hostOS e as VMs? Ou um proxy reverso deixará o servidor muito lento? Em vez disso, devo apenas usar a rede bridge (recomendada pela maioria das fontes), aceitar que todas as minhas VMs estejam diretamente expostas ao exterior e tomar medidas adequadas?
  • Qual seria um bom proxy reverso para rodar no hostOS. Eu ouço boas histórias sobre o HAproxy. Eu configurei o mod_proxy antes (em um cenário completamente diferente), mas ouvi dizer que a maioria das pessoas prefere o HAproxy. Ou preciso de algum proxy reverso ultraleve que ocupe menos espaço para não desacelerar muito o hostOS?

Responder1

Estou usando exatamente esse tipo de arquitetura com Proxmox. A rede Bridge não é uma opção, pois não tenho um número suficiente de IP público para as máquinas virtuais. Estou usando o nginx como máquinas virtuais proxy, você pode configurá-lo diretamente no Host, mas usar uma máquina virtual também não é uma má ideia (tente manter a configuração do Host o mais simples possível).

Responder2

A única maneira de usar a rede bridge é ter um IP para cada VM que deve estar conectada à Internet. Como isso significa que você precisa proteger cada VM por conta própria, pode ser menos trabalhoso usar apenas um firewall em seu sistema host. Também existem bons tutoriais para isso, se você usar libvirt (https://jamielinux.com/docs/libvirt-networking-handbook/nat-based-network.html). Na minha experiência (com o nginx), não houve lentidão perceptível com esta solução. Presumo que o HAproxy poderia ser ainda mais rápido.

informação relacionada