我在 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]
}
}