Мы используем ipvs
для балансировки нагрузки L4, при которой пакеты передаются на серверы L7 в туннельном режиме IPIP.
Есть три системы ipvs, настроенные с хешированием исходного кода для сохранения. Иногда ipvs передает пакеты на неправильные серверы.
Например, ipvs 1 получает пакет от клиента 1.1.1.1 и отправляет его на внутренний реальный сервер 1, следующий пакет того же клиента получает ipvs 2, который отправляет его на внутренний реальный сервер 2. Теперь сервер 2 не знает об этом. пакет, потому что соединение было фактически инициировано с реальным сервером 1, поэтому реальный сервер 2 завершает соединение пакетом RST.
Это происходит не только с конкретным клиентом, все клиенты ведут себя одинаково.
насколько я понимаю, все IPV уровня L4 должны выбирать один и тот же реальный сервер из-за алгоритма хеширования источника.
Я построил такую же установку в лаборатории, но не смог ее воспроизвести. Установка, в которой возникла проблема, является производственной, поэтому я не могу вносить в нее какие-либо серьезные изменения в целях отладки.
Keepalived используется для управления ipvs.
Любые указания о том, как отладить эту проблему с минимальным воздействием, будут действительно полезны.
PS - Я знаю, что хеширование источника не очень согласовано, но количество пакетов, отправленных на неправильные реальные серверы, слишком велико. У нас есть другие кластеры, где мы никогда не сталкивались с этой проблемой.
IPVS 1
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP x.x.x.26:443 401541 3620595 0 458422K 0
-> x.x.x.1:443 401234 3618511 0 458239K 0
-> x.x.x.2:443 15 126 0 12341 0
-> x.x.x.3:443 35 213 0 20832 0
-> x.x.x.4:443 16 113 0 10980 0
-> x.x.x.5:443 19 132 0 12113 0
-> x.x.x.6:443 18 140 0 13616 0
-> x.x.x.7:443 12 97 0 9262 0
-> x.x.x.8:443 19 120 0 10448 0
-> x.x.x.9:443 164 1083 0 88618 0
-> x.x.x.15:443 9 60 0 5498 0
IPVS 2
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP x.x.x.26:443 402903 3626029 0 459621K 0
-> x.x.x.1:443 12 56 0 4150 0
-> x.x.x.2:443 21 132 0 12967 0
-> x.x.x.3:443 168 1084 0 89908 0
-> x.x.x.4:443 14 122 0 11005 0
-> x.x.x.5:443 12 79 0 7045 0
-> x.x.x.6:443 402584 3623968 0 459444K 0
-> x.x.x.7:443 29 146 0 12899 0
-> x.x.x.8:443 22 190 0 17336 0
-> x.x.x.9:443 10 66 0 6049 0
-> x.x.x.15:443 31 186 0 15724 0
Спасибо !