應用交付腳本工具在HTTP服務中的應用

可編寫腳本在應用交付(負載均衡)中是個相當關鍵的功能,它是負載均衡策略靈活性的最佳體現。雖然對於沒有軟件開發基礎的技術同仁來說,腳本編寫可能是一個“噩夢”,面對着那“神奇”的字符串,敝人也感同身受。爲此,我搜集了一些腳本範例,特別是針對常用的HTTP流量的優化,爲大家做個借鑑。

範例一:將HTTP的請求自動轉換爲HTTPS。這個腳本比較簡單,但在很多電商網站或基於HTTPS訪問的客戶會用得比較多。

when HTTP_REQUEST {

HTTP::redirecthttps://[HTTP::host][HTTP::uri]

}

腳本說明:只要負載均衡收到HTTP的請求包,就以HTTP重定向的方式轉換爲HTTPS://加上域名和路徑。


範例二:根據客戶端請求的URI路徑不同,分發至指定的服務器組(pool)。在一些客戶的業務設計中,後臺只有一臺物理服務器(同一個IP地址同一個服務端口),但可根據路徑的不同發佈不同的業務,這時候就需要根據路徑的關鍵字來區分業務。

when HTTP_REQUEST {

if {[HTTP::uri] starts_with"/test1" } {

pool pool_server1

} elseif {[HTTP::uri] starts_with"/test2" } {

pool pool_server2

} else } {

pool pool_server

}

}

腳本說明:當客戶端請求的路徑爲“/test1”則分配給server1,當客戶端請求的路徑爲“/test2”則分配給server2,其它請求都轉發至默認的服務器組。


範例三:根據客戶端瀏覽器默認語言設定自動選取對應國家語言的服務器羣集。

when HTTP_REQUEST {

if { [HTTP::headeraccept-language] contains “es” } {

poolSpanish

} elseif { [HTTP::headeraccept-language] contains “ja” } {

poolJapanese

} elseif { [HTTP::headeraccept-language] contains “zh” } {

pool Chinese

} else {

poolEnglish

}

}

215635627.jpg

範例四:判斷某虛擬服務器某端口業務(vport)的當前鏈接數,超過閥值後重定向到指定頁面!~既能保護後臺服務器,也能在接收到異常的大併發連接時提供友好的備份服務。

when HTTP_REQUEST {

set total1 [STATS::get virtual-servervs_192.168.111.45 8080 http current-connection]

if { $total1 > 100 } {

HTTP::redirect"http://www.163.com/"

}

}

腳本說明:當訪問虛擬服務器192.168.111.45的8080端口的併發連接數大於100,後續請求都重定向至其他可訪問的站點,如www.163.com


範例五:根據HTTP報文頭的sessionID來做會話保持。某些網站是不能簡單的採用源IP會話保持的策略,在開發時採用sessionID來標示會話信息。通過HTTPwatch工具,查看到客戶的sessionID 是藏於cookies中:

Cookie內容:

ASP.NET_SessionId=rrwjbhbv1w4qgm553usoqqq3;MyCook=visitCount=1

使用以下腳本,在URI中查找“ASP.NET_SessionId”字段,就可以獲取到sessionID,並進行會話保持。

when HTTP_REQUEST {

set session_id [findstr[HTTP::uri] "ASP.NET_SessionId=" 18 ";"]

if { ( $session_id eq"" ) and ( [HTTP::cookie exists ASP.NET_SessionId] ) } {

set session_id[HTTP::cookie ASP.NET_SessionId]

}

if { $session_id ne"" } {

persist uie $session_id

}

}

215658948.jpg

以上只是在HTTP環境中會經常遇到的腳本應用,腳本工具的強大遠不止於此,藉此也希望更多的技術同仁能領略腳本工具的魅力所在,編寫出更具Power的腳本範例,大家共同進步。


(ZJM)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章