Всем привет, последнее время (в эру облаков и контейнеризации) в среде моего студенчества не утихают споры о стоимости локальной инфраструктуры vs облачной.
Сегодня рассмотрим очередную реализацию решения для тех, кому близки облака, но платить за них вы не хотите.

В один прекрасный зимний день в офис нашей компании под аккомпанемент звуков NHL 2018 и запаха свежесваренного кофе постучался заказчик, со словами «я хочу в облако». Мы усердно разложили перед ним карты вариантов на базе проприетарной виртуализации и оркестраторов, оказалось дорого.

Далее пошла артиллерия Xen Citrix и XOA, proxmox, cloudstack и прочих решений на KVM и не только – аналогично, не потянем железо.

С некоторым не пониманием, WTF?, нами был задан вопрос “о средствах и что, заказчик, собственно хочет отправить в облако”. По итогам сложной и в какой то мере образовательной (для заказчика) беседы, мы получили, что-то вроде, у меня есть 100$ в месяц, я хочу не покупать лицензии, я не хочу физические сервера, я хочу Wimdows, 1с, и AD.

Укоротив мои излияния и всё негодование, хотелось бы отметить, что решение мы нашли, основано оно на облачной инфраструктуре от Azure и некотором количестве костылей и г.палок, ниже пойдет краткое описание собственно облачной инфраструктуры и ее реализации.

Что собственно имеем:

  • Зарегистрированный кабинет в Azure
  • 10 ноутбуков которые должны быть объеденены в доменную сеть
  • Принтера
  • Роутер Zyxel Kinetik LTE

Что надо сделать?: (от заказчика пришли только пункты “хочу облако, домен, и 1с, до 100$ в месяц)

  • Создать в облаке (Azure – как оказалось клиенту очень близок принцип office 365 и все прочие плюшки интеграции – поэтому гугл и амазон прошли мимо)
  • Реализовать сервер с терминалльным доступом для 1с и бухгалтерии.
  • Реализовать AD, DNS.
  • Настроить резервное копирование (ежедневно) сервера 1с и AD
  • Обеспечить безопасную работу и связь в сети.

Заказчик недавно арендовал новый офис, и как результат решил реализовать максимально беспроводную среду обитания в офисе, помещение в котором мы проводили аудит представляло собой стопку ноутбуков и интернет с асиметричным каналом связи 8:0,5)) я думаю все догадываются кто провайдер))))

(Среди дополнительных задач – приобретение для  построения канала связи между облачной сетью и офисной сетью статического IP адреса. у провайдера.)

Прежде чем пойдут слайды, хотел бы отметить, когда вы хоть, что то, будет создавать в облачной инфраструктуре Azure, Amazone, Google и прочих, запомните 1 факт, за все надо платить.

Облака построены так, что в большинстве случаев вы платите за время использваония ресурсов, лицензии или иное решенее, аля статический IP адрес. Как результат настоятельно рекомендуем прежде чем, что то создавать прикиньте какие ресурсы вам нужны и внимательно прочтите о них в вики Azure.

Для тех кто хочет детально разобраться в Azure, есть русскоязычная книга. (спасибо ребятам опубликовавшим пособие) 

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

Для полноценной работы нам необходимо будет создать несколько объектов в нашем облаке:

Можно пойти 2 мя путями, создав первую виртуальную машину  вы  в автоматическом режиме получите многие объекты связанные с ней, или пойти другим путем создать объекты, а заетм создать машинку и привязать к ним. В последующем вы сами решите, что вам удобнее. Я же сделаю акцент, на том, что следует отметить отдельно.

пара англоязычных видео как создать виртуальную машинку в Azure. (рекомендую предварительно посмотреть оба)

Не вижу смысла делать скриншоты создания машинок, так как существует отличная документация от microsoft azure. Создание виртуальной машины.Трезво оценивайте ресурсы которые запрашиваете, так как это ваши деньги.

  • Создание виртуальной сети (виртуальный аналог ЛВС) – при создании рекомендую сразу предусмотреть создание подсетей посредством макси подсети, это вам в последубщем понадобится при реализации Lan 2 Lan VPN(Ipsec)
  • Создание общедоступного IP адреса (в нашем случае задействовано 2 общедоступных адреса 1 для 1с второй для впн) – хотелось бы отметить, что они так же не бесплатные))

