Мы находимся в процессе миграции некоторых веб-сайтов с одного из наших старых серверов Windows Server 2003 / IIS 6 на новый сервер Windows Server 2008 / IIS 7. Мы должны перенести эти веб-сайты без простоев.
Все эти веб-сайты взаимодействуют с базами данных SQL Server и / или MySQL. Им также назначены сертификаты SSL (это сайты электронной коммерции).
Наш первоначальный план состоял в том, чтобы остановить веб-сайты на старом сервере на несколько минут, скопировать веб-сайты и базы данных на новые серверы и перенаправить сайты IIS 6 на старом сервере на www2.<domain>.com
который указывает на новый сервер. Таким образом, трафик, который все еще поступает на старый сервер, пока кеши DNS очищаются, перенаправляется на новый сервер.
Проблема в том, что сертификаты SSL предназначены для www.<domain>.com
и посетители видят предупреждение системы безопасности, если они включены www2.<domain>.com
. Важно, чтобы весь трафик сразу направлялся на новый сервер, поскольку у нас не может быть двух отдельных копий баз данных или веб-сайтов.
Вы можете рассмотреть возможность использования TCP-прокси на старом веб-сервере для прокси-трафика на новый компьютер веб-сервера, пока старые записи DNS устаревают из кеша. В зависимости от объема трафика, с которым вы имеете дело, что-то вроде Rinetd может нормально справиться с нагрузкой.
Если нагрузка не является чем-то, с чем может справиться простой инструмент, такой как rinetd, запущенный на старом компьютере, вы можете установить выделенную машину, на которой будет запущен любой из различных прокси с открытым исходным кодом (haproxy, баланси т. д.), отвечая на IP-адрес старого веб-сервера и проксируя TCP на новый ящик.
Я бы подумал об использовании маршрутизации запросов приложений (http://www.iis.net/download/ApplicationRequestRouting), которое является расширением IIS, которое в основном предоставляет прокси / маршрутизатор и может действовать как балансировщик нагрузки, поэтому вы можете установить его на машину IIS 7 и начать маршрутизировать все запросы через него, чтобы старый сервер IIS 6 все еще выполнял все их, затем используйте веб-развертывание (http://www.iis.net/download/WebDeploy) для синхронизации активного сервера с новым публикуемым контентом IIS 7 и сертификатами, а также с любыми другими объектами, такими как GAC, COM и т. д. После завершения синхронизации вы можете просто отключить маршрутизацию, и IIS 7 сразу же сможет обслуживать запросы напрямую, если что-то пойдет не так, вы всегда можете просто включить ARR, чтобы продолжить маршрутизацию на серверной части.
Я использовал 'станнель'для Windows, чтобы делать то же самое. В этом случае вы должны привязаться к IP-адресу с выходом в Интернет на OldServer и настроить туннель для передачи SSL с NewServer: 443. Затем вы должны настроить его для представления пары сертификатов SSL (которые вам нужно будет преобразовать в правильные форматы, но для этого есть инструменты) в этой локальной привязке.
Таким образом, входящие соединения со старым сервером получают тот же SSL, который они ожидают, и весь их сеанс тихо и безопасно проксируется на NewServer.