如何在 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]
  }
}

相关内容