Справочная информация (извините за отсутствие здесь правильного жаргона): я собираюсь запустить пару физических серверов, на каждом из которых будет размещено несколько простых сайтов с Nginx. Серверы в цвете, и у меня будет несколько выделенных IP-адресов (до 16). Серверы подключены через коммутатор. И их сеть находится за межсетевым экраном Cisco.
Мое намерение (поправьте меня, если это совершенно не так) - дать каждому серверу виртуальный IP-адрес. Затем трафик, входящий через брандмауэр, будет подготовлен к одному из виртуальных IP-адресов (мой основной сервер). Таким образом, если у меня возникнут проблемы с основным физическим сервером, я могу выключить его и использовать его VIP на резервном физическом сервере (переключение вручную). Насколько я понимаю, если я изменю виртуальный IP-адрес отказоустойчивого сервера на тот, который использовал основной сервер, запросы на общедоступный IP-адрес будут перенаправлены на резервный сервер.
Однако я очень запутался, когда дело доходит до понимания сетей (как вы, наверное, уже знаете).
1) Если TCP-соединение приходит к общедоступному IP-адресу моего сайта, оно попадет в брандмауэр. Затем он будет направлен на основной сервер (на основе VIP). Это верно?
2) Если оба моих сервера находятся за одним брандмауэром, как можно получить доступ к ним по одному и тому же IP-адресу (чтобы я мог указать свою запись A на один IP-адрес)? Или это невозможно сделать с брандмауэром, и только маршрутизатор может с этим справиться?
3) Подходит ли мой вариант использования для статического IP-адреса или DHCP? Какие у них недостатки?
4) Правильно ли я понимаю публичные IP-адреса. Могу ли я назначить один общедоступный IP-адрес своему брандмауэру, а затем перенаправлять соединения оттуда обратно на один IP-адрес за моим брандмауэром? Или каждый из моих серверов получает IP-адрес, и TCP-соединения просто приходят через мой брандмауэр и на один из серверов в зависимости от IP-адреса, к которому он подключен?
Вы правильно поняли. Следует отметить, что с точки зрения сети виртуальный IP-адрес - это, по сути, общедоступный IP-адрес, который контролируется вашим маршрутизатором, и вы можете сдавать его в аренду где угодно и когда угодно ...
Есть два типа IP-адресов: общедоступные IP-адреса (которые вы обычно назначаете самому маршрутизатору), а затем у вас есть частные IP-адреса, которые вы полностью контролируете в своей VLAN. В вашем случае вы хотите взять все свои общедоступные IP-адреса, поместить их в одну VLAN, назначить их все вашему маршрутизатору (и дать вашему маршрутизатору сдать их в аренду через статическую IP-маршрутизацию) и убедиться, что маршрутизатор настроен. для перенаправления NAT 1: 1 (который может принимать общедоступный IP-адрес и по существу перенаправлять его на внутренний IP-адрес. Таким образом, на своем сервере вы можете назначить его, скажем, 10.0.0.101, и иметь свой резервный сервер на 10.0.0.102 Если ваш основной сервер выходит из строя, вам не нужно переключать какие-либо общедоступные IP-адреса, все, что вам нужно сделать на стороне маршрутизатора, - это подключить вашу общедоступную IP-точку к другому частному IP-адресу.
Но есть и другие способы сделать это. Если вы используете что-то вроде восходящей серверной функции Nginx (http://wiki.nginx.org/HttpUpstreamModule), у вас также может быть баланс нагрузки веб-сервера между несколькими серверами (и если один из серверов выйдет из строя, Nginx узнает об этом), но тогда, если основной веб-сервер Nginx, проксирующий ваши запросы, выйдет из строя, вам придется какая-то другая причудливая маршрутизация, чтобы также хорошо переключаться при отказе. Вы можете почитать на https://stackoverflow.com/questions/10971298/load-balancing-with-nginx :)