在 HostOS 上為虛擬機器設定反向代理

在 HostOS 上為虛擬機器設定反向代理

我目前正在安裝一個由虛擬化主機(ubuntu 上的 kvm)和 7 個虛擬機器組成的伺服器,其中一些運行 MySQL 和 LDAP,其他運行不同的 Web 伺服器和 Web 應用程式。執行資料庫的虛擬機器只能被同一實體伺服器上的其他虛擬機器查詢。網路伺服器虛擬機將運行 10-20 個網站和網路應用程式。伺服器將放置在資料中心,直接連接到網際網路。

我的想法是在主機和虛擬機器之間使用 NAT 網路(在內部形成 LAN),並為 HostOS 分配公共 IP 位址。 HostOS 將運行防火牆(使用 iptables)並將網路流量分發到虛擬機器。虛擬機器最初將與外部完全隔離,因此在此方案中不需要在任何虛擬機器上安裝全功能防火牆。另外,我只需要 1 個公用 IP 位址。我必須為額外的 IP 位址支付額外費用,而且我的 IP 位址不能超過 5 個。

我想我可以在 HostOS 上使用反向代理,根據要求的主機名稱在虛擬機器之間分配流量。

我的問題有兩個:

  • 這是設定主機作業系統和虛擬機器的好方法嗎?或者反向代理會降低伺服器的速度嗎?我是否應該只使用橋接網路(大多數來源推薦),接受我的所有虛擬機直接暴露於外部並相應地對其採取措施?
  • 在主機作業系統上運行的良好反向代理是什麼?我聽過 HAproxy 的好故事。我之前已經設定過 mod_proxy (儘管是在完全不同的場景中),但我聽說大多數人更喜歡 HAproxy。或者我需要一些佔用空間最少的超輕量級反向代理,以免過多減慢主機作業系統的速度?

答案1

我正在 Proxmox 中使用這種架構。橋接網路不是一個選項,因為我沒有足夠數量的公共 IP 用於虛擬機器。我使用 nginx 作為代理虛擬機,您可以直接在主機上配置它,但使用虛擬機也不是一個壞主意(嘗試使主機配置盡可能簡單)。

答案2

使用橋接網路的唯一方法是為每個應連接到網際網路的虛擬機器分配一個 IP。由於這意味著您必須單獨保護每個虛擬機,因此在主機系統上僅使用一個防火牆可能會減少工作。如果您使用 libvirt (https://jamielinux.com/docs/libvirt-networking-handbook/nat-based-network.html)。根據我的經驗(使用 nginx),這個解決方案沒有明顯的減慢速度。我認為 HAproxy 可能會更快。

相關內容