У меня есть ситуация, когда я пытаюсь разместить свой собственный веб-сервер, потому что мне нужно какое-то специальное программное обеспечение, включая телефонию, WebRTC, node.js и т. Д. Однако мое сетевое соединение в городе и стране, где он будет размещаться, через волоконно-оптическая линия не очень надежна (физически - подвержена порезам - редко, но уже случалось пару раз).
Чтобы обойти это, я подумал, что у меня будет доступ к внутреннему серверу через двух интернет-провайдеров через два разных физических носителя и, конечно же, два разных общедоступных IP-адреса. Регистратор домена обычно имеет только один IP-адрес в настройке DNS (запись A), поэтому в качестве механизма отказоустойчивости это не будет служить никакой цели. Даже если бы мне пришлось вручную изменить A-запись для домена, при отключении одного из физических соединений потребуется время для распространения, не говоря уже о кешировании DNS и т. Д. Полагаю, все это базовые вещи.
Чтобы обойти описанную проблему, могу ли я использовать обратный прокси-сервер на размещенном сервере, единственная цель которого - перенаправить входящие запросы для данного сеанса на конкретный IP-адрес, как бы циклически, как это используется при балансировке нагрузки , хотя технически это один и тот же сервер с двумя разными IP-адресами. Запись DNS A будет указывать на размещенный сервер. Если соединение одного из интернет-провайдеров не работает, размещенный сервер автоматически перенаправляет только на другой IP-адрес.
Я посмотрел на распространенные обратные прокси-серверы (APache, Nginx, Squid), но не смог получить четкого представления о том, как он управляет перенаправлением с точки зрения сеанса. То есть несколько запросов в одном сеансе перенаправляются на один и тот же IP? Обратный прокси-сервер под названием Pound, похоже, предоставляет такую услугу, но я тоже не понимаю.
Обрабатывает ли обратный прокси-сервер управление сеансом? Если нет, как узнать, что конкретный запрос должен быть перенаправлен на тот же IP-адрес в рамках сеанса? Или это больше связано с TCP-соединением, чем с сеансом на уровне приложения? Обратите внимание, что при таком использовании обратного прокси-сервера перенаправленные IP-адреса находятся не в той же локальной сети, что и сам прокси, а скорее общедоступные IP-адреса удаленных серверов совершенно разных интернет-провайдеров. Возможно, это не имеет значения, поскольку удаленный сервер в моем случае такой же, хотя и с разными IP-интерфейсами с разными IP-адресами. Позаботится ли управление сеансом само о себе, даже если запросы поступают с двух разных IP-адресов на одном сервере в рамках одного сеанса (в результате физического разрыва одного кабеля в середине сеанса)?
Мне просто нужны пояснения, прежде чем я перейду к реализации. Или есть лучший подход для решения этой проблемы? Я предполагаю, что многие в странах третьего мира столкнутся с этой проблемой, особенно если они захотят разместить node.js и связанные с ним службы нового поколения, внутри компании, и не должны быть слишком обеспокоены поднятыми здесь проблемами.
По связанной теме, можно ли использовать NAT назначения Iptables в качестве обратного прокси-сервера. Это только теоретический вопрос, потому что я не смогу устанавливать правила IPtables на размещенном общем сервере.