В нашем случае мы развернули 2 виртуальные машинки на базе windows server 2016 – 1 относительно мощная которая будет служить сервером 1с с терминальным доступом, вторая собственно служит будущим контролером домена и днс. Обе машины находятся в одной виртуальной сети с маской \28

После создания машинок и проведения тестов – что нас все устраивает по производительности (в частности 1с), продолждаем решать запланированные вопросы:

  • Реализация резервного копирования
  • Объединение сетей, для включения нашего физического офиса с облачным AD (прошу не путать Azure AD и развернутый AD на виртуалке, это системы существенно отличающиеся, хотя Azure AD и на самом деле интересная и прогресивная вещь – стоит она дороже чем свой AD, и требует дополнительной ифнраструктуры.

Для резерзвоного копирования на самом деле глобальных знаний не надо, в настрйоках виртуальной машны на данный момент в процессах, есть готовая функция для настройки резервного копирования. Более верный вариант настройки резервного копирования от Microsoft

Следующим этапом у нас объединение сетей посредством VPN тонеля, в нашем случае нам повезло, что Роутер Zyxel Kinetik LTE обладает возможностью включения функции Ipsec Vpn.

Для предварительного расчета стоимость VPN шлюза 

Совместимое оборудование (нашего кинетика не было , но все заработало), так же параметры тонелей , что не маловажно.

На стороне Azure необходимо произвести довольно большой кусок настроек, по сравнению с предыдущими настройками: (спасибо ребятам с vmblog.ru не пришлось нарезать картинки самому.)

Что нам потребуется:

  1. На стороне вашей локальной (on-premises) сети вам понадобится устройство с возможностью создать VPN подключение с Azure (аппаратный VPN шлюз, терминирующий VPN на вашей стороне). Со списком поддерживаемых устройств и особенностями их конфигурирования можно познакомится на странице https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpn-devices)
  2. Ваш аппаратный VPN шлюз не должен находиться за NAT и ему должен быть назначен статический белый IP адрес
  3. У вас должна быть активная подписка Azure (платная или бесплатная)
Создаем виртуальную сеть Azure

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

1) Авторизуйтесь на портале Azure.

2) Перейдите в раздел New -> Networking -> Virtual Network 

создать Azure Virtual Network

3) Нажмите кнопку Create 

новая виртуальная сеть azure

4) В следующем окне нужно настроить информацию о вашей виртуальной сети в Azure.

адресной пространство виртуальной сети

Name – имя вашей виртуальной сети

Address Space – диапазон адресного пространства. Если нужно добавить несколько диапазонов, это можно сделать позднее.

Subnet name – имя добавляемой подсети

Subnet Address range – диапазон адресов подсети (должен попадать в диапазон в поле Address Space)

Resource Group – можно выбрать имеющуюся ресурсную группу или создать новую

Location – Местоположение вашей виртуальной сети

После того, как все пункты заполнены, нажмите Create.

5) После того, как виртуальная сеть создана, можно изменить адресное пространство или подсети.

Создаем шлюзовую подсеть

На следующем шаге создается подсеть для шлюза. Рекомендуется использовать подсеть с маской /28 или /27.

1) Откройте Azure Portal

2) Перейдите в раздел More Services -> Virtual Networks 

3) Выберите виртуальную сеть, созданную на предыдущем этапе и нажмите subnets. Затем в правой части нажмите на Gateway subnet 

подсеть шлюза azure

4) В следующем окне укажите подсеть для шлюза и нажмите OK

маска шлюзовой сети

список подсетей

Создаем VPN шлюз Azure

Теперь можно создать виртуальный VPN шлюз:

1) На портале Azure нажмите New -> Networking -> Virtual Network Gateway 

vpn шлюз azure

2) Заполните следующие поля и нажмите Create

Name – имя шлюза VPN

Gateway Type – тип шлюза может быть VPN или ExpressRoute . В нашем случае это VPN

VPN Type – вид VPN сети. Выбираем route-based

SKU – номер SKU для шлюза

Virtual Network – выберите виртуальную сеть, созданную на предыдущем этапе

Public IP Address – внешний «белый» IP адрес вашего VPN шлюза. Можно выбрать один из уже имеющихся IP адресов или добавить новый.

