четверг, 4 января 2018 г.

Миграция виртуальных сетей NVGRE между Network Services 

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



Готовые решения либо работали несколько криво, либо не понимали, если для одного Network Gateway создано несколько NAT Connections, что является довольно рядовой ситуацией в Windows Azure Pack. К тому же, если в них задача завершалась с ошибкой, то у нас отсутствовала любая возможность отката. Данные удалялись без возможности восстановления. Создавая свой скрипт, я пожертвовал GUI (не использую Windows Forms) и автоматизацией, так как считаю, что данная задача очень ответственная, ошибки просто недопустимы. Каждый шаг контролируется администратором. Если "что-то пошло не так", то у нас всегда есть исходные данные, с помощью которых мы можем все восстановить.

Итак, определимся, какие данные нам надо перенести в случае миграции сети между Network Service:

1. Основной внешний IP адрес
2. Дополнительные внешние IP адреса
3. Правила NAT

Еще может быть активирован VPN, но его в любом случае придется перенастраивать на стороне клиента (меняется IP шлюза), поэтому перенос я не рассматривал.

Теперь приблизительно опишем алгоритм:

1. Выбор сети, сервис для которой мы переносим
2. Сбор данных по текущим настройкам
3. Верификация данных
4. Удаление Network Gateway для сети (будут удалены NAT Connections и NAT Rules)
5. Активация Network Gateway для сети
6. Создание NAT Connections с нашими внешними IP адресами
7. Создание правил NAT

На шаге 3 действует принцип "семь раз отмерь". Администратор получит все необходимые данные для того, чтобы восстановить настройки в случае сбоя.

Собственно, сам скрипт:



Я постарался сделать все настолько просто, насколько это возможно.

Файл целиком можно скачать по ссылке. Стоит ли напоминать, что если хотите запустить чужой скрипт в боевой среде, надо его внимательно изучить :)

На этом все, оставляйте свои замечания и пожелания в комментариях.


Комментариев нет:

Отправить комментарий