Иногда необходимо доставить данные с одного сервера MS SQL Server к другому серверу через сеть Интернет использую репликацию, такой случай у меня был, и ниже я описал как это было реализорвано.
Настройка репликации MS SQL Server через Интернет мало чем отличается
от настройки репликации в локальной сети, за исключением настройки сетевого
оборудования.
Примерная схема, того, что у нас
должно получиться примерно такова:
Объект 1 Сервер 1 и Объект 4 Сервер
2 - это сервера с MS SQL Server в разных сетях.
На Сервере 4 находится основная
база, на которую настроена репликация транзакций.Сервере 1 будет выполнять роль PULL подписчика.
Я еще дополнительно использую ftp для
получения резервной копии и её восстановления на Сервер 1 для настройки
репликации. Сервер ftp так же запущен на
сервере 2. В MS SQL Server есть возможность использовать ftp для доставки
моментальных снимков при репликации, но у меня была проблема с настройкой
сетевого оборудования с настройкой NAT-PT, FTP
ALG, иначе не будет происходить доступ подписчика к ftp серверу. Я решил по-простому – использовать резервные
копии.
Объект 2,3 –это коммутаторы
имеющие выход в Интернет с внешним IP, на которых будут
настроены сетевые правила .Сначала настраивается сетевое оборудование, на коммутаторе 2 необходимо открыть порты TCP 20,21 для ftp и 1433 для самого MS SQL Server (при использование именованного инстанса дополнительно открыть UDP 1434 ) для пакетов от Source Сервер1 к Destination внешний IP коммутатора 3.
На коммутаторе 3 настраиваем NAT проброску
TCP пакетов
MS SQL Server от
источника IP коммутатора 2
После настройки сетевого
оборудования проверяем доступность
портов командой telnet:
telnet 85.30.240.26 1433
где сначало указывается IP нашего сервера 2, а затем порт, через который подключаемся, в нашем случае это ms sql порты.
Если все хорошо, переходим к следующему шагу настройки
репликации, если не происходит подключение через telnet, то проверяем сетевые настройки .
Следующий шаг связан с тем,
что репликация MS SQL Server возможна только между серверами с использованием имени сервера, а не по IP.
Т.к наши сервера знают о друг друге только по IP, чтобы они знали и имена, то пропишем их на подписчике Сервер1 имя
сервера 2, для этого открываем файл hosts (C:\Windows\System32\drivers\etc) и делаем привязку имени к IP добавив строку:
85.30.240.26 имя_сервера2
Где 85.30.240.26
это внешний IP коммутатора 3, но для ms sql на сервере1 это будет сервер 2, а там наш коммутатор должен
пробросить пакет до реального сервера 2.
После этого можно проверить подключение к MS SQL Server с сервера 1 на сервер 2 через MS SQL Management Studio как
по имени , так и по IP.
Еще одно важное замечание, т.к. сервера в разных подсетях и
не знают о друг друге ничего, то необходимо использовать sql аутефикацию.
2)Создать публикацию. И Добавив подписчика сервер 1, сервер добавляется через sql скрипт, а не в графическом режиме.
3) И Создать подписчика на сервере 1, предварительно восстановив базу из резервной копии созданной на сервере 2 и скопированная из ftp сервера.
После запуска агентов репликации , репликация должна
работать!
Комментариев нет :
Отправить комментарий