У меня небольшая ситуация, у нас есть VIP, который содержит 4 узла, присутствующих в двух разных местах (2 узла в местоположении A и другие 2 узла в местоположении B), имеющих разные подсети (у нас есть отдельные маршруты для достижения каждого местоположения). Здесь мы хотим иметь два разных пула SNAT под одним VIP, каждый из которых выделен для каждой подсети.
скажем, у меня есть 2 узла в подсети 10.0.0.0/24 и 2 узла под 20.0.0.0/24, так что трафик использует используемые пулы SNAT: SNAT-1 -> members -> 11.1.1.1 & 11.1.1.2 to достичь узлов 10.0.0.0/24. SNAT-2 -> члены -> 12.1.1.1 и 12.1.1.2 для достижения узлов 20.0.0.0/24.
Как мы можем модифицировать irule для этого конкретного случая? Любая помощь будет оценена. Спасибо!
С iRule это довольно просто:
when LB_SELECTED {
if { [IP::addr [LB::server addr] equals 10.0.0.0/24] } {
snatpool snat-1
} else if { [IP::addr [LB::server addr] equals 10.0.0.0/24] } {
snatpool snat-2
}
}
Как только алгоритм балансировки нагрузки определит член пула, вы можете получить доступ к этому адресу с помощью LB :: сервер в LB_SELECTED событие, и как только вы сравните его с указанными подсетями, примените Snatpool соответственно.