您好,登錄后才能下訂單哦!
pfSense book中Web服務器負載平衡配置的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在pfsense的網關和服務器中有兩種類型的負載平衡功能。網關負載平衡可以通過多個WAN連接分發Internet綁定的流量。服務器負載平衡管理傳入流量,因此它利用多個內部服務器進行負載分配和冗余,服務器負載平衡允許流量在多個內部服務器之間分配,它最常用于Web服務器和SMTP服務器。下面我們就以實例來介紹服務器負載平衡的設置。
下面介紹如何通過pfsense2.32配置Web服務器的負載平衡。
上圖為示例網絡環境。它由單個防火墻組成,使用其WAN IP地址池,DMZ段上有兩個Web服務器。
導航到 Services > Load Balancer
單擊Pools 標簽
單擊 添加一個新的地址池
如圖所示,使用以下設置:
Name: | WebServers |
---|---|
Mode: | Load Balance |
Description: | Web server Pool |
Port: | 80 |
Retry: | 5 |
Pool Members: | 添加兩個Web服務器 (10.6.0.11 和10.6.0.12) |
單擊Save
地址池配置
虛擬服務器配置
單擊Virtual Servers標簽
單擊 添加一個新的虛擬服務器
如圖所示,使用以下設置:
Name: | WebVirtualServer |
---|---|
Description: | Web Server |
IP Address: | The firewall’s WAN IP address, 198.51.100.6 |
Port: | 80 |
Virtual Server Pool: | |
WebServers | |
Fall Back Pool: | None |
單擊 Submit(提交)
單擊 Apply Changes(應用更改)
注意:在這個示例中,如果兩個池服務器都關閉,則虛擬服務器無法訪問。 如果沒有配置虛擬服務器,防火墻將會起作用。 如果防火墻上的某些應用綁定到80端口,那么客戶端就會直達綁定了這個端口的應用。 這可能包括通過端口80訪問內置Web GUI,因此應該在System > Advanced > Admin Access 選項卡上禁用或采用其他端口。
防火墻規則必須配置為允許訪問池中的服務器。 規則必須允許流量使用內部IP地址和端口,并且對虛擬服務器配置中使用的外部IP地址和端口不需要任何規則限制。
創建一個包含池中所有服務器的別名,因此可以使用單個防火墻規則進行訪問。
導航到Firewall > Aliases
單擊 添加 一個別名
如圖所示,使用以下設置:
Name: | www_servers |
---|---|
Type: | Hosts |
Hosts: | 兩個Web服務器IP地址: 10.6.0.11 和 10.6.0.12 |
單擊 Save
單擊 Apply Changes(應用更改)
圖中的“Name”顯示了用于此示例配置的別名,其中包含兩個Web服務器。
Web 服務器別名設置
下一步,用這個別名創建一個防火墻規則: 導航到Firewall > Rules ,切換到外部連接訪問的接口(例如WAN), 單擊 在頂部添加一條新規則,設置如下:
Interface: WAN Protocol: TCP Source: any Destination Type: Single Host or Alias Destination Address: www_servers Destination Port Range: HTTP Description: Allow to Web Server
單擊 Save
單擊 Apply Changes(應用更改)
下圖為Web服務器設置的防火墻規則,未顯示的選項保留默認值。
為Web服務器添加防火墻規則
列表中顯示的規則。
Web 服務器防火墻規則
現在已經配置了負載平衡器,要查看其狀態,請瀏覽到Status > Load Balancer,然后單擊“Virtual Servers”選項卡。此頁面顯示整個服務器的狀態,通常列為“Active(聯機)”或“Down(脫機)”。
Pools選項卡顯示池的每個成員的單獨狀態(如下圖所示)。如果服務器處于聯機狀態,服務器的行為綠色,如果服務器處于脫機狀態,則為紅色。
此外,池中的每個服務器都有一個復選框。 已檢查的服務器在池中處于活動狀態,池中已禁用未選中的服務器,與在池編輯頁面上啟用和禁用列表之間移動的服務器相同。 要禁用服務器:取消選中它,然后單擊保存。
如果在其中一個服務器上停止了Web服務器服務,或者如果使用ICMP監視器將服務器完全從網絡中刪除,則狀態將更新為“脫機”,并將服務器從池中刪除。
為了驗證負載平衡, curl 是確保Web瀏覽器緩存和持久連接不影響測試結果的最佳選擇。curl 可以從 curl 官方網站下載,有各種操作系統的版本。 要使用它,只需運行以下命令:
curl http://mysite
在該命令中,將198.51.100.6替換為站點的IP地址或主機名。 這必須從網絡外部進行測試(例如,從WAN上的遠程網絡或客戶端)。 例如,在外網用curl進行測試:
# curl http://198.51.100.6 This is server www2 - 10.6.0.12 # curl http://198.51.100.6 This is server www1 - 10.6.0.11
測試負載平衡時,設置每個服務器返回指定其主機名、IP地址或兩者,因此明確哪個服務器響應該請求。 如果未啟用粘性連接,則不同的服務器將響應每個請求。
不能連接到負載平衡
不能連接到負載平衡器通常是使用測試方法不當造成的,這通常是HTTP特有的。 Web瀏覽器通常會保持與Web服務器建立的連接,并且點擊刷新會重新使用現有的連接。 單個連接將永遠不會更改為另一個平衡服務器。 另一個常見的問題是網絡瀏覽器緩存,瀏覽器只從緩存讀取數據,未真正再次刷新頁面。 最好使用諸如curl等命令行工具來測試,因為它確保測試不受Web瀏覽器測試中固有問題的影響。curl沒有緩存,并在每次運行時都會重新建立與服務器的新連接。
如果啟用了粘性連接,請確保從多個源IP地址執行測試。來自單個源IP地址的測試將轉到單個服務器,除非連接嘗試之間經過了較長的時間。
如果服務器關閉但沒有標記為脫機,那是因為負載平衡守護程序執行的監視信號仍然處于啟動狀態。 如果使用TCP監視器,TCP端口必須仍然接受連接。 該端口上的服務可以以多種方式斷開,仍然可以回復TCP連接。 對于ICMP監視器,這個問題更加嚴重,因為服務器可以掛起或故障,沒有任何監聽服務,仍然可以回答ping。
如果服務器在線,但沒有標記為在線,那是因為從負載平衡守護程序監視器的角度來看,它不是聯機的。 服務器必須在所使用的TCP端口上回答或響應來自最靠近服務器的防火墻接口IP地址的ping。
例如,如果服務器在LAN上,則服務器必須應答從防火墻的LAN IP地址發起的請求。 要驗證ICMP監視器,請導航到到Diagnostics > Ping,并使用服務器所在的接口Ping服務器IP地址。
對于TCP監視器,請使用“Diagnostics > Test Port”,并選擇防火墻的LAN接口作為源,將Web服務器的IP地址和端口作為目標。
另一種測試方法是使用防火墻的shell提示符,使用console或ssh菜單選項8和nc命令:
# nc -vz 10.6.0.12 80nc: connect to 10.6.0.12 port 80 (tcp) failed: Operation timed out
上面是一個失敗的例子。
下面是一個成功連接的例子:
# nc -vz 10.6.0.12 80 Connection to 10.6.0.12 80 port [tcp/http] succeeded!
如果連接失敗,請在Web服務器上進一步進行故障排除。
與池服務器在同一子網中的客戶端系統將無法使用此負載平衡方法正確連接。 relayd將連接轉發到具有客戶端源地址的Web服務器。然后,服務器將嘗試直接響應客戶端。如果服務器具有到客戶端的直接路徑,例如通過同一子網中的本地連接的NIC,它將不會正常通過防火墻回流,客戶端將從服務器的本地IP地址收到回復,而不會在relayd中收到該IP地址。然后,由于從客戶端的角度看,服務器IP地址不正確,連接被丟棄為無效。
這樣做的一個方法是使用手動出站NAT和制定手動出站NAT規則,以便從LAN子網到達Web服務器的內部接口(LAN)的流量轉換為LAN的接口地址。這樣,流量似乎源于防火墻,服務器將響應到防火墻,然后防火墻將該流量中繼到客戶端使用的預期地址。原始的客戶端源IP地址在該過程中丟失,最佳的解決方案是將服務器移動到不同的網段。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。