Допустим, у меня есть один сервер шлюза, подключенный к Интернету (один публичный IP XX.XX.XX.XX
- *.mydomain.com
указывает на него); и два веб-сервера A & B подключены (192.168.0.1
и 192.168.0.2
) и работают apache2
.
На шлюзе весь http-трафик в настоящее время перенаправлен на сервер A:
iptables -A PREROUTING -t nat -i em3 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80
iptables -A PREROUTING -t nat -i em3 -p tcp --dport 443 -j DNAT --to 192.168.0.1:443
(И это прекрасно работает)
Что мне нужно
Я медленно перемещаю веб-сервер с сервера A на сервер B. В настоящее время у меня есть несколько поддоменов (*.mydomain.com
), указывающих на сервер A, и я планирую постепенно переместить каждый веб-сайт на сервер B.
В определенный момент времени, когда клиент переходит на site1.mydomain.com
, папка www/
может все еще находиться на сервере A или уже на сервере B.
- Я хочу отредактировать правила NAT на шлюзе, чтобы оба веб-сервера запрашивали ответ на данный http-запрос.
Что я пробовал
Я мог бы быть молодым и наивным, но я, хотя и мог сделать тот же NAT с сервером B, поэтому, когда я захожу на siteY.mydomain.com
, трафик идет на оба веб-сервера, и тот, у которого есть vhost, отображает веб-страницу. , Я пытался с этими правилами:
# server A - rules already used
iptables -A PREROUTING -t nat -i em3 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80
iptables -A PREROUTING -t nat -i em3 -p tcp --dport 443 -j DNAT --to 192.168.0.1:443
# server B - new rules
iptables -A PREROUTING -t nat -i em3 -p tcp --dport 80 -j DNAT --to 192.168.0.2:80
iptables -A PREROUTING -t nat -i em3 -p tcp --dport 443 -j DNAT --to 192.168.0.2:443
Но я думаю, что оба игнорируются, потому что каждый запрос все еще приземляется на сервере A.
Вопросы
1. Можно ли "продублировать" трафик на обоих веб-серверах? (может быть, это глупо, извините)
2. Могу ли я сообщить шлюзу что-то вроде ", если это для site1.mydomain.com, остаться на сервере A; но если это для site2.mydomain.com
, перейти на сервер B"
3. Какое наилучшее решение для достижения этой цели?
Я не могу заставить шлюз запускать apache. И в идеале:
Я не хочу использовать разные порты;
Я не хочу редактировать сервер A или B iptables.
Не стесняйтесь поправлять меня или спрашивать более подробную информацию, если это необходимо!
Источники / ключи: