Nginx

是否推薦負載平衡或 HA 設置?

  • May 23, 2017

我有一個在網路伺服器(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。

更完整的範例:Ubuntu 14.04 上的簡單 keepalived 故障轉移設置

引用自:https://serverfault.com/questions/849421