Теперь бухгалтерия меня обожает:

  • планирование установки 1С Сервера и обзор его отказоустойчивости, детали, которые необходимо знать, используя виртуализацию 1С;
  • отдельная глава по HASP-ключам 1С Сервера и клиентов, программным лицензиям;
  • условная отказоустойчивость СЛК (сервер лицензирования конфигураций) и HASP-сервера;
  • установка 1С и всей причастной к 1С инфраструктуры
  • автоматическая установка клиентов 1С Предприятие на рабочих станциях через групповые политики;
  • автоматическое прописывание списков баз данных (общий лист баз, который можно позже удобно редактировать в одном месте);
  • ускоряем сеть: настройка nethasp.ini на клиентских станциях;
  • работаем с 1С и Перенаправленными папками пользователей (Folder Redirection) и перемещаемым профилем (Roaming User Profile).

1С Сервер: теория и планирование

1s-infrastructure

1С Предприятие состоит из двух частей: клиентская часть и серверная часть. Клиентская часть умеет самостоятельно работать без сервера (в режиме «клиент-файловый вариант», где файлы базы данных храняться на локальном диске компьютера или на шаре файлового сервера), однако если с базой одновременно работают несколько людей, скорость работы очень сильно снижается с каждым новым пользователем. Прошу заметить, важно не общее количество пользователей, использующих ту или иную базу 1С, а количество работающих коллег с одной и той же базой в одно время.

1c_works

Серверная часть 1С нужна только тогда, когда в компании возникает ситуация, где с одной базой работают более одного человека. В этом случае каждый новый посетитель базы будет снижать скорость ее работы незначительно, и как раз для этого и придумывался 1С Сервер. Серверная часть работает с сервером с Windows или Linux, но на Линуксе у меня есть подозрение на шаманство с бубном относительно настройки доменной авторизации при входе в информационные базы (это только подозрения, зря не провел тесты в свое время в своей тестовой системе). А эта фича очень удобная и востребованна. Кроме того, есть две версии 1С Сервера: 32-битная (прекрасно работает) и 64-битная (в 2 раза дороже и на моей практике нигде еще плюсы 64-битной версии не проявились). 32-битная версия также работает в 64-разрядной ОС. 1С сервер прекрасно работает в виртуальной среде с оговорками по системе лицензирования (об этом ниже). Стоит отметить факт, что в операционной системе Windows система 1С Сервера работает стабильнее (по многим причинам, вплоть до того, каким образом и на каких системах тестируются конфигурации 1С).

