Nginx
是否推薦負載平衡或 HA 設置?
我有一個在網路伺服器(ws1)上執行並連接到應用伺服器(as1)的應用程序。我在另一個 webserver(ws2) 和另一個 appserver(as2) 上執行相同的應用程序。但我只有一個反向代理伺服器。所以我的設置類似於
所以目前我正在這些伺服器之間進行負載平衡。我的 Nginx 配置如下所示:
http { upstream myapp1 { server ws1.example.com; server ws2.example.com; } server { listen 80; location / { proxy_pass http://myapp1; } } }
但是通過 Nginx 進行負載平衡還是進行 HA 設置更好。如果我進行 HA 設置,Web 伺服器和應用伺服器是否應該集群?
對伺服器進行負載平衡非常好,但是如果提供負載平衡的伺服器發生故障,則其他兩台伺服器都無法訪問。
解決此問題的一種方法是設置 HA 安排,以便如果負載平衡器退出,另一台伺服器將立即取代它。
要提供 HA,您可以使用keepalived之類的服務,該服務使用 VRRP 協議提供高可用性 Internet 地址。事實上,它工作得很好。類似於以下的配置將起作用。
假設您希望服務在 10.10.10.100 可見
創建 2 台機器,其中一台 IP 為 10.10.10.101,另一台 IP 為 10.10.10.102 在兩台機器上安裝 keepalived 服務。記得設置:net.ipv4.ip_nonlocal_bind = 1 在兩台機器的 sysctl.conf 中。
按照描述使用 nginx 配置進行設置。
第一個節點keepalived.conf:
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass secretpass } virtual_ipaddress { 10.10.10.100 } }
第二個節點:
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass secretpass } virtual_ipaddress { 10.10.10.100 } }
現在會發生的是,當master機器執行時,它將提供虛擬ip 10.10.10.100 如果你停止這台機器,另一台將接管IP。