教學目標

初步了解如何透過 F5 BIG-IP 的 iRule 功能進行客製化的流量管理,以利解決網站應用程式的效能問題。

重點概念

首先 F5 BIG-IP 流量管理器主要有提供 iRule 的強大且靈活的功能,將能夠用於管理網絡流量,並且使用基於行業標準工具命令語言 (TCL) 的語法,其不僅允許我們根據標題資料選擇 Pool 之外,更能夠允許我們透過搜尋定義的任何類型的內容資料來引導流量,以利滿足客戶客製化的需求。

接著我們能夠撰寫 iRule 程式用於搜尋網路傳送封包的標頭或內容,然後根據該搜尋的結果將流量導致特定的 Pool 之外,我們更能夠根據客戶端身份驗證的資訊將流量導致特定的 Pool,像是我們能夠撰寫以下 iRule 程式主要代表當客戶端已被接受連線之後,則會觸發此 iRule,若客戶端的 IP 位址與 192.168.0.1 匹配時,則會將資料封包傳送至 my_pool。

1
2
3
4
5
CLIENT_ACCEPTED { 
if { [IP::addr [IP::client_addr] equals 192.168.0.1] } {
pool my_pool
}
}

再來我們也能夠透過 IF…THEN…ELSEIF… 的方式設定多個條件式判斷,像是我們能夠撰寫以下 iRule 程式主要代表當接收 HTTP 連線之後,則會觸發此 iRule,若當 HTTP 請求連線的網址中有包括 API 的字串時,則會將資料封包傳送至 api_pool,或者當 HTTP 請求連線的網址中有包括 APP 的字串時,則會將資料封包傳送至 app_pool。

1
2
3
4
5
6
7
when HTTP_REQUEST {
if { [HTTP::path] contains "API"} {
pool api_pool
} elseif { [HTTP::path] contains "APP"} {
pool app_pool
}
}

最後我們也能夠透過 SWITCH 的方式設定多個條件式判斷,像是我們能夠撰寫以下 iRule 程式主要代表當接收 HTTP 連線之後,則會觸發此 iRule,若當 HTTP 請求連線的網址中有包括 API 的字串時,則會將資料封包傳送至 api_pool,或者當 HTTP 請求連線的網址中有包括 APP 的字串時,則會將資料封包傳送至 app_pool,但是若當 HTTP 請求連線的網址不包括 API 或 APP 字串則拒絕連線。

1
2
3
4
5
6
7
8
9
10
11
12
13
when HTTP_REQUEST {
switch [HTTP::path] {
*API* {
pool api_pool
}
*APP* {
pool app_pool
}
default {
reject
}
}
}

總結若是企業有導入 F5 BIG-IP 流量管理器做為網站應用程式的負載平衡時,我們除了透過設定負戴平衡的方式,像是 Round Robin,我們更能夠根據網站應用程式的負載情況透過 iRule 功能進行客製化的流量管理,以利解決網站應用程式的效能問題。

相關資源