Я меняю серверы своего сайта example.org. IP старого сервера нельзя использовать для нового. Я хочу заменить старый сервер на новый с нулевым временем простоя.
На example.org работает множество различных сервисов, это не только приложение веб-сервера, это также почтовый сервер, сервер git, сервер mumble и т. Д.
Моя идея:
Это звучит хорошо и все такое, но я чувствую, что возникнет проблема с SSL.
Например, если пользователь Алиса переходит на example.org в своем браузере, и он разрешается на старый IP-адрес, поскольку изменение DNS еще не распространено на нее, а затем старый IP-адрес перенаправляет ее на новый IP-адрес, я думаю, что она браузер бы взбесился. Он будет видеть новый IP-адрес с использованием сертификата SSL для example.org, в то время как example.org, очевидно, разрешается на другой IP-адрес, старый IP-адрес, поскольку кеш DNS не обновляется для Алисы. Таким образом, Алиса будет встречена огромным красным предупреждением SSL в ее браузере о том, что новый IP-адрес не принадлежит example.org.
Аналогичная проблема будет с почтовым сервером (SSL smtp) и другими службами, работающими на example.org. Как мне решить эту проблему?
Идеальным решением было бы каким-то образом использовать iptables, чтобы старый сервер проксировал новый сервер вместо перенаправления пользователя на новый сервер. Таким образом, пользователи, чей кеш DNS еще не обновлен, будут общаться следующим образом: [пользователь] <---> [старый сервер] <---> [новый сервер]. Они не будут знать, что новый сервер вообще существует, для них это будет похоже на их обычное общение со старым сервером. Моя единственная проблема с этим прокси-решением заключается в том, что новый сервер будет видеть исходные IP-адреса старого сервера, а не пользователей. Это может привести к поломке многих вещей, например, Fail2Ban может брандмауэром старого IP-адреса сервера на 10 минут, потому что некоторые пользователи вводили неправильный пароль почты несколько раз, по сути, запрещая доступ к почтовому серверу всем другим пользователям, у которых не обновлен DNS и, следовательно, использовать прокси.
Самый простой способ сделать это - не использовать прокси через старый сервер:
TTL
быть чем-то вроде 300
секунд.TTL
для истечения срока действия кешей.TTL
обратно к исходному значению.Ваше максимальное время простоя теперь крайне низкое.
Для вашего беспокойства:
ignoreip =
чтобы сделать исключение для вашего старого сервера.Вы можете изучить ssh-туннелирование, чтобы отправлять запросы на обслуживание на новый сервер. Я видел это, когда имя хоста разрешается на старый сервер, а затем перенаправляет трафик на новый сервер через ssh. Если на новом сервере старый IP-адрес сервера игнорируется, тогда у fail2ban не должно быть проблем.