Лицензирование у Майкрософт непростое и многие считают, что в трехзвенной архитектуре могут существенно сэкономить, лицензируя в Microsoft SQL Server только одно подключение сервера приложений, не учитывая подключения клиентов к серверу приложений. Об ошибках, допускаемых при лицензировании по клиентам далее подробнее. По долгу службы иногда приходится разбираться в тонкостях лицензирования ПО этого вендора. Профессионалом в этом вопросе себя не считаю, поэтому комментарии приветствуются, для совместного установления истины.
MS SQL Server имеет несколько редакций, в продуктовой среде обычно используются Standard и Enterprise. Редакции отличаются набором функций и конфигурационными максимумами (кол-во ОЗУ, ядер). Standard ограничен 24-мя ядрами и 128 ГиБ ОЗУ на экземпляр.
Лицензия - это не программный компонент, а право использования программного продукта на обозначенных в соглашении условиях. Это юридический, а не технический термин.
Существуют два основных выпуска SQL Server, учитывающие уникальные потребности организаций и отдельных пользователей в функциях, производительности и стоимости:
выпуск Enterprise идеально подходит для критически важных приложений, которые требуют выполнения в памяти, расширенной защиты и высокой доступности;
в выпуске Standard присутствуют все функциональные возможности базы данных для приложений среднего уровня и киосков данных.
Два основных выпуска | ||
Сервер + клиентская лицензия (CAL)3 | Лицензии на ядра2 | |
Enterprise1 | ? | |
Standard | ? | ? |
1 Клиенты, которым требуется хранилище данных с интенсивной параллельной обработкой, получают доступ к Parallel Data Warehouse по своим лицензиям на ядра на выпуск Enterprise с покрытием Software Assurance. Parallel Data Warehouse — это часть Microsoft Analytics Platform System.
2 Выпуски, которые продаются по лицензиям на ядра, предлагаются в виде пакетов на два ядра.
3 Согласно модели лицензирования "Сервер + CAL" клиентские лицензии (CAL) требуются для каждого пользователя или устройства, которые обращаются к серверу. Подробные сведения см. в документе Условия для продуктов.
Для новых соглашений обе редакции могут быть лицензированы по вычислительной мощности (парами ядер, минимум 4 лицензии на каждое физическое ядро), лицензия “Сервер + клиентские лицензии” доступна только для Standard. Вокруг этой модели существует заблуждение, что при использовании сервера приложений можно сильно сэкономить, купив серверную лицензию и минимальное количество CAL. При этом используется аргумент, что приложение подключается к БД от имени одного пользователя и им хватит всего 1 CAL. Однако следует внимательно вчитаться в условия EULA - End User License Agreement. Соглашение, которое все внимательно читают мгновенно акцептуют, но именно оно определяет правила использования продуктов. Важно: клиентские лицензии могут приобретаться для пользователей или устройств. Если 75 конкретных пользователей используют 50 конкретных устройств - выгоднее по устройствам. Если 50 пользователей используют 90 устройств (ПК, планшет, смартфон и т.д.) - выгоднее 50 пользователей.
Рассмотрим на примере версии 2017, правила лицензирования других версий отличаются не принципиально. Внимательно изучим документ Microsoft SQL Server 2017 Licensing guide. Раздел Server+CAL licensing содержит важные примечания, одно из них:
Note:The use of hardware or software that reduces the number of devices or users that directly access or use the software (multiplexing/pooling) does not reduce the number of CALs required.
Здесь M$ вводит термин “мультиплексирование” подключений, когда пользователи подключаются к БД не напрямую, а через программного или аппаратного посредника. Этот способ не может использоваться для сокращения количества требуемых лицензий.
В правилах есть пояснение о мультиплексировании (Licensing SQL Server in a multiplexed application environment):
“Multiplexing” refers to the use of hardware or software to pool connections, reroute information, or reduce the number of devices or users that directly access or use SQL Server. Multiplexing can also include reducing the number of devices or users SQL Server directly manages.When licensing SQL Server software under the Server+CAL licensing model, users and devices that indirectly access SQL Server data through another application or hardware device still require SQL Server CALs.
Multiplexing does not reduce the number of Microsoft licenses required. Users are required to have the appropriate licenses, regardless of their direct or indirect connection to SQL Server.
Any user or device that accesses the server, files, data or content provided by the server that is made available through an automated process requires a SQL Server CAL.
The number of tiers of hardware or software between the SQL Server and the user or devices that ultimately use its data, services, or functionality does not affect the number of CALs required.
Итак, мультиплексирование не уменьшает требуемое количество лицензий. Пользователям требуется иметь соответствующие лицензии независимо от того подключаются ли они к серверу напрямую или опосредованно. Каждый пользователь или устройство, подключающееся к серверу, его файлам, данным или содержимому, должен иметь лицензию клиентского доступа.
Подробнее (и со сценариями в картинках) о мультиплексировании - на сайте M$.
Теперь давайте сравним цены на примере информационной системы для 200 и 500 пользователей, хранящей данные в MS SQL Server Std с 12 ядрами. Цены ориентировочные, взяты с сайта Майкрософт.
Вариант по пользователям (200): $899 + 200 * $209 = $42699.
Вариант по пользователям (500): $899 + 500 * $209 = $105399.
Вариант по ядрам: $3586 * 12 = $43032.
Как показали расчеты, эта схема выгодна до 200 пользователей, если больше - целесообразнее использовать по вычислительной мощности.
Для публичных сервисов (напр., веб-сервер) схема подключения по пользователям неприемлема, т.к. предел количества клиентов подсчету не поддается.
Лицензирование по клиентам может быть выгодно, если в вашей организации большое количество экземпляров MS SQL Server Standard. В этом случае могут оказаться дешевле клиентские лицензии для всех пользователей и устройств, поскольку на каждый дополнительный сервер в этом случае нужна будет только недорогая серверная лицензия:
Accessing multiple SQL Server databases and/or planning to scale out the use of SQL Server by adding new Standard Edition servers over time. Once customers have purchased the necessary CALs, additional server licenses are only needed for new server system deployments.
Планируя свою ИТ инфраструктуру, не забывайте делать расчеты - они помогут выбрать более выгодный вариант.
Помните, без SA/EA(S) вы будете ограничены той версией MS SQL Srv, какой версии у вас CAL. Если куплены CAL 2017, для запуска сервера 2019 потребуются новые лицензии.
Краткая выжимка из правил лицензирования на русском также есть здесь.
Таким образом, жить по “облегченной” схеме лицензирования можно только до первого аудита ПО, который корпорация Майкрософт периодически проводит среди своих заказчиков (это право прописано в EULA). Напомню, что нарушение авторских и смежных прав - ст. 146 УК РФ.
Резюмируя: схема лицензирования по клиентам требует лицензирования всех клиентов, использующих данные из экземпляра СУБД, а не одного, от имени которого технически выполняется подключение к БД. Если сервер приложений в сумме обслуживает до 250 пользователей, то и CAL необходимо 250. Когда подсчет количества пользователей затруднен или невозможен, Майкрософт рекомендует использовать схему по ядрам.
Всем мира, внимательно изучайте правила лицензирования, считайте и не нарушайте закон! :)
osipov_dv
вопрос на засыпку - как должен лицензироваться STD по ядрам, если на 12 ядерной машине ему назначены только 8 ядер?
imichael Автор
По ядрам — не в тему статьи, но M$ дает четкий ответ на этот вопрос:
When running SQL Server in a physical OSE, all physical cores on the server must be licensed. Т.е. лицензировать нужно по физическим ядрам.
Но если речь о ВМ, то лицензировать следует все виртуальные ядра:
Similar to the Per Core licensing model in physical OSEs, all virtual cores (v-cores) supporting virtual OSEs that are running instances of SQL Server 2017 software must be licensed accordingly.
Что касается нескольких экземпляров в
одной ОСпростите, одном операционном окружении :), то ограничений на их кол-во нет:Each server license allows customers to run any number of SQL Server instances in a single OSE, either physical or virtual.
osipov_dv
Печаль... любимая схема 1сников, в которой сервер приложений находится на сервере БД, и разнесены по ресурсам, становится очень дорогой. А виртуализировать сервер БД не очень здравая идея - потом проблемы с производительностью не понятно где искать.
imichael Автор
В том посыл статьи и состоял - открыть глаза на особенности лицензирования Майкрософт. Юристов для составления схем и соглашений в МС выбирали грамотно. Некоторые недобросовестные партнеры (это вы минусуете мне карму? :)) предлагают такие схемы и некоторые невнимательные заказчики на это соглашаются. Но отвечать при проверке заказчику, а не продавцу.
Касаемо виртуализации - действительно, не все однозначно. Однако тесты показывают неплохие результаты и для 1С. В энтерпрайзе у виртуализации задача несколько смещается от сверхпроизводительности в сторону доступности. Как быстро вы восстановите работу своего сервиса в случае аппаратного сбоя? С виртуализацией это лишь время перезапуска ВМ на другой ноде.
osipov_dv
доступность реализуется не виртуализацией а кластером/миррорингом, это не задача виртуализации. Что физический сервер, что виртуальный - восстанавливаются из бэкапа.
imichael Автор
Имхо, слишком обширная тема для комментов. Кластер часто дорог, в каждом софте еще и реализуется по своему - в итоге на поддержку нужно больше спецов. В случае краха хоста ВМ тихо запускается на другой ноде, никакого восстановления из архива не нужно - для виртуалки это выглядит, будто нажали "ресет". Другое дело, что если у 1С (ну чисто энтерпрайзный подход) программный ключ, он может увидеть изменение аппаратной конфигурации и встать в позу. Да и заметка не про 1С. :)
зы Для полноценной работы failover в виртуализации нужен shared storage, напр., СХД подключенная к хостам по FC.
osipov_dv
интересно как он запустится на другом хосте без shared storage... да и Mirroring не требует shared, равно как и always on.
PS: ах да, репликация... нет не надо :)
uaggster
До установки PostgreSQL или после?
imichael Автор
Прошу прощения, PostgreSQL мне импонирует много больше, но какое отношение к теме статьи?
uaggster
Ну… Это шутка. С долей шутки, разумеется.