Вопрос довольно прост, как и в названии, но почти все, кому я его задаю, пытаются убедить меня, что я сумасшедший или глупый. Я объясню здесь, зачем мне это нужно, и я приветствую другие решения для выполнения этой задачи, но я все равно буду очень благодарен, если вы дадите мне ответ (особенно если это не "нет" :)) на вопрос.
Итак, у меня есть пул машин в одной сети (скажем, 10.0.0.1/24), их IP-адреса — 10.0.0.1, 10.0.0.2, ..., 10.0.0.10
У них также есть публичный IP-адрес в Интернете (скажем, 8.8.8.8), настроенный на их интерфейсе обратной связи (т.е. lo:dsr) [подождите, не называйте меня пока сумасшедшим]
На этом пуле у меня есть балансировщик нагрузки Direct Server Return. Если вы не знаете, как это работает, посмотрите это:http://www.weirdnet.nl/images/natvsdsr.png
Пока все хорошо, все работает идеально.
Теперь возникает проблема. Эти машины не запускают ни одной службы. Они запускают 3 разные службы на портах 8080, 8081 и 8082, и они общаются между собой (через сеть).
Поэтому, когда служба 8080 на машине A пытается связаться со службой 8081 (через IP-адрес балансировщика нагрузки 8.8.8.8), Linux «достаточно умен», чтобы заметить, что машине A принадлежит IP-адрес 8.8.8.8, и вместо этого отправить этот пакет на интерфейс обратной связи.
Обычно это не проблема, но поскольку это высокодоступная система, возникнут проблемы, если по какой-либо причине (например, из-за доставки) служба B будет остановлена на машине A.