您好,登錄后才能下訂單哦!
基本介紹
IRules主要應用在F5負載均衡設備GTM、LTM和LC,它使用的是TCL語言,由事件、命令和邏輯三部分組成。它可以工作在OSI模型的3-7層,根據協議的不同,實現不同的功能。
IRules的功能:
1、實現了對所有TCP、UDP應用的數據包分析與信息提取功能;
2、根據數據信息進行分流;
3、雙向的數據流改寫功能;
4、選擇性地址轉換(iSNAT);
5、基于內容的會話保持。
iRules可以根據提取的信息(比如ip、http?header、http?uri等)進行數據分流,使得不同的請求類型分配到不同的服務器群中。如根據文件類型選擇不同的服務器、依據游覽器不同選擇不同服務器、根據用戶類型不同選擇不同服務器等。
F5設備的Full?Proxy結構使其有了雙向數據改寫的能力。與其他傳統的網絡交換機不同,BIGIP可以對任意內容進行改寫,例如TCP?Content,UDP?Content,HTTP?Request,HTTP Response等內容進行修改。如改寫uri、在header中插入證書信息、選擇性的地址轉換、基于內容的會話保持等。
編程基礎
TCL語言是一種解釋性腳本語言,是一種嵌入命令的腳本語言。
iRules的命令結構:
命令 參數1 參數2 參數3 ... 參數n? #this is a note
TCL語言和命令結構:
if {觸發條件} {觸發動作}
elseif?{觸發條件} {觸發動作}
else?{觸發動作}
事件是iRules構成中的重要的一部分,不同事件代表數據在整個訪問過程中的邏輯位置。一般用when開頭。
命令是irules中對數據進行操作的直接函數,如:[HTTP::uri],該命令中HTTP代表HTTP協議,uri表示取這個http訪問中的uri,他們之間用“::”連接,代表從屬關系,uri是屬于HTTP這個命令體系的,類似的還有:[IP::addr]、[TCP::payload]、[SSL::handshake]等。
邏輯運算符:
contains 包含
matches 匹配
equals(==) 等于
starts_with 以開始
ends_with 以結束
matches_regex 正則表達式匹配
not(!) 非
and(&) 與
or(|) 或
開始寫iRules
1、第一個irules
when HTTP_REQUEST {
log local0.info "Hello World!"
}
2、DNS解析
when DNS_REQUEST {
if {IP::addr [IP::remote_addr]/24 equals 10.1.1.0/24} {
host 192.168.10.11
}
else{
host 10.10.10.10
}
}
3、不同請求來源分發不同的pool
when DNS_REQUEST {
if {IP::addr [IP::client_addr] equals 10.1.1.100} {
pool my_pool_A
}
else{
pool my_pool_B
}
}
4、多種不同請求來源連接到不同的pool
class private_net {
network 10.0.0.0/8
network 172.16.0.0/12
network 192.168.0.0/16
}
when HTTP_REQUEST {
if {[matchclass [IP::client_addr] equals ::private_net]} {
pool internal_pool
}else{
pool default_pool
}
}
5、HTTP跳轉
when HTTP_REQUEST {
if {[HTTP::uri] contains "a"} {
HTTP::redirect http://a.com
}else{
HTTP:redirect http://b.com
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。