История
Все началось с задачи обеспечить бесперебойную работу сервера 1С для производственного предприятия. На тот момент в компании программу «1С: Управление производственным предприятием» использовали около 50 человек. Ежедневно формируется:
-
Более 30 приходов на склад с более чем 100 позициями в документе.
-
Более 50 реализаций.
-
Номенклатурный справочник насчитывает более 10 000 позиций.
Производство автоматизировано, и в фоне выполняются более 10 заданий, которые реализуют бизнес-логику.
Основная проблема заключалась в том, что вся локальная инфраструктура строилась по принципу одного сервера. Само серверное оборудование на момент начала проекта эксплуатировалось более 5 лет.
Задача
В рамках проекта надо было решить несколько задач – обеспечить:
-
Стабильную работу системы в режиме 12 часов 6 дней в неделю.
-
Необходимый уровень производительности 1С.
-
Резервирование информации.
Решение
Так как оборудование было очень старым, для реализации проекта мы изначально предложили купить пару новых серверов и собрать на них инфраструктуру для 1С. С учетом всего оборудования, работ и лицензий бюджет составил более 2 млн рублей.
Спецификация оборудования и лицензий была такой:
Наименование |
Кол-во |
Цена, руб. |
Сумма, руб. |
Сервер HPE ProLiant DL325 (16 ядер x 2,40 ГГц, 32 ГБ ОЗУ, 2 x 400 ГБ SSD, 2 x 300 ГБ SAS, 4 Гбит LAN), 3 года гарантии |
2 |
727 740,00 |
1 455 480,00 |
Лицензия Windows Server Standard 2016 |
2 |
55 121,00 |
110 242,00 |
Клиентская лицензия Windows Server CAL 2016 |
50 |
1 827,00 |
91 350,00 |
Лицензия SQL Server Standard 2017 |
2 |
56 047,00 |
112 094,00 |
Клиентская лицензия на пользователя SQL CAL 2017 |
50 |
13 045,00 |
652 250,00 |
Итог |
2 421 416,00 |
Цены в пересчете на текущий (на 23 августа 2018 г.) курс и на ближайшие современные аналоги.
Предполагалось использовать два физических сервера с виртуализацией Hyper-V и репликацией виртуальных машин.
Руководство попросило представить альтернативы.
Поиски привели нас к Azure. Изучив документацию, мы предложили следующий вариант реализации виртуальной инфраструктуры:
Расчетная стоимость данной инфраструктуры составила:
Ресурс / Тариф |
Роль |
Кол-во |
Цена |
Сумма за месяц*, руб. |
Виртуальная машина F8 v2 (8 vCPU, 16 ГБ ОЗУ) |
Сервер 1С + SQL Server |
1 |
96,25 руб./час |
27 912,50 |
Хранилище Premium SSD 512 ГБ |
Диск для баз данных 1С |
1 |
5 033,75 руб./мес. |
5 033,75 |
Виртуальная машина E4 v3 (4 vCPU, 32 ГБ ОЗУ) |
Сервер RDS |
1 |
31,50 руб./час |
9 135,00 |
Хранилище Standard HDD 512 ГБ |
Диск для профилей пользователей |
1 |
3 610,00 руб./мес. |
3 610,00 |
Шлюз VPN |
VPN Site-to-Site |
1 |
1 642,50 руб./мес. |
1 642,50 |
Итог |
47 333,75 |
* Из расчета произведения 290 рабочих часов и цены за час.
Таким образом, необходимые ресурсы в Azure обходились бы примерно в 47 000 руб.
Ежемесячные расходы оказались более приемлемыми, и нам дали «зеленый свет» на реализацию.
Почему руководство согласилось на регулярные платежи, мы рассмотрели ниже.
К слову, проект был реализован более года назад, поэтому вся практика описана на примере демо-подписки.
Практика
Для создания инфраструктуры в Azure нам нужна подписка на сервис – ее можно приобрести у партнеров Microsoft, которых очень много, но в облаках разбираются далеко не все, или непосредственно у Microsoft, но тогда надо использовать реальную кредитную карту. Мы ограничимся демонстрационной подпиской. Переходим на портал https://azure.microsoft.com/ и регистрируемся...
После регистрации подписки попадаем на портал, где и будем создавать наши ресурсы и собирать из них инфраструктуру.
Первое, что нам понадобится – создать группу ресурсов. Группа ресурсов – это логическое объединение вычислительных мощностей. С помощью группы ресурсов Azure можно легко управлять всем, что есть внутри группы, едиными командами.
После этого создаем виртуальную сеть.
При создании сети важно продумать адресацию сети, от этого зависит, как мы будем объединять виртуальную и локальную сети в дальнейшем.
Сеть формируется достаточно быстро. Затем переходим к созданию виртуальной машины. Нам понадобится не только сама машина, но и SQL Server.
На этапе создания необходимо выбрать тарифный план виртуальной машины (или размер). Мы остановили выбор на серии Fv2, так как она оснащена ядрами на базе Intel Xeon Platinum 8168 (SkyLake) с тактовой частотой 2,7 ГГц и имеет соотношение 1:2 для памяти. Согласно описанию, данный тип машин оптимизирован для вычислений.
После ввода всех необходимых параметров Azure начинает создавать виртуальную машину. По окончании процесса необходимо подключить диск для данных. Так как данная серия поддерживает работы с SSD, его мы и будем использовать.
При необходимости и наличии правильного оборудования, организуем VPN-туннель с локальной сетью. Эту задачу лучше поручить сетевым администраторам. Со стороны Azure все достаточно просто.
Создаем шлюз VPN.
Далее необходимо создать VPN-подключение с локальной сетью. Переходим в соответствующий раздел созданного шлюза и вводим все необходимые данные. После чего должен установиться VPN-туннель с локальной сетью.
Итак, мы имеем сеть и подключенную к ней виртуальную машину с диском для данных. Машина запущена. Можем подключаться.
Пройдя авторизацию, переходим к русификации и обновлению системы. Далее загружаем необходимые дистрибутивы 1С и выполняем установку.
Устанавливаем необходимые компоненты.
После этого, чтобы продолжить, необходимо обеспечить лицензиями 1С нашу виртуальную машину. Есть несколько способов:
-
Используем аппаратный ключ, который пробрасываем в машину.
-
Используем программный ключ, который активируем в машине. В данном случае необходимо, чтобы под рукой всегда был резервный ПИН – всякое случается.
-
Разворачиваем сервер 1С с ролью линзирования, который будет раздавать лицензии.
В нашем случае мы используем аппаратный ключ, который пробрасываем в виртуальную машину. Приложений и способов достаточно много, и они подробно описаны на просторах сети.
Переходим к кластеру 1С. Предварительно настроим SQL на создание баз в правильных местах.
Процесс настройки кластера 1С ничем не отличается от аналогичного в локальной инфраструктуре.
Открываем консоль администрирования и создаем информационную базу.
Далее нам нужно решить, как будут работать пользователи. Вариантов всего два:
-
Если конфигурация 1С поддерживает тонкий клиент – используем его.
-
Если в нашем распоряжении только толстый клиент – используем RDS-сервер.
Разворачивание RDS для 1С опишем в другой статье, а сейчас расскажем, как публикуется тонкий клиент.
На нашем сервере добавляем роль и ставим необходимые компоненты IIS. Далее запускаем Конфигуратор 1С с правами администратора и переходим в Администрирование, Публикация на web-сервере. Заполняем форму. Нажимаем «Опубликовать». Обратите внимание, что должен быть установлен соответствующий компонент 1С.
Теперь можем проверить, что 1С запускается.
На этом моменте процедура разворачивание 1С в Azure закончена.
Теперь необходимо оптимизировать затраты на облако. Учитывая, что Azure ведет поминутный биллинг, самый простой способ – выключить виртуальную машину в нерабочее время. Для этого возвращаемся на портал и создаем сервис автоматизации.
Далее, импортируем RunBook из библиотеки и публикуем его.
Создаем расписание запуска Runbook и вводим параметры запуска – группу ресурсов и учетную запись.
Со стороны Azure мы получили виртуальную инфраструктуру, оптимизировали затраты. Остается в 1С изменить время запуска фоновых заданий, чтобы они отрабатывали, пока машина работает.
Про деньги
Поиск ответа на вопрос «Почему компании лучше тратить деньги регулярно, чем делать разовые платежи?» привел к финансистам, которые разъяснили следующее.
Поскольку предприятие при аренде мощностей не вынимает средства из оборота, а распределяет их во времени, компания компенсирует расходы, просто зарабатывая на «сэкономленных».
Изучая вопрос глубже, мы смогли рассчитать примерную экономию от аренды ресурсов. Но, прежде чем продолжить, надо понять одну важную вещь. Главное правило финансистов – деньги завтра дешевле, чем деньги сегодня. По сути это и есть тот факт, что компания, не вынимая деньги из оборота, продолжает на них зарабатывать. Эффективность, с которой компания это делает – рентабельность бизнеса. В нашем случае средняя рентабельность по году составляла около 20%.
Для работы серверного оборудования необходимы:
-
Электроэнергия.
-
Кондиционирование.
-
Коммерческая площадь.
-
Обслуживающий персонал.
-
ЗИП и т. д.
Стоимость коммерческой площади учитывать не будем, так как серверная все равно была. ЗИП тоже посчитать сложно, так как очень вероятностное событие – необходимость покупки запчастей.
В результате получилось, что совокупная стоимость локальных серверов составит 2 855 805,57 руб. за пять лет.
При этом ресурсы в Azure обойдутся в 1 816 339,34 руб. за те же пять лет.
Если построить график, получится следующая картина:
Или если посмотреть во времени, то так:
Расчеты показали, что в перспективе пяти лет размещение 1С в Azure обойдется на 36% дешевле локальной инфраструктуры.
Что может произойти с локальной инфраструктурой за пять лет? Потребуется ли обновлять ПО на серверах в течение пяти лет? А если понадобится больше ресурсов? А если меньше? При любом раскладе получается, что Azure обойдется дешевле.
Послесловие
Для описываемого проекта вопрос резервирования решили с помощью резервного копирования виртуальной машины и отдельно баз данных SQL Server, так как минимально допустимые SLA в Azure – 99,9%, а это всего 8 ч 45 мин. 57 с, что вполне устроило бизнес. Учитывая, что сервер работает не в режиме 24/7, а только 290 ч в месяц, возможный простой составил всего 3 ч 28 мин. 48 с.
Устроило и время на полное восстановление виртуальной машины из резервной копии - всего час с небольшим. Общее время на восстановление занимает около двух часов. Данные показатели оказались допустимыми.
Вопрос быстродействия решился сам собой. Мы не стали сильно заморачиваться и провели нагрузочное тестирование с помощью теста Гилева.
Результаты старой системы.
Результаты теста новой системы.
По оценкам пользователей, система стала работать в четыре раза быстрее. Ждем ваших оценок в комментариях!
Может быть полезным:
- https://info.microsoft.com/CE-AzureINFRA-CNTNT-FY18-05May-15-MicrosoftAzureplatform-MGC0002445_01Registration-ForminBody.html
- https://info.microsoft.com/CE-AzureINFRA-CNTNT-FY18-05May-20-DeploymentofEnterpriseontheMicrosoft-MGC0002460_01Registration-ForminBody.html
- https://info.microsoft.com/CE-AzureINFRA-CNTNT-FY18-05May-17-Deployment1CEnterpriseontheMicrosoftAzureplatform-MGC0002447_01Registration-ForminBody.html
- https://info.microsoft.com/CE-AzureINFRA-CNTNT-FY18-05May-21-EnterpriseontheMicrosoftAzureplatform-MGC0002461_01Registration-ForminBody.html