![Как назначить несколько пулов одному виртуальному серверу [VIP] в F5](https://rvso.com/image/747847/%D0%9A%D0%B0%D0%BA%20%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B8%D1%82%D1%8C%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BF%D1%83%D0%BB%D0%BE%D0%B2%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC%D1%83%20%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83%20%5BVIP%5D%20%D0%B2%20F5.png)
У меня есть требование в 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
Если предположить, что вы переключаете пул по имени приложения (читай: полное доменное имя), то вы можете назвать свои пулы соответствующим образом, а 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]
}
}