Назад | Перейти на главную страницу

Смена серверов - перенаправление на новый IP = без простоев?

Я меняю серверы своего сайта. IP старого сервера нельзя перенести на новый. Чтобы не было простоев, я планирую сделать следующее, пожалуйста, подтвердите, что это будет работать:

  1. Настройте новый сервер и прослушайте новый IP
  2. Старый сервер перенаправляет весь трафик на новый IP
  3. Измените записи DNS, чтобы они указывали на новый IP

Моя логика подсказывает мне, что когда я перенаправляю на новый IP-адрес из своего старого ящика, пользователь не увидит доменное имя в браузере, но увидит новый IP-адрес. Есть ли способ перенаправить на новый IP-адрес и отправить с ним HOSTNAME, чтобы пользователь увидел доменное имя в браузере?

Я делаю это, потому что сайт находится в постоянном использовании, и простое изменение настроек DNS не поможет, поскольку база данных не будет синхронизироваться между новым и старым серверами во время распространения.

Вот метод, который у меня сработал:

  1. Синхронизируйте файлы и базы данных с новым сервером.
  2. Выполните повторную синхронизацию непосредственно перед отключением.
  3. Измените DNS, чтобы он указывал на новый сервер.
  4. Перенаправьте запрос, приходящий на старый IP-адрес, на новый сервер до завершения распространения DNS.

Вот как я бы сделал шаг 4:

Мы настроим IPTables на сервере Linux для перенаправления всего трафика, поступающего на порт 80 (который является портом веб-сервера по умолчанию), на сервер с IP-адресом. 122.164.34.240. Первый шаг - настроить ваш Linux-сервер на такую ​​пересылку. Откройте окно терминала, войдите в систему как пользователь root и выполните следующую команду:

# echo 1 >/proc/sys/net/ipv4/ip_forward

Следующим шагом будет указание IPTables перенаправить трафик на новый сервер:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240

Вот где происходит волшебство IPTables. На третьем и последнем шаге мы говорим IPTables переписать источник подключений к порту 80 нового сервера так, чтобы он выглядел как исходящий от старого сервера.

# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE

Последний шаг необходим, потому что, если мы не сообщим веб-серверу нового сервера, что соединения поступают с клиентских машин, он будет думать, что они исходят от старого сервера.

Вы можете повторить это для баз данных и порта почтового сервера.

Вы также можете рассмотреть возможность добавления нескольких A-записей. Например, Google использует это, проверьте их вывод nslookup:

Name:       google.com
Addresses:  209.85.148.101
            209.85.148.102
            209.85.148.113
            209.85.148.138
            209.85.148.100
            209.85.148.139

Если вы добавите несколько A-записей в домен, посетители получат несколько IP-адресов и попробуют их в указанном порядке. Если одно не удается, клиент переходит к следующему, чтобы попробовать.

Настройте новый IP как дополнительную запись A за 24 часа до начала работы, запустите новый сервер, выключите старый, удалите IP.

Другой вариант - использовать VIP (виртуальный IP). Итак, ваши шаги будут:

  1. Настройте новый сервер и прослушайте новый IP.
  2. Добавьте VIP к старому серверу.
  3. Измените записи DNS, чтобы они указывали на IP-адрес VIP. До сих пор весь трафик будет отправляться на старый сервер, но с использованием VIP.
  4. Когда будете готовы к работе, переместите VIP на новый сервер.
  5. При желании вы можете изменить DNS на новый IP-адрес сервера и удалить VIP (через некоторое время) из DNS.

Хорошо, поскольку вы упомянули о репликации базы данных, вам необходимо сделать следующее.

  1. Настройте репликацию между базами данных на двух серверах.
  2. Во время переключения сделайте базу данных нового сервера основной, а старый сервер - только для чтения.
  3. Укажите в строке подключения к базе данных приложения новый сервер как на старом, так и на новом сервере. Если ваш сайт использует сеансы, убедитесь, что сеанс сохраняется в БД.
  4. Измените IP-адрес в DNS на новый сервер.
  5. Продолжайте работать на обоих серверах не менее 48 часов.
  1. Настройте новый сервер и прослушайте новый IP
  2. Затем настройте прозрачное перенаправление. На старом сервере установите rinetd.

В rinetd.conf:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. Измените записи DNS, чтобы они указывали на новый IP

вы можете использовать HA-Proxy перед своими веб-серверами, когда один из них переходит в режим обслуживания, вторичный сервер берет на себя управление.

Ваш список того, что нужно сделать, выглядит вполне разумным.

В качестве примера, если вы используете apache, когда вы делаете что-то подобное в apache на старом сервере:

redirect permanent / http://newserver.example.com

Пользователь увидит новый домен в браузере, когда перейдет на старый сайт. В этом случае перенаправление также является постоянным, пока работает браузер.

Итак, если вы реализуете на своем веб-сервере какое-то перенаправление в дополнение к другим изменениям, все будет в порядке.