如何在 F5 中將多個池指派給單一虛擬伺服器

如何在 F5 中將多個池指派給單一虛擬伺服器

我在 F5 中有一個要求,我必須配置多個池,並且所有池將使用單一虛擬伺服器 [1 VIP] 來接收來自外界的流量。我試圖找出實現此目標所需的任何特定配置。截至目前,當我將預設池分配給虛擬伺服器時,我的 F5 配置正在工作,因為我必須使用 1 個 VIP 並在其上託管多個客戶端,所以我陷入了這一點。有人可以幫我嗎?

答案1

您將需要使用 iRules 才能在單一 VIP 上擁有多個池。查看相關文檔這裡

現在你要考慮的是如何選擇使用哪個池。您可以檢查主機或 URI 值,如下所示:

when HTTP_REQUEST {
  if { [HTTP::uri] contains "blabla"} {
    pool "Your pool name here"
 }
}

如果您需要更多信息,請告訴我,我對 F5 iRules 非常熟悉;)

答案2

Dexirian 上面是正確的 - 但我認為根據您因多個客戶端而需要多個池的情況,這更正確地回答:

when HTTP_REQUEST {
    switch -glob [string tolower [HTTP::uri]] {
        "/123*" { 
            HTTP::uri "/"
            pool pool_123 
        }
        "/456*" { 
            HTTP::uri "/"
            pool pool_456 
        }
        "/789*" { 
            HTTP::uri "/"
            pool pool_789 
        }
    }
}

答案3

假設您透過應用程式名稱(讀取:fqdn)切換池,那麼您可以適當地命名您的池,並且 iRule 可以是通用的:

when HTTP_REQUEST {
  if { [catch {pool [HTTP::host]}] } {
    log local0. "error - pool [HTTP::host] does not exist"
    # Set pool to default since HTTP::host did not match existing pool
    pool [LB::server pool]
  }
}

相關內容