Location – выберите регион Azure. Он должен соответствовать региону вашей виртуальной сети.

парамтеры шлюза

3) Нужно подождать некоторое время (40-50 минут) прежде чем шлю появится в списке.

создаля новый vpn шлюз

Создаем логический шлюз для вашего локального VPN шлюза в Azure

Следующий шаг – создание логического шлюза, который будет представлять вашу локальную сеть.

1) Для этого на портале Azure выберите пункт New -> Networking -> Local network gateway

логический vpn шлюз

2) Укажите:

Name – имя локального шлюза

IP Address – «белый» IP адрес вашего аппаратного VPN шлюза

Address Space – адресное пространство вашей локальной сети

Resource Group – выберите ресурсную группу

Создаем подключение Site-to-Site VPN

Теперь нужно организовать Site-to-Site VPN между вашим логическим VPN устройством и виртуальной сетью.

1) Перейдите в раздел More Services -> Virtual network gateways 

azure Virtual network gateways

2) Выберите виртуальный шлюз, созданный ранее, и на вкладке Settings нажмите на connection

новое логическое vpn подключение

3) Нажмите кнопку Add

4) Заполните все поля и нажмите ok.

Name – имя подключения

Connection Type – тип VPN подключения (у нас это site-to-site IPSec)

Virtual Network Gateway – ваш виртуальный шлюз

Local Network Gateway – ваш локальный шлюз

Shared Key –pre-shared ключ для вашего VPN подключения

6) Осталось настроить ваш аппаратный VPN шлюз.

7) После установки VPN подключения можно увидеть текущий статус в разделе connection.

vpn подлключение создано

 

После того, как наш тонель заработал мы настроили AD, DNS, 1c, резервное копирвоание и ввели ноутбуки в домен (не забудьте добавить ваш днс в облаке в редирект днс в локальной сети, или в раздачу DHCP вашего роутера) пошел этап тестирвоания.

Какие вопросы вылезли?

Стоимость!!!! и еще раз Стоимость –  даже с учетом всего и вся, у нас выходило, что затраты на облачную инфраструктуры выходили порядка 200$, при еще относительно неактивной работе.

Как уменьшили стоимость?

Измениши уровень VPN шлюза (по какой то причине у нас стал standart вместо basic), ставьте basic – цена существенно упала c 6$ в день за тоннель до 0.6.
Изменили время активности виртуальных машин (прошу отметить, что машины надо выключать не из под оси, а из кабинета azure, так как выключенная из оси машина не высвобождает ресурсы и считается работающей, а следовательно ест денежку. Процесс автовыключения машин прост, он есть в свойствах машинки в функциях, там же где бэкап, но вот включения нет)))) То, есть готовая функция , есть в dev labs, но ее не перенесли в кабинет и свойства машинки – прикол да?!)). Но и тут нас ничто не остановило, в Azure присутсвует довольно мощный инструмент автоматизации процессов управления вашим облаком.

Прелагаю инструкцию как настроить автоматизацию из галереи , но никто не мешает вам используя API Azure – делать свой.

Для реализации данного варианта необходимы максимальные привелегии управления облаком, так как под учеткой администратора не владельца, нельзя создать учетную запись Azure ad run as.

Не разглагольствуя далее, каков вышел результат (без детализации дисков машин- за них вы тоже платите за использование):

1 Standard A2 v2 (1c+TS+bd)
2 Standard B1ms (AD, DNS)
3. Хранилка под бэкапы vault650
4. 2 статических IP
5. VPN шлюз Basic
С рабочим графиком активности сервисов и автоматизацией вкл\выкл с 8:00 до 19:00

2,5 -3 $ в день. Итого проведя простые арифметические операции 3*31=93$ в месяц.

Естественно, что ваша инфраструктура может отличаться по стоимости от реализуемой, в зависимости от ресурсов которые вы задействуете, например на базе linux данный вопрос станет дешевле.

Надеюсь пример малой инфраструктуры для small bussines поможет вам сделать выбор и оценить достоинста и недостатки тех или иных решений, но для многих мобильный доступ к его ифнраструктуре, даже в случае изъятия ноутбуков с офиса может стать решающим.

С уважением ваш Liarsd.