Мы не очень довольны нашим текущим поставщиком услуг по размещению, поэтому мы хотим переехать в другую компанию в другом городе. Наш бизнес - это онлайн-школа, доступная по всему миру (что означает, что нам нужна круглосуточная доступность для нашего приложения, но, возможно, 1-2 часа простоя доступны по цене). Колледжи и университеты по всему миру предлагают нашу учебную программу как свою собственную, поэтому в рамках этих соглашений говорится, что у нас может быть не более X времени простоя в любой конкретный месяц, если они будут нам платить.
Итак, у меня есть план, но я хочу обнародовать его, чтобы посмотреть, видит ли кто-нибудь еще какие-либо проблемы с ним, которые я могу упустить, или, может быть, у вас есть план получше, вы можете предложить.
Наша установка: Intel Modular Server, FreeBSD с jails, apache, mysql, php. Домен, в который входят студенты, выглядит примерно так: portal.mydomain.com.
Я думал, что мы могли бы разместить второй экземпляр нашего сервера на сайте B (новый сайт) и дать ему новое доменное имя (portal1.mydomain.com). Затем мы могли бы принудительно перенаправить весь трафик с portal.mydomain.com на portal1.mydomain.com. На этом этапе мы изменим DNS для нашего исходного доменного имени, чтобы получить новый IP-адрес. Затем мы дадим 48 часов на распространение изменений DNS. На этом этапе мы просто изменим apache в новом экземпляре, чтобы он отвечал на portal.mydomain.com вместо portal1, и тогда все было бы как обычно.
Есть ли какие-нибудь дыры в этом плане, которые я не замечаю? Есть ли способ лучше?
Чтобы это работало, вы должны быть абсолютно уверены, что ваше приложение не зависит от текущего доменного имени и будет работать под порталом portal1.mydomain.com.
К сожалению, мой прошлый опыт показывает, что это не всегда так.
Если вы можете быть уверены, что доменное имя не проблема, ваш план звучит хорошо.
Очевидно, вам необходимо синхронизировать базу данных MySQL при переключении на новый центр обработки данных (вы не упомянули об этом в своем плане).
Я бы установил для TTL DNS-записи portal.mydomain.com более низкое значение, чтобы не было 48 часов для распространения.
Если вы не уверены, я предлагаю сделать это следующим образом:
* понизить TTL для portal.mydomain.com (5 минут)
* настроить новый экземпляр в новом DC, также прослушивая портал.mydomain.com
* синхронизировать базу данных MySQL от старого к новому DC (репликация)
* остановите апач в старом DC
** дождитесь репликации последних изменений БД
** остановить репликацию на новой БД, настроить как автономную
** измените DNS-запись portal.mydomain.com, чтобы она указывала на IP-адрес нового экземпляра
** настроить старый экземпляр Apache для доступа к базе данных MySQL в новом DC
* подождите, отслеживайте запросы на старом Apache, выключайте, когда больше не используется
* снова установите TTL на нормальное значение
Это также предполагает, что возможны некоторые вещи, такие как MySQL-соединения между контроллерами домена.