Серверная часть работает с СУБД на основе:

  • MS SQL. Версия не важна, поддерживаются 2000 — 2012 версии, релиз подойдет даже бесплатный Express (он жестко ограничен размером базы данных, в MS SQL 2012 Express это не более 10 Гб на базу, что реально перечеркивает использование больших конфигураций). Очень сильно рекомендуется использовать именно эту СУБД по причине известной: разработчики конфигураций для 1С затачивают свои решения для этой СУБД. Многие сломали копья, обсуждая неоптимальные запросы в базу данных, при программировании конфигураций. Однако MS SQL работает с этими конфигурациями на порядок лучше бесплатной СУБД PostgreSQL (порядок — это в 10 раз), и не потому что PostgreSQL хуже.
  • PostgreSQL. Бесплатная СУБД уровня Enterprise, умеющая кластеризоваться и работать с 1С Сервером (необходимо ставить версию, пропатченную 1С-программистами, ее можно найти на http://users.v8.1c.ru). Postgre SQL работает с 1С медленно, особенно PostgreSQL на Windows. На практике, использовал виртуальную машину с Линуксом и Постгри, на хорошем двупроцессорном сервере с SAS дисками 8 штук и рейдом 10: решение получило рекордно возможную производительность (по отзывам форумчан), способную обслуживать до 40 конкурентных пользователей в 80 базах 1С Сервера (версии 8.2 и немного 8.1). Однако 1С «не летал», особенно в отчетные периоды бухгалтерии. Особенно, когда postgresql в фоне начинал проверять свои базы после отключения питания сервера. В итоге у меня на одну самую большую базу приходилось 25 конкурентных пользователей (по офису их набирается 100, но одновременно в пике работало до 25 человек), и Postgre справлялся с задачей. Но это абсолютный потолок, мне кажется. Выжимать скорость работы с PostgreSQL и 1C Сервером надо больше на стороне оптимизации кода конфигураций, ежели апгрейда серверного оборудования (был опыт в этом четко убедиться), но это уже совсем другая песня со слетом с технической поддержки конфигурации, собственной командой 1С-программистов в штате и совершенно другого бюджета, с лихвой переваливающую за стоимость MS SQL. Ну и последнее: отказоустойчивость PostgreSQL, пропатченного командой 1С (а необходимо использовать только патченный Postgre), работает только на СУБД, установленной на Линукс;
  • IBM DB2. Есть бесплатные версии этой СУБД (IBM DB2 Express-C), ограниченные выполнением процессов СУБД 2 процессорными ядрами и 4 Гб ОЗУ. Express-C не поддается кластеризации, и по сути применение решения IBM для 1С-Сервера мне совсем не интересно. Однако для меня это незнакомый продукт, ничего про него сказать не могу, тем более, как это все работает с 1С Сервером;
  • Oracle Database. Новые релизы 1С Сервера стали поддерживать эту очень дорогую СУБД. На самом деле я озадачен минимальным процентом внедрений 1С Сервера с Oracle Database. 1С Платформа как таковая — решение доступное по средствам и со всеми присущими ему минусами (в том числе низкой производительности). Oracle DB — решение очень дорогое для компаний-гигантов, где, на самом деле, уже должны быть собственные разработки собственных систем собственным отделом программирования департамента ИТ. Я думаю, все поняли, на что я намекаю. Реализацию 1С Сервера с Ораклом я не практиковал, ничего больше об этой реализации сказать не могу.

Отказоустойчивость 1С Сервера

Отказоустойчивость определяется самым слабым звеном цепочки. Поэтому перечислим их все и будем разговаривать о каждом компоненте отдельно:

1c_failover-scheme

  1. 1С Сервер. Служба, работающая в операционной системе, принимающая данные от клиентов 1С и работающая с базой данных на СУБД. Кластеризуется установкой второго 1С Сервера. В итоге должно быть две и более ноды 1С сервера. Точно также потребуется две лицензии на 1С Сервер (32-битная или 64-битная). Есть еще одна реализация отказоустойчивости: работа 1С Сервера в виртуальной среде на отказоустойчивых гипервизорах, что дает нам право использовать только 1 лицензию 1С Сервера и иметь достаточную надежность;
  2. СУБД хранит данные баз, и соответственно, также должна быть высокодоступной. А это кластер из MS SQL или PostgreSQL (IBM DB2 и Oracle DB я не рассматривать по причине отсутствия практического опыта реализации 1С с ними). В этой статье не планируется описывать вопросы кластеризации SQL, однако материал о кластере MS SQL 2012 и PostgreSQL 9.1-9.2 я планирую вынести в отдельную статью позже. Точно также как и 1С Сервер, СУБД можно сделать отказоустойчивой, поместив ее в виртуальную среду на отказоустойчивых гипервизорах.
  3. Лицензирование. Плохо поддается отказоустойчивости. Выделил вопросы лицензирования в отдельную графу ниже.

Виртуализация 1С Сервера

1С Сервер прекрасно работает в виртуальной среде на любом гипервизоре. Есть некоторые моменты касательно лицензирования 1С, о которых стоит помнить, планируя 1С Сервер в виртуальной машине. Все эти моменты описаны в отдельной главе ниже.

Лицензирование 1С

Лицензирование делится на лицензирование 1С Сервера (серверной части), 1С Клиентов (клиентские лицензии), и конфигураций 1С (некоторые конфигурации).

Лицензирование 1С Сервера

У 1С Сервера (серверные лицензии) бывают программные и аппаратные лицензии. Можно выбрать тип лицензии при ее покупке: или листок с серийным номером и кодом активации, либо USB-устройство (HASP) с лицензией внутри.

  • Программные лицензии работают и активируются, но после этого виртуалку нельзя переместить на другой хост. В случае, когда виртуальная машина мигрирует на другую ноду виртуального кластера, служба 1С Сервера не запустится и будет ругаться на лицензию. Все это говорит о том, что программная лицензия не подходит для отказоустойчивости на уровне виртуальной машины 1с сервера. Почему все так? Потому что программная лицензия, при активации запоминает модель CPU, ID материнской платы, размер жесткого диска (можно изменить в сторону увеличения), номер ОС и дату ее установки и целую серию других параметров, половина из которых сменится, если виртуалка смигрирует на другой компьютер.
  • Аппаратные лицензии. В 2013 году стали стоить дороже программных по непонятным мне причинам. Какой-то черный маркетинг, мне кажется. Аппаратные лицензии — это USB-устройства. Для 1С Сервера USB-ключ с лицензией необходимо установить локально на 1С Сервер. Если сервер 1С не виртуализирован — проблем не возникает. Однако в случае виртуальной машины, необходимо «пробросить» ключ в виртуалку. Это умеет делать ESX(i) из коробки. Виртуалка получает проброшенный USB-ключ и прекрасно работает. НО! В момент миграции виртуальной машины на другой компьютер, виртуалка потеряет USB-ключ, воткнутый в первый ESX(i). 1С Сервер не запустится, чем перечеркивает все вкусности виртуального кластера. Ок, есть еще специальные девайсы и ПО, которое может пробросить любой USB через сеть в любой компьютер или виртуалку. На практике очень хорошо себя зарекомендовал софт USB Redirector за 80 баксов на 2 USB-устройства, который пробросит лицензию в 1С Сервер, и виртуалка последнего может «плавать» по нодам Hyper-V кластера или ESX(i) как ей заблагорассудится. Но опять возникает НО! В этом случае USB Redirector является точкой отказа, слабым звеном. Как организовать его работу в угоду требований к отказоустойчивости? Давайте поговорим подробнее
  • USB Redirector: бъемся насмерть с ограничениями вопросов лицензирования 1С Сервера. USB Redirector (или его аналог) — это специальный софт, который ставится «серверной» частью на компьютер с USB-портами (это может быть старый компьютер с Windows из пыльной кладовки), и «клиентской» — на виртуалку с 1С Сервером. Настраиваем софт, проверяем автозапуск службы USB Redirector-a и все работает (не забываем на 1С Сервер поставить драйвера защиты HASP). Теперь об отказоустойчивости: чтобы гарантировать, что USB-ключ с лицензией добирается до 1С Сервера, нужно кластеризовать «серверную» часть USB Redirector-a. Но как, если у нас всего один ключ с лицензией 1С Сервера?! Покупать второй ключ, покупать второй USB Redirector и настраивать на прокидывание второго ключа! Далеко не каждый позволит себе купить две лицензии 1С Сервера, и пойдет на любые ухищрения, чтобы обойти ограничения системы лицензирования 1С. И я один из них: я собрал два одинаковых старых компьютера с Windows 7, поставил на обоих USB Redirector, в оба по-очереди повтыкал USB-ключи и настроил проброс в виртуальный 1С Сервер. Оба сервера у меня теперь сервера лицензирования LicenseServer01 и LicenseServer02. Теперь при падении одного из них, система перестанет работать до тех пор, пока я не схожу в серверную и не переставлю ключи из одного компа в другой (а чтобы не запутаться в портах, ибо ключи надо строго втыкать в порты, на которых ты уже настроил пробросы, я подписал и ключи, и порты). Конечно, такой подход настолько ограничивает возможности «высокой доступности», что все-таки следует хотя бы рассмотреть вариант приобретения второй лицензии 1С Сервера. Представим, у нас на руках 2 ключа с лицензиями, два USB Redirector-а, и все настроено и даже работает после отказа одного из компьютеров лицензирования. А «нафига попу наган, если он не хулиган?» А давайте теперь посмотрим глобальнее: если у тебя куплено два ключа 1С Сервера, не проще ли установить два не виртуализированных сервера 1С и повтыкать в них локальные USB-ключи, собрать из них кластер инструментами самого 1С и будет тебе щасте? Вот как нас ограничивает 1С со своей не самой удачной системой лицензирования!

Лицензирование 1С Клиентов

1С Клиенты — это программы 1С, которые запускаются на рабочих станциях конечных пользователей. Клиентские программы 1С тоже необходимо лицензировать, и здесь тоже бывают как программные, так  и аппаратные лицензии. Можно выбрать тип лицензии при ее покупке: или листок с серийным номером и кодом активации, либо USB-устройство (HASP) с лицензиями внутри.

  • Программные лицензии могут быть активированы в двух местах: на 1С Сервере (тогда сервер будет выдавать свободные клиентские лицензии на каждую сессию с сервером), или на компьютере пользователя (одна лицензия на любое количество сессий с 1С Сервером + права запуска файловой базы из шары файлового сервера или с локального жесткого диска) . В случае, когда компьютер у пользователя меняется, программная лицензия слетает: при ее активации запоминается CPU, ID материнской платы, размер жесткого диска (можно изменить в сторону увеличения), номер ОС и дату ее установки и целую серию других параметров. Переактивировать туже программную лицензию 1С клиента можно ограниченное количество раз: в бумажке с лицензиями указано всего 3 кода активации, кроме того, «резервные» коды активации можно получить по запросу в техподдержку 1С, но вы окажетесь на карандаше.
  • В отличие от серверной лицензии, аппаратный HASP-ключ может содержать разное количество лицензий (5 клиентских лицензий, 10, 20 и т.д.) и может быть установлен на любой компьютер в локальной сети. Этот компьютер будет «раздавать» лицензии 1С клиентам с помощью софта HASP Licence Manager. Таким образом, на рабочих станциях пользователей 1С ни USB-ключ, ни драйвера ключа защиты устанавливать не требуется. Любой компьютер в сети может получить лицензию от HASP Licence Manager. Это удобно: 1С Предприятие установлено на всех компьютерах организации, при этом не нарушаются условия лицензирования 1С. Но одновременно с 1С не должно работать более n-числа компьютеров в локальной сети, где n-это количество клиентских лицензий HASP-ключа. При этом каждый компьютер, получающий лицензию, имеет право запускать неограниченное количество баз. Для сервера HASP License Manager логично использовать уже имеющийся у меня LicenseServer01 и LicenseServer02, которые используются для проброса серверного USB-ключа 1С в соответствующую виртуалку. У меня один HASP-ключ, установленный в LicenseServer01. Когда пользователей 1С станет больше, я куплю дополнительный HASP-ключ и вставлю его в LicenseServer02. 1С Клиенты поймут, что в сети два сервера лицензий и будут брать лицензию с того сервера, где есть свободная лицензия. Если один из серверов выйдет из строя, второй продолжит раздавать лицензии по закону «кто первый — того и тапки».

Лицензирование: Best Practice

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

Для виртуализированного 1С Сервера только аппаратная лицензия

Причины: программная лицензия не позволит запустить 1С Сервер на другом гипервизоре без переактивации. Каждая миграция требует переактивации, а ввиду ее количественной ограниченности, заставляет использовать аппаратный USB-ключ Достоинства: простота переноса лицензии, требуется только подключить USB-ключ к серверу. Недостатки: приходится «пробрасывать» USB-ключ на виртуальную машину, что задействует дополнительный компьютер или специальное оборудование. Недостаток нивелируется тем, что на этом же компьютере можно развернуть HASP License Manager для клиентских лицензий

Клиентские лицензии 1С только аппаратные ключи

Причины: программные лицензии надо переактивировать при смене компьютера, что неудобно. Программные лицензии, установленные на сервер, тратятся по схеме «лицензия-на-открытую-базу», когда как остальные способы — «лицензия-на-компьютер-где-открывается-неограниченное-количество-баз». В отличие от аппаратной лицензии, количество программных лицензий ограничивает количество компьютеров, на которые можно установить и активировать для запуска 1С Предприятие. Достоинства: удобство работы — каждый компьютер офиса может работать с 1С, заняв конкурентную лицензию у HASP License Manager. Нет необходимость в администрировании лицензий, их переносе и переактивации. Недостатки: требуется компьютер — сервер для запуска HASP License Manager. Нивелируется тем, что на этом же компьютере можно развернуть проброс USB-ключа для 1С Сервера.

Лицензирование конфигураций: СЛК, Рарус и т.д.

Существуют некоторые конфигурации, которые отдельно лицензируются. Для таких конфигураций существуют «Катрановские» USB-ключи и очень редко программные лицензии. Каждый вендор, выпускающий свою продукцию, вправе воспользоваться СЛК (система лицензирования конфигураций) — специальный софт, написанный 1С-ом, контролирующий количество пользователей, работающих с определенной конфигурацией. Однако некоторые производители конфигураций предпочитают использовать свой софт контроля лицензирования, к примеру, Рарус. Все эти программы ставятся на любой компьютер в локальной сети. Адрес этого компьютера указывается при первом запуске конфигурации на рабочем месте пользователя 1С (уже внутри открытой информационной базы), и в момент запуска базы, 1С Клиент обращается за информацией о лицензировании к этому компьютеру. Подобный софт, я, конечно же поставил на имеющиеся у меня LicenseServer01 и LicenseServer02, которые уже используются для проброса серверной лицензии и раздачи клиентских лицензий HASP License Manager. Сейчас у меня только лишь в одном LicenseServer01 воткнуты ключи конфигураций. Ни о какой отказоустойчивости серверов лицензирования речи быть не может. Даже если  приобрести второй комплект лицензий конфигураций, который можно будет установить в LicenseServer02, настроить 1С Клиент для использования ДВУХ LicenseServer невозможно изначально! Используя DNS Round-Robin A-запись, мы получим результат, когда лицензирование работает абы-как: то не может подключиться к серверу лицензирования, то подключается к серверу, где лицензии закончились, то исправно получает лицензии… Наколенное решение — держать за пазухой уже настроенный на ключи конфигураций резервный сервер лицензирования, причем выключенный, с тем же ip-адресом, что и основной СЛК. Чтобы в аварийный момент придти руками перетыкнуть USB-ключи и включить этот cold backup server. Не айс, товарищи! Даже если приобрести лицензии ровно в два раза больше требующегося количества и поделить их на два СЛК-сервера, это не гарантирует успешной выдачи лицензий в случае выхода из строя одного из СЛК до тех пор, пока оба СЛК не будут работать на Windows Server с Failover Cluster, где определенный ip-адрес в качестве ресурса роли кластера будет мигрировать от одной ноды к другой, при этом запуская службу СЛК только там, где ip-адрес назначен. Но это же совсем другие деньги…

Установка 1С Сервера и инфраструктуры

1c_install01
Приступим к установке 1С Сервера. На картинке видна иллюстрация шагов разворачивания системы. В данной статье я не буду рассматривать тонкости разворачивания гипервизора и его кластера. Отмечу лишь факт, что 1С Сервер прекрасно работает в виртуальной среде в любом гипервизоре, кластеризован он или нет.

  1. Итак, начнем с инсталляции и обновлении ОС (я выбрал Windows 2003 R2 x64 по причине имеющейся лицензии на него и более 4 Гб оперативной памяти). Никаких особых требований к данному пункту нет. 32-битный 1С Сервер работает на 64-разярядной ОС.
  2. Ввод сервера в домен. Необходимо для работы прозрачной авторизации (доменная авторизация при запуске 1С клиента на доменных компьютерах — автоматический логон в информационную базу 1С).
  3. Установка 1С Платформы для Windows: скачать, распаковать и запустить setup.exe. При установке выбрать следующие компоненты: «Сервер 1С:Предприятия»; «Интерфейсы на различных языках — Русский» (по-желанию). Остальные компоненты на сервере совсем не нужны. В следующем окне спросит об учетной записи, из под которой запускать сервер 1С. Следует выбрать любую существующую локальную учетку компьютера (инсталлятор не умеет указывать доменную учетку, и это мы сделаем при первой же возможности вручную). Далее — установить драйвер защиты (поставиль галку). Инсталлятор начнет работу, но в конце его выполнения может возникнуть ошибка запуска службы 1С Сервера. Это не страшно. Идем в оснастку служб, ищем «Агент 1С Сервера», в свойствах указываем учетную запись домена, из под которой хотим запускать сервис (рекомендую создать отдельную учетку без каких-либо прав доступа), и параметры восстановления службы (перезапуск при сбое). Пока не запускаем службу. Сначала надо зайти в директорию C:\Program Files\1Cv82 и дать в ней полные права для нашей учетной записи службы. Кроме того, необходимо зайти в консоль «Локальная политика безопасности» — Параметры безопасности — Локальные политики — Назначение прав пользователя. В графы «Вход в качестве пакетного задания» и «Вход в качестве службы» добавить учетную запись службы 1С Сервера. После этого службу можно запустить.
  4. Открыть консоль управления 1С Сервером: Пуск — Все программы — 1С Предприятие — Дополнительно — Администрирование серверов 1С Предприятия. Добавить сервер 1С по имени компьютера, задать пароли Администратора на уровне сервера и на уровне кластера. В свойствах кластера указать параметры как показано на скриншоте.
    1c_install01-1
  5. Добавить новый рабочий процесс:
    1c_install01-2
  6. После этого — секрет фирмы: потушить службу Агента 1С Предприятие, и отредактровать файл: C:\Program Files (x86)\1cv82\srvinfo\srvribrg.lst таким образом, чтобы сменить NETBIOS имя сервера на DNS-имя службы 1С Сервера (перед этим его надо придумать и зарегистрировать во внутреннем DNS-сервере в качестве A-записи). У меня это имя фигурирует как 1CEntServer01.itisok.ru.

Пример моего файла srvribrg.lst:

Далее по такому же образу и подобию отредактировать файл C:\Program Files (x86)\1cv82\srvinfo\reg_1541\1CV8Reg.lst, сменив имена на более подходящие. В этом файле помимо настроек служб 1С Сервера, хранятся данные об информационных базах. Каждая запись информационной базы имеет свой sID, который менять нельзя (возникнут ошибки на клиентской стороне). Я приведу пример своего файла на свежеустановленном 1С Сервере без информационных баз.

Пример моего файла 1CV8Reg.lst:

Редактирование файлов необходимо для смены имен кластеров и имен рабочих процессов, что невозможно сделать через консоль. Теперь можно запустить службы и проверить все изменения, запустив консоль управления 1С Сервера. 1С Сервер установлен и настроен. В него можно прописывать или создавать информационные базы через ту же консоль 1С Сервера.

Ждите завершения написания статьи… Скоро будут пополнения, а пока немного фана: