[文章作者:張宴 本文版本:v1.0 最后修改:
2008.05.22
轉(zhuǎn)載請(qǐng)注明出自:
http://blog.s135.com/f5_big_ip
]
前言:最近一直在對(duì)比測(cè)試F5 BIG-IP和Citrix NetScaler負(fù)載均衡器的各項(xiàng)性能,于是寫下此篇文章,記錄F5 BIG-IP的常見應(yīng)用配置方法。
目前,許多廠商推出了專用于平衡服務(wù)器負(fù)載的負(fù)載均衡器,如F5 Network公司的BIG-IP,Citrix公司的NetScaler。F5 BIG-IP LTM 的官方名稱叫做本地流量管理器,可以做4-7層負(fù)載均衡,具有負(fù)載均衡、應(yīng)用交換、會(huì)話交換、狀態(tài)監(jiān)控、智能網(wǎng)絡(luò)地址轉(zhuǎn)換、通用持續(xù)性、響應(yīng)錯(cuò)誤處理、 IPv6網(wǎng)關(guān)、高級(jí)路由、智能端口鏡像、SSL加速、智能HTTP壓縮、TCP優(yōu)化、第7層速率整形、內(nèi)容緩沖、內(nèi)容轉(zhuǎn)換、連接加速、高速緩存、 Cookie加密、選擇性內(nèi)容加密、應(yīng)用攻擊過濾、拒絕服務(wù)(DoS)攻擊和SYN Flood保護(hù)、防火墻—包過濾、包消毒等功能。
以下是F5 BIG-IP用作HTTP負(fù)載均衡器的主要功能:
?、?、F5 BIG-IP提供12種靈活的算法將所有流量均衡的分配到各個(gè)服務(wù)器,而面對(duì)用戶,只是一臺(tái)虛擬服務(wù)器。
②、F5 BIG-IP可以確認(rèn)應(yīng)用程序能否對(duì)請(qǐng)求返回對(duì)應(yīng)的數(shù)據(jù)。假如F5 BIG-IP后面的某一臺(tái)服務(wù)器發(fā)生服務(wù)停止、死機(jī)等故障,F(xiàn)5會(huì)檢查出來并將該服務(wù)器標(biāo)識(shí)為宕機(jī),從而不將用戶的訪問請(qǐng)求傳送到該臺(tái)發(fā)生故障的服務(wù)器 上。這樣,只要其它的服務(wù)器正常,用戶的訪問就不會(huì)受到影響。宕機(jī)一旦修復(fù),F(xiàn)5 BIG-IP就會(huì)自動(dòng)查證應(yīng)用已能對(duì)客戶請(qǐng)求作出正確響應(yīng)并恢復(fù)向該服務(wù)器傳送。
③、F5 BIG-IP具有動(dòng)態(tài)Session的會(huì)話保持功能。
?、堋5 BIG-IP的iRules功能可以做HTTP內(nèi)容過濾,根據(jù)不同的域名、URL,將訪問請(qǐng)求傳送到不同的服務(wù)器。
下面,結(jié)合實(shí)例,配置F5 BIG-IP LTM v9.x:
①、如圖,假設(shè)域名blog.s135.com被解析到F5的外網(wǎng)/公網(wǎng)虛擬IP:61.1.1.3(vs_squid),該虛擬IP下有一個(gè)服務(wù)器池 (pool_squid),該服務(wù)器池下包含兩臺(tái)真實(shí)的Squid服務(wù)器(192.168.1.11和192.168.1.12)。
?、?、如果 Squid緩存未命中,則會(huì)請(qǐng)求F5的內(nèi)網(wǎng)虛擬IP:192.168.1.3(vs_apache),該虛擬IP下有一個(gè)默認(rèn)服務(wù)器池 (pool_apache_default),該服務(wù)器池下包含兩臺(tái)真實(shí)的Apache服務(wù)器(192.168.1.21和192.168.1.22), 當(dāng)該虛擬IP匹配iRules規(guī)則時(shí),則會(huì)訪問另外一個(gè)服務(wù)器池(pool_apache_irules),該服務(wù)器池下同樣包含兩臺(tái)真實(shí)的Apache 服務(wù)器(192.168.1.23和192.168.1.24)。
?、?、另外,所有真實(shí)服務(wù)器的默認(rèn)網(wǎng)關(guān)指向F5的自身內(nèi)網(wǎng)IP,即192.168.1.2。
?、?、所有的真實(shí)服務(wù)器通過SNAT IP地址61.1.1.4訪問互聯(lián)網(wǎng)。
詳細(xì)配置步驟:
一、登錄到F5 BIG-IP管理界面:
1、初次使用:
①、打開F5 BIG-IP電源,用一根網(wǎng)線(直連線和交叉線均可)連接F5 BIG-IP的3.1管理網(wǎng)口和筆記本電腦的網(wǎng)口,將筆記本電腦的IP地址配置為“192.168.1.*”,子網(wǎng)掩碼配置為“255.255.255.0”。
?、?、用瀏覽器訪問F5 BIG-IP的出廠默認(rèn)管理IP地址
https://192.168.1.245
或
https://192.168.245.245
③、輸入出廠默認(rèn)用戶名:admin,密碼:admin
?、堋Ⅻc(diǎn)擊Activate進(jìn)入F5 BIG-IP License申請(qǐng)與激活頁面,激活License。
?、?、修改默認(rèn)管理密碼。
2、以后登錄:
通過F5 BIG-IP的自身外網(wǎng)IP登錄。
①、假設(shè)設(shè)置的F5自身外網(wǎng)IP為61.1.1.2,就可以通過
https://61.1.1.2/
登錄。
?、?、還可以通過SSH登錄,用戶名為root,密碼跟Web管理的密碼相同。
二、創(chuàng)建兩個(gè)VLAN:internal和external,分別表示內(nèi)網(wǎng)和外網(wǎng)。
★創(chuàng)建VLAN演示頁面:
http://blog.s135.com/book/f5/vlan_create.htm
★VLAN列表演示頁面:
http://blog.s135.com/book/f5/vlan_list.htm
1、創(chuàng)建VLAN:internal(內(nèi)網(wǎng))
在“Network→VLANs”頁面點(diǎn)擊“create”按鈕:
?、?、Name欄填寫:internal(填一個(gè)英文名稱)
?、凇ag欄填寫:4093(填一個(gè)數(shù)字)
③、Interfaces欄:將Available列的“1.1”拉到Untagged列。1.1表示F5 BIG-IP的第一塊網(wǎng)卡。
2、創(chuàng)建VLAN:external(外網(wǎng))
在“Network→VLANs”頁面點(diǎn)擊“create”按鈕創(chuàng)建VLAN:
?、佟ame欄填寫:internal(填一個(gè)英文名稱)
?、?、Tag欄填寫:4094(填一個(gè)數(shù)字)
?、?、Interfaces欄:將Available列的“1.2”拉到Untagged列。1.2表示F5 BIG-IP的第二塊網(wǎng)卡。
三、創(chuàng)建F5 BIG-IP的自身IP:分別對(duì)應(yīng)internal(內(nèi)網(wǎng))和external(外網(wǎng))。
★創(chuàng)建自身IP演示頁面:
http://blog.s135.com/book/f5/selfip_create.htm
1、創(chuàng)建自身內(nèi)網(wǎng)IP:192.168.1.2
在“Network→Self IPs”頁面點(diǎn)擊“create”按鈕:
?、佟P Address欄填寫:192.168.1.2(填內(nèi)網(wǎng)IP地址)
②、Netmask欄填寫:255.255.255.0(填內(nèi)網(wǎng)子網(wǎng)掩碼)
?、邸LAN欄選擇:internal
④、Port Lockdown欄選擇:Allow Default(默認(rèn)值)
2、創(chuàng)建自身外網(wǎng)IP:61.1.1.2
在“Network→Self IPs”頁面點(diǎn)擊“create”按鈕:
?、?、IP Address欄填寫:61.1.1.2(填外網(wǎng)IP地址)
②、Netmask欄填寫:255.255.255.0(填外網(wǎng)子網(wǎng)掩碼)
?、?、VLAN欄選擇:external
?、?、Port Lockdown欄選擇:Allow Default(默認(rèn)值)
四、創(chuàng)建默認(rèn)網(wǎng)關(guān)路由
★創(chuàng)建默認(rèn)網(wǎng)關(guān)路由演示頁面:
http://blog.s135.com/book/f5/routes_create.htm
1、創(chuàng)建默認(rèn)網(wǎng)關(guān)路由
在“Network→Routes”頁面點(diǎn)擊“create”按鈕:
?、佟ype欄選擇:Default Gateway(默認(rèn)值)
?、?、Resource欄選擇:Use Gateeay...,在其后的輸入框填寫網(wǎng)關(guān)IP地址:61.1.1.1(這里假設(shè)此IP為外網(wǎng)網(wǎng)關(guān)地址)
五、創(chuàng)建服務(wù)器自定義健康檢查
★創(chuàng)建服務(wù)器自定義健康檢查演示頁面:
http://blog.s135.com/book/f5/monitors_create.htm
1、創(chuàng)建自定義HTTP健康檢查:monitor_http
在“Local Traffic→Monitors”頁面點(diǎn)擊“create”按鈕:
?、?、Name欄填寫:monitor_http(填一個(gè)英文名稱)
②、Type欄選擇:HTTP
?、?、Import Settings欄選擇:HTTP
④、Interval欄填寫:5(表示每5秒鐘進(jìn)行一次健康檢查)
?、?、Timeout欄填寫:16(表示健康檢查的連接超時(shí)時(shí)間為16秒)
?、?、Send String欄填寫:GET /(也可以根據(jù)自己的需求發(fā)送其他方法的請(qǐng)求,例如HEAD /或者GET /index.htm)
?、?、Receive String欄填寫:(填寫對(duì)應(yīng)的返回字符串,默認(rèn)不填寫)
六、創(chuàng)建服務(wù)器池(pool)
★創(chuàng)建服務(wù)器池演示頁面:
http://blog.s135.com/book/f5/pools_create.htm
1、創(chuàng)建Squid服務(wù)器池:pool_squid
在“Local Traffic→Pools”頁面點(diǎn)擊“create”按鈕:
①、Name欄填寫:pool_squid(填一個(gè)英文名稱)
②、Health Monitors欄:將第四步創(chuàng)建的自定義HTTP健康檢查“monitor_http”由Available列拉到Active列
?、邸oad Balancing Method欄選擇:Round Robin(這里選擇的負(fù)載均衡方式是輪詢,也可以選擇其他方式)
④、New Members欄:先選擇New Address,再添加兩臺(tái)Squid服務(wù)器的IP地址192.168.1.11、192.168.1.12以及它們的端口80
2、創(chuàng)建第一組Apache服務(wù)器池:pool_apache_default
在“Local Traffic→Pools”頁面點(diǎn)擊“create”按鈕:
①、Name欄填寫:pool_apache_default(填一個(gè)英文名稱)
②、Health Monitors欄:將第四步創(chuàng)建的自定義HTTP健康檢查“monitor_http”由Available列拉到Active列
?、邸oad Balancing Method欄選擇:Round Robin(這里選擇的負(fù)載均衡方式是輪詢,也可以選擇其他方式)
?、堋ew Members欄:先選擇New Address,再添加第一組兩臺(tái)Apache服務(wù)器的IP地址192.168.1.21、192.168.1.22以及它們的端口80
3、創(chuàng)建第二組Apache服務(wù)器池:pool_apache_irules
在“Local Traffic→Pools”頁面點(diǎn)擊“create”按鈕:
①、Name欄填寫:pool_apache_irules(填一個(gè)英文名稱)
②、Health Monitors欄:將第四步創(chuàng)建的自定義HTTP健康檢查“monitor_http”由Available列拉到Active列
?、邸oad Balancing Method欄選擇:Round Robin(這里選擇的負(fù)載均衡方式是輪詢,也可以選擇其他方式)
④、New Members欄:先選擇New Address,再添加第二組兩臺(tái)Apache服務(wù)器的IP地址192.168.1.23、192.168.1.24以及它們的端口80
七、創(chuàng)建供七層負(fù)載均衡使用的Profiles配置
★創(chuàng)建Profiles演示頁面:
http://blog.s135.com/book/f5/profiles_create.htm
1、創(chuàng)建Profiles配置:profile_http
在“Local Traffic→Profiles”頁面點(diǎn)擊“create”按鈕:
?、佟ame欄填寫:profile_http(填一個(gè)英文名稱)
②、Parent Profile欄選擇:HTTP
③、Insert XForwarded For欄:如果需要,可以選中方框,選擇Enable(在Header頭中插入x-forwarded-for標(biāo)記,以便做七層負(fù)載均衡時(shí)能夠獲取用戶真 實(shí)IP,本文中Squid服務(wù)器開啟了follow_x_forwarded_for allow all,因此F5無需設(shè)置此項(xiàng))
注:在此設(shè)置頁面中,還有壓縮等優(yōu)化功能,可以根據(jù)需要進(jìn)行設(shè)置。
八、創(chuàng)建iRules規(guī)則
★創(chuàng)建iRules規(guī)則演示頁面:
http://blog.s135.com/book/f5/irules_create.htm
1、創(chuàng)建iRules規(guī)則:irules_apache
在“Local Traffic→Profiles”頁面點(diǎn)擊“create”按鈕:
?、?、Name欄填寫:irules_apache(填一個(gè)英文名稱)
?、?、Definition欄填寫以下腳本,將訪問的域名為“blog.s135.com”,訪問的網(wǎng)址以“.htm”結(jié)尾,或者以“/read.php”開頭的請(qǐng)求全部轉(zhuǎn)到服務(wù)器池“pool_apache_irules”:
- 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??
- ??}??
- }??
九、創(chuàng)建虛擬服務(wù)器(Virtual Servers)
★創(chuàng)建虛擬服務(wù)器演示頁面:
http://blog.s135.com/book/f5/vs_create.htm
1、以“四層”負(fù)載均衡模式創(chuàng)建Squid虛擬服務(wù)器:vs_squid
在“Local Traffic→Virtual Servers”頁面點(diǎn)擊“create”按鈕:
?、拧eneral Properties大類下:
?、?、Name欄填寫:vs_squid(填一個(gè)英文名稱)
?、?、Destination欄:選擇Host,填寫Squid服務(wù)器的外網(wǎng)虛擬IP(Virtual IP,簡(jiǎn)稱VIP):61.1.1.3
?、邸ervice Port欄填寫:80
?、?、Configuration大類下:
?、佟onfiguration欄選擇: Advanced(選擇高級(jí)模式,這一步很重要)
?、?、Type欄選擇:Performance (Layer 4)
?、?、SNAT Pool欄選擇:None(注意:這一步很重要,四層模式下,請(qǐng)確保此項(xiàng)選擇為None)
⑶、Resources大類下:
?、?、Default Pool欄選擇:pool_squid
注意:F5的四層負(fù)載均衡由硬件芯片處理,不消耗CPU資源,能夠處理更大的訪問量。在四層負(fù)載均衡模式下,真實(shí)服務(wù)器的默認(rèn)網(wǎng)關(guān)必須指向F5的自身內(nèi)網(wǎng)IP,即192.168.1.2
2、以“七層”負(fù)載均衡模式創(chuàng)建Apache虛擬服務(wù)器:vs_apache
在“Local Traffic→Virtual Servers”頁面點(diǎn)擊“create”按鈕:
⑴、General Properties大類下:
①、Name欄填寫:vs_apache(填一個(gè)英文名稱)
?、?、Destination欄:選擇Host,填寫Apache服務(wù)器的內(nèi)網(wǎng)虛擬IP(Virtual IP,簡(jiǎn)稱VIP):192.168.1.3
③、Service Port欄填寫:80
⑵、Configuration大類下:
Configuration欄選擇: Advanced(選擇高級(jí)模式,這一步很重要)
?、?、Type欄選擇:Standard(標(biāo)準(zhǔn)模式,即七層負(fù)載均衡模式)
?、?、HTTP Profile欄選擇:profile_http(注意:此項(xiàng)為None時(shí),不能使用iRules規(guī)則,因此必須選一個(gè)。在此選擇第六步創(chuàng)建的profile_http)
?、?、SNAT Pool欄選擇:Auto Map(注意:在本文的架構(gòu)中必須選擇,原因如下)
說明:當(dāng)其中的一臺(tái)Squid服務(wù)器“192.168.1.11”緩存未命中時(shí),會(huì)去訪問虛擬IP“192.168.1.3”。如果SNAT Pool選擇默認(rèn)值None,虛擬IP“192.168.1.3”后端的Apache服務(wù)器,看到的將是Squid服務(wù)器的真實(shí) IP“192.168.1.11”。由于Squid和Apache服務(wù)器的IP地址屬于在同一網(wǎng)段,Apache服務(wù)器將無需經(jīng)過F5網(wǎng)關(guān) “192.168.1.2”,直接通過交換機(jī)回包給Squid服務(wù)器“192.168.1.11”,這樣虛擬IP“192.168.1.3”就會(huì)收不到回 包信息,HTTP請(qǐng)求無法完成。因此,需要選擇Auto Map,進(jìn)行地址轉(zhuǎn)換,讓后端Apache服務(wù)器看到的是F5的自身內(nèi)網(wǎng)IP,回包給F5。
?、?、Resources大類下:
?、?、iRules欄:將Available列的“irules_apache”拉到Enabled列。
?、凇efault Pool欄選擇:pool_apache_default
⑷、Apache虛擬服務(wù)器──vs_apache創(chuàng)建完成后,如需進(jìn)行修改,在以下兩個(gè)配置頁完成:
★修改虛擬服務(wù)器演示頁面1:
http://blog.s135.com/book/f5/vs_properties.htm
★修改虛擬服務(wù)器演示頁面2:
http://blog.s135.com/book/f5/vs_resources.htm
十、創(chuàng)建SNAT安全網(wǎng)絡(luò)地址轉(zhuǎn)換,讓真實(shí)服務(wù)器能夠訪問互聯(lián)網(wǎng)、對(duì)外發(fā)郵件
★創(chuàng)建SNAT演示頁面:
http://blog.s135.com/book/f5/snat_create.htm
1、創(chuàng)建SNAT:snat_all_server
在“Local Traffic→SNATs”頁面點(diǎn)擊“create”按鈕:
①、Name欄填寫:snat_all_server(填一個(gè)英文名稱)
?、?、Translation欄選擇:IP Address,并填寫SNAT IP地址:61.1.1.4(此項(xiàng)也可以選擇Automap,使用F5的自身外網(wǎng)IP作為SNAT IP)
?、?、Origin欄選擇:Address List
?、?、Address List欄:①Type欄選擇host,填寫要訪問互聯(lián)網(wǎng)、對(duì)外發(fā)郵件的內(nèi)網(wǎng)IP地址。②或者Type欄選擇Network,填寫要訪問互聯(lián)網(wǎng)、對(duì)外發(fā)郵件的網(wǎng)段和子網(wǎng)掩碼。
?、荨LAN Traffic欄選擇:Enabled on...
⑥、VLAN List欄:將Available列的“internal”拉到Selected列。
注意:真實(shí)服務(wù)器的默認(rèn)網(wǎng)關(guān)需要指向F5的自身內(nèi)網(wǎng)IP,即192.168.1.2,才能通過SNAT訪問互聯(lián)網(wǎng)、對(duì)外發(fā)郵件。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
