HostOS에서 가상 머신에 대한 역방향 프록시 설정

HostOS에서 가상 머신에 대한 역방향 프록시 설정

저는 현재 가상화 호스트(우분투의 kvm)와 7개의 VM으로 구성된 서버를 설치하고 있습니다. 일부는 MySQL과 LDAP를 실행하고 다른 일부는 다른 웹 서버와 웹 응용 프로그램을 실행합니다. 데이터베이스를 실행하는 VM은 동일한 물리적 서버에 있는 다른 VM에서만 쿼리됩니다. 웹서버 VM은 10~20개의 웹사이트와 웹앱을 실행합니다. 서버는 인터넷에 직접 연결된 데이터 센터에 배치됩니다.

내 생각은 호스트와 VM 사이의 NAT 네트워킹(내부적으로 LAN 형성)을 사용하고 HostOS에 공용 IP 주소를 할당하는 것이었습니다. HostOS는 방화벽(iptables 포함)을 실행하고 네트워크 트래픽을 VM에 배포합니다. VM은 처음에는 외부로부터 완전히 보호되므로 이 체계에서는 VM 중 하나에 모든 기능을 갖춘 방화벽을 설치할 필요가 없습니다. 또한 공용 IP 주소는 1개만 있으면 됩니다. IP 주소를 추가하려면 추가 비용을 지불해야 하며 5개 이상은 가질 수 없습니다.

나는 HostOS에서 역방향 프록시를 사용하여 요청된 호스트 이름을 기반으로 VM 간에 트래픽을 배포할 수 있다고 생각했습니다.

내 질문은 두 가지입니다.

  • 이것이 호스트 OS와 VM을 설정하는 건전한 방법입니까? 아니면 역방향 프록시로 인해 서버 속도가 너무 느려지나요? 대신 브리지 네트워킹(대부분의 소스에서 권장)을 사용하고 모든 VM이 외부에 직접 노출된다는 점을 인정하고 그에 따라 조치를 취해야 합니까?
  • HostOS에서 실행하기에 좋은 역방향 프록시는 무엇입니까? HAproxy에 대한 좋은 이야기를 들었습니다. 이전에 (완전히 다른 시나리오에서) mod_proxy를 설정했지만 대부분의 사람들이 HAproxy를 선호한다고 들었습니다. 아니면 호스트 OS 속도를 너무 늦추지 않기 위해 최소한의 설치 공간을 차지하는 초경량 리버스 프록시가 필요합니까?

답변1

나는 Proxmox에서 정확히 이런 종류의 아키텍처를 사용하고 있습니다. 가상 머신에 대한 공용 IP 수가 충분하지 않기 때문에 브리지 네트워킹에는 옵션이 없습니다. 저는 nginx를 프록시 가상 머신으로 사용하고 있습니다. 호스트에서 직접 구성할 수 있지만 가상 머신을 사용하는 것도 나쁜 생각은 아닙니다(호스트 구성을 최대한 단순하게 유지하려고 노력하세요).

답변2

브리지 네트워킹을 사용하는 유일한 방법은 인터넷에 연결해야 하는 모든 VM에 대해 IP를 확보하는 것입니다. 이는 모든 VM을 자체적으로 보호해야 함을 의미하므로 호스트 시스템에서 하나의 방화벽만 사용하는 것이 작업을 덜 수 있습니다. libvirt(https://jamielinux.com/docs/libvirt-networking-handbook/nat-based-network.html). 내 경험상(nginx 사용 시) 이 솔루션에서는 눈에 띄는 속도 저하가 없었습니다. 나는 HAproxy가 더 빠를 수 있다고 생각합니다.

관련 정보