目前,許多廠商推出了專用於平衡服務器負載的負載均衡器,如F5 Network公司的BIG-IP,Citrix公司的NetScaler。F5 BIG-IP LTM 的官方名稱叫作本地流量管理器,能夠作4-7層負載均衡,具備負載均衡、應用交換、會話交換、狀態監控、智能網絡地址轉換、通用持續性、響應錯誤處理、 IPv6網關、高級路由、智能端口鏡像、SSL加速、智能HTTP壓縮、TCP優化、第7層速率整形、內容緩衝、內容轉換、鏈接加速、高速緩存、 Cookie加密、選擇性內容加密、應用攻擊過濾、拒絕服務(DoS)攻擊和SYN Flood保護、防火牆—包過濾、包消毒等功能。php
如下是F5 BIG-IP用做HTTP負載均衡器的主要功能: ①、F5 BIG-IP提供12種靈活的算法將全部流量均衡的分配到各個服務器,而面對用戶,只是一臺虛擬服務器。 ②、F5 BIG-IP能夠確認應用程序可否對請求返回對應的數據。假如F5 BIG-IP後面的某一臺服務器發生服務中止、死機等故障,F5會檢查出來並將該服務器標識爲宕機,從而不將用戶的訪問請求傳送到該臺發生故障的服務器 上。這樣,只要其它的服務器正常,用戶的訪問就不會受到影響。宕機一旦修復,F5 BIG-IP就會自動查證應用已能對客戶請求做出正確響應並恢復向該服務器傳送。 ③、F5 BIG-IP具備動態Session的會話保持功能。 ④、F5 BIG-IP的iRules功能能夠作HTTP內容過濾,根據不一樣的域名、URL,將訪問請求傳送到不一樣的服務器。算法
下面,結合實例,配置F5 BIG-IP LTM v9.x:apache
點擊在新窗口中瀏覽此圖片後端
①、如圖,假設域名blog.zyan.cc被解析到F5的外網/公網虛擬IP:61.1.1.3(vs_squid),該虛擬IP下有一個服務器池 (pool_squid),該服務器池下包含兩臺真實的Squid服務器(192.168.1.11和192.168.1.12)。 ②、若是 Squid緩存未命中,則會請求F5的內網虛擬IP:192.168.1.3(vs_apache),該虛擬IP下有一個默認服務器池 (pool_apache_default),該服務器池下包含兩臺真實的Apache服務器(192.168.1.21和192.168.1.22), 當該虛擬IP匹配iRules規則時,則會訪問另一個服務器池(pool_apache_irules),該服務器池下一樣包含兩臺真實的Apache 服務器(192.168.1.23和192.168.1.24)。 ③、另外,全部真實服務器的默認網關指向F5的自身內網IP,即192.168.1.2。 ④、全部的真實服務器經過SNAT IP地址61.1.1.4訪問互聯網。瀏覽器
詳細配置步驟:緩存
1、登陸到F5 BIG-IP管理界面: 一、初次使用: ①、打開F5 BIG-IP電源,用一根網線(直連線和交叉線都可)鏈接F5 BIG-IP的3.1管理網口和筆記本電腦的網口,將筆記本電腦的IP地址配置爲「192.168.1.*」,子網掩碼配置爲「255.255.255.0」。 ②、用瀏覽器訪問F5 BIG-IP的出廠默認管理IP地址https://192.168.1.245或https://192.168.245.245 ③、輸入出廠默認用戶名:admin,密碼:admin ④、點擊Activate進入F5 BIG-IP License申請與激活頁面,激活License。 ⑤、修改默認管理密碼。安全
二、之後登陸: 經過F5 BIG-IP的自身外網IP登陸。 ①、假設設置的F5自身外網IP爲61.1.1.2,就能夠經過https://61.1.1.2/登陸。 ②、還能夠經過SSH登陸,用戶名爲root,密碼跟Web管理的密碼相同。服務器
2、建立兩個VLAN:internal和external,分別表示內網和外網。 ★建立VLAN演示頁面:http://blog.zyan.cc/book/f5/vlan_create.htm ★VLAN列表演示頁面:http://blog.zyan.cc/book/f5/vlan_list.htm網絡
一、建立VLAN:internal(內網) 在「Network→VLANs」頁面點擊「create」按鈕: ①、Name欄填寫:internal(填一個英文名稱) ②、Tag欄填寫:4093(填一個數字) ③、Interfaces欄:將Available列的「1.1」拉到Untagged列。1.1表示F5 BIG-IP的第一塊網卡。架構
二、建立VLAN:external(外網) 在「Network→VLANs」頁面點擊「create」按鈕建立VLAN: ①、Name欄填寫:internal(填一個英文名稱) ②、Tag欄填寫:4094(填一個數字) ③、Interfaces欄:將Available列的「1.2」拉到Untagged列。1.2表示F5 BIG-IP的第二塊網卡。
3、建立F5 BIG-IP的自身IP:分別對應internal(內網)和external(外網)。 ★建立自身IP演示頁面:http://blog.zyan.cc/book/f5/selfip_create.htm
一、建立自身內網IP:192.168.1.2 在「Network→Self IPs」頁面點擊「create」按鈕: ①、IP Address欄填寫:192.168.1.2(填內網IP地址) ②、Netmask欄填寫:255.255.255.0(填內網子網掩碼) ③、VLAN欄選擇:internal ④、Port Lockdown欄選擇:Allow Default(默認值)
二、建立自身外網IP:61.1.1.2 在「Network→Self IPs」頁面點擊「create」按鈕: ①、IP Address欄填寫:61.1.1.2(填外網IP地址) ②、Netmask欄填寫:255.255.255.0(填外網子網掩碼) ③、VLAN欄選擇:external ④、Port Lockdown欄選擇:Allow Default(默認值)
4、建立默認網關路由 ★建立默認網關路由演示頁面:http://blog.zyan.cc/book/f5/routes_create.htm
一、建立默認網關路由 在「Network→Routes」頁面點擊「create」按鈕: ①、Type欄選擇:Default Gateway(默認值) ②、Resource欄選擇:Use Gateeay...,在其後的輸入框填寫網關IP地址:61.1.1.1(這裏假設此IP爲外網網關地址)
5、建立服務器自定義健康檢查 ★建立服務器自定義健康檢查演示頁面:http://blog.zyan.cc/book/f5/monitors_create.htm
一、建立自定義HTTP健康檢查:monitor_http 在「Local Traffic→Monitors」頁面點擊「create」按鈕: ①、Name欄填寫:monitor_http(填一個英文名稱) ②、Type欄選擇:HTTP ③、Import Settings欄選擇:HTTP ④、Interval欄填寫:5(表示每5秒鐘進行一次健康檢查) ⑤、Timeout欄填寫:16(表示健康檢查的鏈接超時時間爲16秒) ⑥、Send String欄填寫:GET /(也能夠根據本身的需求發送其餘方法的請求,例如HEAD /或者GET /index.htm) ⑦、Receive String欄填寫:(填寫對應的返回字符串,默認不填寫)
6、建立服務器池(pool) ★建立服務器池演示頁面:http://blog.zyan.cc/book/f5/pools_create.htm
一、建立Squid服務器池:pool_squid 在「Local Traffic→Pools」頁面點擊「create」按鈕: ①、Name欄填寫:pool_squid(填一個英文名稱) ②、Health Monitors欄:將第四步建立的自定義HTTP健康檢查「monitor_http」由Available列拉到Active列 ③、Load Balancing Method欄選擇:Round Robin(這裏選擇的負載均衡方式是輪詢,也能夠選擇其餘方式) ④、New Members欄:先選擇New Address,再添加兩臺Squid服務器的IP地址192.168.1.十一、192.168.1.12以及它們的端口80
二、建立第一組Apache服務器池:pool_apache_default 在「Local Traffic→Pools」頁面點擊「create」按鈕: ①、Name欄填寫:pool_apache_default(填一個英文名稱) ②、Health Monitors欄:將第四步建立的自定義HTTP健康檢查「monitor_http」由Available列拉到Active列 ③、Load Balancing Method欄選擇:Round Robin(這裏選擇的負載均衡方式是輪詢,也能夠選擇其餘方式) ④、New Members欄:先選擇New Address,再添加第一組兩臺Apache服務器的IP地址192.168.1.2一、192.168.1.22以及它們的端口80
三、建立第二組Apache服務器池:pool_apache_irules 在「Local Traffic→Pools」頁面點擊「create」按鈕: ①、Name欄填寫:pool_apache_irules(填一個英文名稱) ②、Health Monitors欄:將第四步建立的自定義HTTP健康檢查「monitor_http」由Available列拉到Active列 ③、Load Balancing Method欄選擇:Round Robin(這裏選擇的負載均衡方式是輪詢,也能夠選擇其餘方式) ④、New Members欄:先選擇New Address,再添加第二組兩臺Apache服務器的IP地址192.168.1.2三、192.168.1.24以及它們的端口80
7、建立供七層負載均衡使用的Profiles配置 ★建立Profiles演示頁面:http://blog.zyan.cc/book/f5/profiles_create.htm
一、建立Profiles配置:profile_http 在「Local Traffic→Profiles」頁面點擊「create」按鈕: ①、Name欄填寫:profile_http(填一個英文名稱) ②、Parent Profile欄選擇:HTTP ③、Insert XForwarded For欄:若是須要,能夠選中方框,選擇Enable(在Header頭中插入x-forwarded-for標記,以便作七層負載均衡時可以獲取用戶真 實IP,本文中Squid服務器開啓了follow_x_forwarded_for allow all,所以F5無需設置此項)
注:在此設置頁面中,還有壓縮等優化功能,能夠根據須要進行設置。
8、建立iRules規則 ★建立iRules規則演示頁面:http://blog.zyan.cc/book/f5/irules_create.htm
一、建立iRules規則:irules_apache 在「Local Traffic→Profiles」頁面點擊「create」按鈕: ①、Name欄填寫:irules_apache(填一個英文名稱) ②、Definition欄填寫如下腳本,將訪問的域名爲「blog.zyan.cc」,訪問的網址以「.htm」結尾,或者以「/read.php」開頭的請求所有轉到服務器池「pool_apache_irules」: view plainprint? when HTTP_REQUEST {
if {[HTTP::host] equals "blog.zyan.cc" and [HTTP::uri] ends_with ".htm"} {
pool pool_apache_irules
}
elseif {[HTTP::host] equals "blog.zyan.cc" and [HTTP::uri] starts_with "/read.php"} {
pool pool_apache_irules
}
}
9、建立虛擬服務器(Virtual Servers) ★建立虛擬服務器演示頁面:http://blog.zyan.cc/book/f5/vs_create.htm
一、以「四層」負載均衡模式建立Squid虛擬服務器:vs_squid 在「Local Traffic→Virtual Servers」頁面點擊「create」按鈕: ⑴、General Properties大類下: ①、Name欄填寫:vs_squid(填一個英文名稱) ②、Destination欄:選擇Host,填寫Squid服務器的外網虛擬IP(Virtual IP,簡稱VIP):61.1.1.3 ③、Service Port欄填寫:80
⑵、Configuration大類下: ①、Configuration欄選擇: Advanced(選擇高級模式,這一步很重要) ②、Type欄選擇:Performance (Layer 4) ③、SNAT Pool欄選擇:None(注意:這一步很重要,四層模式下,請確保此項選擇爲None)
⑶、Resources大類下: ①、Default Pool欄選擇:pool_squid
注意:F5的四層負載均衡由硬件芯片處理,不消耗CPU資源,可以處理更大的訪問量。在四層負載均衡模式下,真實服務器的默認網關必須指向F5的自身內網IP,即192.168.1.2
二、以「七層」負載均衡模式建立Apache虛擬服務器:vs_apache 在「Local Traffic→Virtual Servers」頁面點擊「create」按鈕: ⑴、General Properties大類下: ①、Name欄填寫:vs_apache(填一個英文名稱) ②、Destination欄:選擇Host,填寫Apache服務器的內網虛擬IP(Virtual IP,簡稱VIP):192.168.1.3 ③、Service Port欄填寫:80
⑵、Configuration大類下: Configuration欄選擇: Advanced(選擇高級模式,這一步很重要) ①、Type欄選擇:Standard(標準模式,即七層負載均衡模式) ②、HTTP Profile欄選擇:profile_http(注意:此項爲None時,不能使用iRules規則,所以必須選一個。在此選擇第六步建立的profile_http) ③、SNAT Pool欄選擇:Auto Map(注意:在本文的架構中必須選擇,緣由以下) 說明:當其中的一臺Squid服務器「192.168.1.11」緩存未命中時,會去訪問虛擬IP「192.168.1.3」。若是SNAT Pool選擇默認值None,虛擬IP「192.168.1.3」後端的Apache服務器,看到的將是Squid服務器的真實 IP「192.168.1.11」。因爲Squid和Apache服務器的IP地址屬於在同一網段,Apache服務器將無需通過F5網關 「192.168.1.2」,直接經過交換機回包給Squid服務器「192.168.1.11」,這樣虛擬IP「192.168.1.3」就會收不到回 包信息,HTTP請求沒法完成。所以,須要選擇Auto Map,進行地址轉換,讓後端Apache服務器看到的是F5的自身內網IP,回包給F5。
⑶、Resources大類下: ①、iRules欄:將Available列的「irules_apache」拉到Enabled列。 ②、Default Pool欄選擇:pool_apache_default
⑷、Apache虛擬服務器──vs_apache建立完成後,如需進行修改,在如下兩個配置頁完成: ★修改虛擬服務器演示頁面1:http://blog.zyan.cc/book/f5/vs_properties.htm ★修改虛擬服務器演示頁面2:http://blog.zyan.cc/book/f5/vs_resources.htm
10、建立SNAT安全網絡地址轉換,讓真實服務器可以訪問互聯網、對外發郵件 ★建立SNAT演示頁面:http://blog.zyan.cc/book/f5/snat_create.htm
一、建立SNAT:snat_all_server 在「Local Traffic→SNATs」頁面點擊「create」按鈕: ①、Name欄填寫:snat_all_server(填一個英文名稱) ②、Translation欄選擇:IP Address,並填寫SNAT IP地址:61.1.1.4(此項也能夠選擇Automap,使用F5的自身外網IP做爲SNAT IP) ③、Origin欄選擇:Address List ④、Address List欄:①Type欄選擇host,填寫要訪問互聯網、對外發郵件的內網IP地址。②或者Type欄選擇Network,填寫要訪問互聯網、對外發郵件的網段和子網掩碼。 ⑤、VLAN Traffic欄選擇:Enabled on... ⑥、VLAN List欄:將Available列的「internal」拉到Selected列。
注意:真實服務器的默認網關須要指向F5的自身內網IP,即192.168.1.2,才能經過SNAT訪問互聯網、對外發郵件。
附1: 《F5 BIG-IP LTM 配置手冊(中文簡化版)》
《F5 BIG-IP LTM 配置手冊(英文詳細版)》