F5 BIG-IP負載平衡器配置執行個體與Web管理介面體驗[原創] 大 | 中 | 小 [ 2008-5-22 23:33 | by 張宴 ] [文章作者:張宴 本文版本:v1.0 最後修改:2008.05.22 轉載請註明出自:http://blog.s135.com/f5_big_ip]
前言:最近一直在對比測試F5 BIG-IP和Citrix NetScaler負載平衡器的各項效能,於是寫下此篇文章,記錄F5 BIG-IP的常見應用配置方法。
目前,許多廠商推出了專用於平衡伺服器負載的負載平衡器,如F5 Network公司的BIG-IP,Citrix公司的NetScaler。F5 BIG-IP LTM 的官方名稱叫做本地流量管理員,可以做4-7層負載平衡,具有負載平衡、應用交換、會話交換、狀態監控、智能網路位址轉譯、通用持久性、響應錯誤處理、IPv6網關、進階路由、智能連接埠鏡像、SSL加速、智能HTTP壓縮、TCP最佳化、第7層速率整形、內容緩衝、內容轉換、串連加速、快取、Cookie加密、選擇性內容加密、應用攻擊過濾、拒絕服務(DoS)攻擊和SYN Flood保護、防火牆—包過濾、包消毒等功能。
以下是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:
①、,假設網域名稱blog.s135.com被解析到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訪問互連網。
詳細配置步驟:
一、登入到F5 BIG-IP管理介面:
1、初次使用:
①、開啟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。
⑤、修改預設管理密碼。
2、以後登入:
通過F5 BIG-IP的自身外網IP登入。
①、假設設定的F5自身外網IP為61.1.1.2,就可以通過https://61.1.1.2/登入。
②、還可以通過SSH登入,使用者名稱為root,密碼跟Web管理的密碼相同。
二、建立兩個VLAN:internal和external,分別表示內網和外網。
★建立VLAN示範頁面:http://blog.s135.com/book/f5/vlan_create.htm
★VLAN列表示範頁面:http://blog.s135.com/book/f5/vlan_list.htm
1、建立VLAN:internal(內網)
在“Network→VLANs”頁面點擊“create”按鈕:
①、Name欄填寫:internal(填一個英文名稱)
②、Tag欄填寫:4093(填一個數字)
③、Interfaces欄:將Available列的“1.1”拉到Untagged列。1.1表示F5 BIG-IP的第一塊網卡。
2、建立VLAN:external(外網)
在“Network→VLANs”頁面點擊“create”按鈕建立VLAN:
①、Name欄填寫:internal(填一個英文名稱)
②、Tag欄填寫:4094(填一個數字)
③、Interfaces欄:將Available列的“1.2”拉到Untagged列。1.2表示F5 BIG-IP的第二塊網卡。
三、建立F5 BIG-IP的自身IP:分別對應internal(內網)和external(外網)。
★建立自身IP示範頁面:http://blog.s135.com/book/f5/selfip_create.htm
1、建立自身內網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(預設值)
2、建立自身外網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(預設值)
四、建立預設閘道路由
★建立預設閘道路由示範頁面:http://blog.s135.com/book/f5/routes_create.htm
1、建立預設閘道路由
在“Network→Routes”頁面點擊“create”按鈕:
①、Type欄選擇:Default Gateway(預設值)
②、Resource欄選擇:Use Gateeay...,在其後的輸入框填寫網關IP地址:61.1.1.1(這裡假設此IP為外網網關地址)
五、建立伺服器自訂健全狀態檢查
★建立伺服器自訂健全狀態檢查示範頁面:http://blog.s135.com/book/f5/monitors_create.htm
1、建立自訂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欄填寫:(填寫對應的返回字串,預設不填寫)
六、建立伺服器集區(pool)
★建立伺服器集區示範頁面:http://blog.s135.com/book/f5/pools_create.htm
1、建立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.11、192.168.1.12以及它們的連接埠80
2、建立第一組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.21、192.168.1.22以及它們的連接埠80
3、建立第二組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.23、192.168.1.24以及它們的連接埠80
七、建立供七層負載平衡使用的Profiles配置
★建立Profiles示範頁面:http://blog.s135.com/book/f5/profiles_create.htm
1、建立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無需設定此項)
註:在此設定頁面中,還有壓縮等最佳化功能,可以根據需要進行設定。
八、建立iRules規則
★建立iRules規則示範頁面:http://blog.s135.com/book/f5/irules_create.htm
1、建立iRules規則:irules_apache
在“Local Traffic→Profiles”頁面點擊“create”按鈕:
①、Name欄填寫:irules_apache(填一個英文名稱)
②、Definition欄填寫以下指令碼,將訪問的網域名稱為“blog.s135.com”,訪問的網址以“.htm”結尾,或者以“/read.php”開頭的請求全部轉到伺服器集區“pool_apache_irules”:view plainprint?
- when HTTP_REQUEST {
- if {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] ends_with ".htm"} {
- pool pool_apache_irules
- }
- elseif {[HTTP::host] equals "blog.s135.com" and [HTTP::uri] starts_with "/read.php"} {
- pool pool_apache_irules
- }
- }
九、建立虛擬伺服器(Virtual Servers)
★建立虛擬伺服器示範頁面:http://blog.s135.com/book/f5/vs_create.htm
1、以“四層”負載平衡模式建立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
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.s135.com/book/f5/vs_properties.htm
★修改虛擬伺服器示範頁面2:http://blog.s135.com/book/f5/vs_resources.htm
十、建立SNAT安全網路位址轉譯,讓真實伺服器能夠訪問互連網、對外發郵件
★建立SNAT示範頁面:http://blog.s135.com/book/f5/snat_create.htm
1、建立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 配置手冊(英文詳細版)》
附2:
使用F5 BIG-IP作為負載平衡器的部分國內網站: