Печать (Ctrl+P)

Данная статья содержит описание некоторых элементов администрирования системы «1С:Предприятие», характерных для клиент-серверного варианта работы системы с Microsoft SQL Server 2012:

Создание резервной копии в клиент-серверном варианте

Администрирование кластера серверов

Консоль или утилита администрирования кластеров 1cv8 servers.msc представляет собой подключаемый модуль MMC (Microsoft Management Console), и может быть использована на компьютерах, на которых установлено соответствующее программное обеспечение. По умолчанию устанавливается в папке C:\Program Files (x86)\1cv8\common

Утилита администрирования кластеров предназначена для решения следующих задач:

  • создание, изменение и удаление кластеров серверов;
  • модификация существующих кластеров: создание, изменение параметров и удаление рабочих серверов, назначение требований функциональности к рабочим серверам;
  • установка уровня отказоустойчивости кластера;
  • ручная корректировка нагрузки на отдельные рабочие серверы;
  • управление списками администраторов центральных серверов кластеров и списками администраторов кластеров;
  • мониторинг соединений пользователей с информационными базами и служебных соединений;
  • отключение пользователей от информационной базы;
  • мониторинг объектных блокировок 1С:Предприятия 8 и блокировок клиентского соединения;
  • оперативный анализ транзакционных блокировок системы управления базами данных;
  • управление блокировкой установки соединений пользователей с информационной базой;
  • управление блокировкой выполнения регламентных заданий.

В этой статье я буду только рассматривать регистрацию новой информационной базы

Регистрация новой информационной базы

Для регистрации новой информационной базы с помощью утилиты администрирования кластера серверов следует выбрать в дереве центральных серверов требуемый центральный сервер, требуемый кластер, зарегистрированный на этом сервере, ветку Информационные базы и выполнить команду контекстного меню Создать – Информационная база или аналогичную команду главного меню утилиты.

В результате выполнения команды на экране появится диалог свойств информационной базы.

Параметры информационной базы эквивалентны параметрам новой информационной базы, создаваемой с помощью окна запуска «1С:Предприятия».

Тип СУБД : Microsoft SQL Server.

Сервер баз данных : имя сервера. Может задаваться именем компьютера (если на компьютере установлен один экземпляр сервера) или именем конкретного экземпляра (если установлено несколько экземпляров). Например, Server/instance. Если сервер «1С:Предприятия» и Microsoft SQL Server расположены на одном компьютере, и для Microsoft SQL Server установлен Native Client (собственный клиент), то имеется возможность использовать для связи серверов протокол SHARED MEMORY. Для этого необходимо перед именем Microsoft SQL Server указать префикс lpc:. В этом случае имя сервера СУБД будет выглядеть следующим образом: lpc:Server/instance

Имя базы данных : первым символом имени базы данных может быть буква латинского алфавита, а также символ «_». Последующими символами могут быть буквы латинского алфавита, цифры, а также символы «_», «$». Длина имени ограничена 63 символами. В имени недопустимы пробелы. Имя не может быть зарезервированным словом языка запросов сервера баз данных. В имени базы данных нельзя использовать следующие символы: «<», «>», «#», «%», «”», «{», «}», «[»,«]»,«|»,«\»,«^»,«`», а также символы с кодами от 0 до 31 и 127

Пользователь базы данных : имя пользователя сервера баз данных, от лица которого будет осуществляться доступ к базе данных. Существенно, чтобы указанный пользователь был либо администратором сервера баз данных (sa), либо владельцем базы данных (если она уже существует), для того чтобы в дальнейшем беспрепятственно модифицировать структуру выбранной базы данных. В последнем случае этот пользователь должен иметь доступ на чтение к базе данных master и полный доступ к базе данных tempdb. Кроме перечисленного, указанный пользователь должен быть членом фиксированной серверной роли processadmin или sysadmin.

Пароль пользователя : пароль пользователя, от лица которого будет выполняться доступ к базе данных.

Смещение дат – 0 или 2000. Данный параметр определяет число лет, которое будет прибавляться к датам при их сохранении в базе данных Microsoft SQL Server и вычитаться при их извлечении. Наличие данного параметра определяется особенностями хранения дат в Microsoft SQL Server. Тип DATETIME, используемый в Microsoft SQL Server, позволяет хранить даты в диапазоне с 1 января 1753 года по 31 декабря 9999 года. И если при работе с информационной базой может возникнуть необходимость хранения дат, предшествующих нижней границе данного диапазона, то в качестве значения параметра следует выбрать 2000. Если же такие даты встречаться не будут, то в качестве смещения дат можно выбрать 0. После создания информационной базы значение данного параметра не может быть изменено.

ВНИМАНИЕ! Если в прикладном решении используются регистры накопления или регистры бухгалтерии, то в поле Смещение дат необходимо установить значение 2000. Если при создании базы данных в это поле было введено значение 0, то следует выгрузить информационную базу в файл, заново создать базу данных с указанием в поле Смещение дат значения 2000 и выполнить загрузку информационной базы

ВНИМАНИЕ! Имена информационных баз должны быть уникальными в пределах одного кластера. В процессе регистрации новой информационной базы система проверяет, существует ли на указанном сервере баз данных база с таким именем. Если база существует, то будет установлено соединение с ней. Если существующая база данных уже содержит данные информационной базы «1С:Предприятия», то будет установлена связь с уже существующей информационной базой. А если база данных не содержит данных информационной базы, то в ней будет проинициализирована новая информационная база «1С:Предприятия».

Ошибка при выполнении операции с информационной базой

В процессе подключения к БД SQL могут вылетать различные ошибки создания или соединения. Например, если выходит следующая ошибка:

В этом случае была попытка создания информационной базы и сервер предприятия не мог установить соединиться с Microsoft SQL Server. Нужно проверить:

  • Параметры аутентификации пользователя (Имя пароль и права на создание БД);
  • Соблюдает ли имя базы данных правила имен;
  • Правильно ли задано имя сервера базы данных;
  • Соответствует тип аутентификации пользователя. Возможно, пользователь вошел под именем пользователя sql server, а в настройках SQL стоит не тот тип аутентификации пользователя.

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

В представленной статье мы рассмотрим основные изменения в блоке администрирования, направленные на повышение эффективности работы с программным решением.

Организация разделов меню администрирования

Обратимся к разделу «Администрирование». В нем объекты расположены по группам:

  • Настройки программы
  • Сервис
  • Информация

Набор и состав каждой группы может отличаться у различных пользователей, поскольку интерфейс «Такси» подлежит простой настройке и в первоначальной поставке конфигурации присутствуют только те элементы меню, которые предусмотрены по умолчанию. Чтобы добавить новую позицию, нужно в разделе «Администрирование» нажать кнопку «Настройка навигации», она расположена в верхнем правом углу (под панелью инструментов).

Группа «Настройки программы» содержит подгруппу «Поддержка и обслуживание», которая включает все основные механизмы, предназначенные для контроля состояния программы, резервного копирования и восстановления, обновления версий и оптимизации быстродействия


В системе также присутствуют новые отчеты для возможности администрирования программы. Список этих отчетов можно открыть, нажав на строку «Отчеты администратора» в блоке «Отчеты и обработки»

Перед Вами откроется окно со списком основных отчетов, предназначенных для анализа активности пользователей и контроля журнала, в котором регистрируются действия пользователей


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


Для мониторинга активности пользователей относительно их работы с объектами системы, нужно будет произвести формирование отчета «Анализ активности пользователей»

Резервное копирование и восстановление

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

Теперь, помимо возможности выполнения проверки прямо из пользовательского режима на наличие активных пользователей, можно также сохранять данные.

При этом можно настраивать запуск расписания сохранения базы данных. Данный параметр находится в меню «Настройка резервного копирования», где мы можем указать необходимые значения

Оценка производительности

Чтобы выполнить анализ и оценку производительности системы, нам потребуется установить галочку напротив «Оценка производительности» в разделе поддержки и обслуживания, и затем перейти к настройкам расчета показателей

Итак, мы ознакомились с основными изменениями, которые реализованы в блоке по администрированию системы «1С:Бухгалетрия 8.3» (редакция 3.0) на базе интерфейса «Такси».

Автоматизированная система 1С Предприятия позволяет осуществлять управленческий, торговый, бухгалтерский учет, получать необходимые отчеты. Предусмотрены два типа работы программы:

  • Файловый - 1С устанавливается только на один компьютер, работать с базами данных не может ни один менеджер. Этот вариант подходит для малых компаний с небольшим торговым оборотом.
  • Клиент-версия. В работе с 1С задействована система пользователей, базы данных расположены на одном компьютере, с которым связаны все остальные. Вариант работы имеет трехуровневую архитектуру, состоящую из клиентского приложения, сервера 1С Предприятия и баз данных в формате MS SQL Server или PostgreSQL. В этом случае применяется администрирование серверов 1С, чтобы обеспечить правильную настройку.

Консоль администрирования серверов 1С: основные функции

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

При помощи консоли для администрирования сервера 1С Предприятия можно решить следующие задачи:

  • Вносить изменение в функционирование сервера, создавать новые, удалять ненужные. На них можно размещать базы данных, определять взаимодействие между различными пользователями.
  • Создавать администраторов. Это пользователи, которые имеют права доступа для внесения изменений серверов. Каждый администратор может управлять только закрепленным сервером. Если не добавить ни одного администратора, администрированием сервера 1С может заниматься любой зарегистрированный пользователь.
  • Создание рабочих процессов кластера 1С. Добавление рабочих процессов позволяет оказывать влияние на производительность конкретного пользователя в системе. В свойствах можно установить максимальное значение производительности (до 1000). Запускаемые сеансы присоединяются к процессу с максимальной производительностью. Систематически система самостоятельно проводит анализ и перераспределяет эти значения для оптимизации.
  • Создание баз данных в 1С Предприятии. Можно установить возможность подключения к ней пользователей или разрешить работу только локально.
  • Принудительное завершение сеансов. Иногда сообщение сервера информирует о том, что под указанным именем пользователя уже производится работа. Система не всегда самостоятельно прекращает этот процесс, поэтому администрирование позволяет принудительно завершить сеанс для любого пользователя.

Как начать работу в 1С?

Клиентское приложение 1С Предприятия - это пустая платформа. Чтобы она начала функционировать, необходимо выполнить несколько последовательных действий:

  • Инсталлируется консоль. Она позволяет осуществлять последующее администрирование серверов 1С.
  • Создание Центрального сервера. После на его основе можно создавать подотчетные ему структуры. Для этого при помощи контекстного меню вводится имя, используемый протокол, номер применяемого для связи порта.
  • Создание кластера. В этом случае также поможет контекстное меню. Необходимо заполнить запрашиваемую информацию (имя кластера, используемого компьютера, порт для соединения, не обязательно совпадающий с портом, указанным ранее).
  • Создание информационной базы данных. В соответствующей ветке необходимо также воспользоваться контекстным меню. В нем вводятся требуемые параметры (наименование, описание, тип соединения, место дислокации, тип СУБД, имя пользователя и его пароль). После подтверждения правильности введенных данных база создана. Теперь в нее можно вносить необходимые данные.

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

Администрирование профессионалами: основные преимущества

Клиент-версию 1С используют компании среднего и крупного бизнеса, которым необходимо связать в единую систему все компьютеры, включая удаленные структурные подразделения. Это позволяет принимать управленческие решения, получать консолидированные отчеты, вести общую бухгалтерию.

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

Администрирование платформы 1С, выполняемое профессиональными специалистами, имеет ряд преимуществ:

  • Правильная настройка системы, которая позволяет гарантировать 1С адекватную работу, без технических сбоев.
  • Постоянное внесение изменений, контроль безопасности. Деятельность компании динамична, она ставит перед автоматизированной системой новые задачи для принятия управленческих, стратегических решений.
  • Установка новых модулей, правильное распределение прав доступа, создание подсистем. Особенно важно для крупных компаний, имеющих филиалы, удаленные подразделения.
  • Контроль загруженности системы, распределение нагрузки на разные серверные компьютеры.

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

  • Tutorial

Дисклеймер


В этой статье выражено личное мнение автора, его видение мира, его путь, и это все не претендует на абсолютную верность и объективность. Автор не несет никакой ответственности за последствия использования данной информации, он только надеется что эта информация поможет сделать кому-то жизнь проще.


Предисловие


Сначала я просто хотел написать небольшую статью о том, как мы разносили базы по службам, но в ходе углубления в этот процесс мы добавляли всякие разные штуки (мониторинг служб, потом мониторинг пользователей внутри 1С, потом прикрутили заббикс, и, наконец, пришли к CI/CD на базе 1С). В итоге я понимаю что пихать это в одну статью будет слишком - решил разделить на несколько. Ну а название навеяно циклом статей "сети для самых маленьких", которые принесли мне много приятных минут и к которым я отсылаю всех, кто "хочет изучить сети". Итак, мы приступаем!


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


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


Какие у нас были сложности:

  1. Подвисшая база тянула за собой перезапуск службы, а значит страдали невинные (пользователи других баз)
  2. Было тяжело понять кто сегодня "герой дня" - какая база заняла все ресурсы
  3. Обновление релизов - обновление одной тянуло за собой автоматическое обновление всех баз на этой службе
  4. Ручное подключение баз пользователям, ручное изменение в случае переездов
  5. Мониторинг
    И только сейчас я понимаю что это была только вершина айсберга...

Акт первый, действие нулевое

Небольшое отвлечение на основные постулаты, осознание которых далось большой кровью и болью.

  1. Старые версии 1С (до 8.3.11+) имеют просадку по производительности при работе в виртуализированной среде. (Источник - Гилев и собственные тесты)
  2. Кластер есть, но с ним все крайне не просто. Возможно его доработают потом, но пока он в основном для галочки. (источник - собственный опыт)
  3. При выборе процессора смотрите только на частоту . Процессор в 6 ядер по 3,4Ггц порвет в куски процессор на 20 ядер по 2Ггц. Проблема в том, что 1С вообще ничего не знает про параллельные вычисления. По сути это работает так - у нас есть определенное число воркеров для каждой службы, их раскидывают по процессорам, и если в каком то воркере пользователь запустил какой-то тяжелый отчет то в системе будет загружено только одно ядро процессора. Именно то, на котором работает воркер с запущенным заданием… Для БД ситуация кстати ровно обратная. (источник - Гилев, собственный опыт, опыт коллег)
  4. Не используйте логи в "новом" формате (запись в SQLLite) - вы очень быстро столкнетесь с тем, что производительность этого решения еще хуже чем файлового варианта. (Источник - собственный опыт, опыт коллег).
    По подсказкам из комментариев есть вариант вынести логи на отдельный инстанс.
    В 8.3.12 обещали логи в нормальный скуль!!!
  5. 1С оооочень не любит IPv6. На всех серверах с 1С лучше сразу понижать приоритет IPv6 до минимума. (Источник - Гилев, собственный опыт)
  6. Используйте для виртуальных серверов виртуальные сетевые карточки E1000. С остальными проблема по производительности (Источник - Гилев, но на собственном опыте не подтвердилось, хотя особо и не тестили)
  7. Обслуживание баз дает хороший прирост производительности, особенно периодический пересчет итогов, а так же обслуживание индексов SQL (Источник - собственный опыт, Гилев)
  8. Поиск причин падения 1С сродни поеданию неочищенного кактуса. Выяснить что-то толком можно только через боль, унижения и страдания. (Источник - собственный опыт)
  9. Нет ни одного официального образа ни под один гипервизор. Про докер я вообще молчу. (Источник - сайт 1С)
  10. Программная лицензия для сервера привязывается к - сюрприз, сюрприз - серийному номеру процессора (и еще огромному количеству параметров сервера). В эпоху повсеместной виртуализации ход потрясающий. Поясняю - активировали сервер, переехали на другую ноду, перезагрузили машину - 1С не запуститься. Расчехляйте новый активационный код. (Источник - собственный опыт, болтливая техническая поддержка 1С =))
  11. 1С - это учетная система, а не отчетная. Хотите много нормальных жирных отчетов и быстро - выводите это за рамки 1С. (Источник - собственный опыт)
  12. У 1С есть два неоспоримых достоинства, за счет которых она будет процветать еще долго:
    • стоимость самого продукта/разработчиков
    • скорость разработки
      и к сожалению для российского бизнеса они являются первоочередными. А зачастую и единственными, на что вообще смотрят. (Источник - печальная реальность)
  13. Никогда не используйте файловую шару как место под хранилище конфигураций 1С. Только службу. Иначе маты со стороны разработки о упавшем черт знает когда хранилище станут вашим неизменным спутником по жизни. (Источник - собственный опыт, опыт коллег)

Акт первый, действие первое

Первая короткая сценка из корпоративной жизни


На сцене - Админ (А), программист 1С (П1С) и представитель бизнеса (ПБ)
ПБ - У нас медленно работает программа!
А - у меня в системе все хорошо!
П1С - я все написал правильно, у меня на компьютере все работает быстро!
ПБ (робко и растерянно) - но она же долго…
А и П1С хором - у нас все хорошо, проблема на вашей стороне!


Проблемы всегда случаются не вовремя (с) (5-летний философ)


И вот в одно прекрасное солнечное утро (на самом деле это была глубокая зимняя ночь) мы поняли что завтра надо запустить новую базу. Завтра наступал тот прекрасный день, который уже много раз описывался тысячами авторов и имя ему - легион! Тьфу, простите, занесло. Имя этому дню был дедлайн. Час ночи, завтра на 200 компах должна запуститься новая база." Да не проблема, у нас же все компы в домене! Сейчас быстренько сделаем логин-скрипт и дело в шляпе!" подумаете вы. И будуте правы - так же подумали и мы. И сделали. Только, как обычно это бывает, погорели на мелочи - я в логон-скрипте я прописал %filename%.bat а коллега выложил %filename%.cmd .


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


Но мысль автоматизации этого процесса у меня в голове засела очень крепко и стал даже вырисовываться план внедрения.


В итоге мы пришли к следующей идеологии:

  • Все раздается через AD - создаются группы вида 1cbases-%версия платформы%-%имя базы% и туда силами хелпдеста добавляются пользователи, которым нужна база.
    • одна группа - одна база
    • 1cbases - это префикс по которому удобно искать группы
    • версия платформы 81, 82 и 83 (релиз не принципиален)
    • название базы соответствует имени файла с настройками
  • выделяется общая файловая шара где выкладываются все файлы с настройкой подключения к базам (одна база - один файл)
  • при блокировании компьютера вызывается скрипт, который считывает группы пользователя и на их основании добавляет пользователям нужные базы 1С

Как мы это делали:

  1. Через групповые политики добавляется новое задание в планировщик (задача планировщика прописать пользователю путь к файлу подключения базы):
    • запускать от имени пользователя
    • событие - разблокировка компьютера
    • действие - запуск нашего скрипта
  2. Создаем нужные группы в АД и заполняем их пользователями
  3. Создаем нужные файлы для запуска самих 1С. Тут остановлюсь чуть поподробнее. Изначально мы долго мучили интернет своими запросами и нашли полное описание структуры файлов *.v8i. Но потом нашелся способ проще и гениальнее.
    • запускаем 1С
    • настраиваем подключение к базе
    • проверяем что все работает
    • кликаем правой клавишей по названию базы и выбираем пункт - "Сохранить ссылку в файл"


Код скрипта:

#Первым шагом создаем место для логов if (Test-Path "$env:HOMEDRIVE\!script_report\add_1c_bases_report.txt") { Remove-Item "$env:HOMEDRIVE\!script_report\add_1c_bases_report.txt" -Force -ErrorAction SilentlyContinue; } New-Item "$env:HOMEDRIVE\!script_report\add_1c_bases_report.txt" -ItemType file -Force -ErrorAction SilentlyContinue; Add-Content -Value ("Дата последнего запуска: " + (Get-Date -Format F)) -Path "$env:HOMEDRIVE\!script_report\add_1c_bases_report.txt"; if ((gwmi Win32_OperatingSystem | select Caption, CSDVersion) -notlike "*server*") # запрет запуска на серверных ОС { Add-Content -Value "Операционная система распознана как клиентская" -Path "C:\!script_report\add_1c_bases_report.txt"; if (!(Test-Path "$env:APPDATA\1C\1CEstart\ibases.v8i")) #если нет этого файла 1С подтягивает данные из списка баз 8.1 и игнорирует список баз 8.2 { New-Item "$env:APPDATA\1C\1CEstart\ibases.v8i" -ItemType file -Force; # Создаем этот файл если его нет Add-Content -Value "Файл $env:APPDATA\1C\1CEstart\ibases.v8i не найден, создали его" -Path "C:\!script_report\add_1c_bases_report.txt"; } if (Test-Path "$env:APPDATA\1C\1CEstart\1CEStart.cfg") { Remove-Item "$env:APPDATA\1C\1CEstart\1CEStart.cfg" -Force #-ErrorAction SilentlyContinue #удаление старого конфигурационного файла для 8.1 } New-Item "$env:APPDATA\1C\1CEstart\1CEStart.cfg" -ItemType file -Force #создание нового конфигурационного файла для 8.2 $GroupList = ("samaccountname=$($env:USERNAME)").Findone().Properties.memberof -replace "^CN=([^,]+).+$","$1" # Создание списка групп пользователя foreach ($Group in $GroupList) # генерация списка общих баз на основе имени группы { if ($Group.Length -gt 6) # Проверка длины имени группы { If ($Group.Substring(0,7) -eq "1cbases") # вычисление группы указывающей на базу 1С { Switch ($Group.Substring(8,2)) # выбор платформы 8.1 или 8.2 { "81" {Add-Content "$env:APPDATA\1C\1Cv81\ibases.v8l" -Value ("\\gold585.int\TechFiles\CommonBases\" + $Group.Substring(11) +".v8i")} # Создание строчки из файла со списком общих баз для 8.1 "82" {Add-Content "$env:APPDATA\1C\1CEstart\1CEStart.cfg" -Value ("CommonInfoBases=\\gold585.int\TechFiles\CommonBases\" + $Group.Substring(11) +".v8i")} # Создание строчки из файла со списком общих баз для 8.2 "83" {Add-Content "$env:APPDATA\1C\1CEstart\1CEStart.cfg" -Value ("CommonInfoBases=\\gold585.int\TechFiles\CommonBases\" + $Group.Substring(11) +".v8i")} # Создание строчки из файла со списком общих баз для 8.3 } Add-Content -Value ("Пользователь принадлежит групп $Group") -Path "C:\!script_report\add_1c_bases_report.txt"; Add-Content -Value ("Добавлено значение: CommonInfoBases=\\gold585.int\TechFiles\CommonBases\" + $Group.Substring(11) +".v8i") -Path "C:\!script_report\add_1c_bases_report.txt"; } } } } else { Add-Content -Value "Операционная система распознана как серверная" -Path "C:\!script_report\add_1c_bases_report.txt"; }


Что получили:

  1. Добавление баз теперь не было морокой - просто делали группу, добавляли файл с настройками - дальше все происходило автоматом
  2. Могли спокойно переносить базы куда угодно, просто меняя конфигурацию в файле с настройками подключения к базе (как показала практика - очень удобно)
  3. Сберегли обувь хелпдеску

Акт первый, действие второе

Вторая короткая сценка из корпоративной жизни


На сцене - Админ (А), программист 1С (П1С), разговор после ухода представителя бизнеса
А - Ваш этот 1С - $#%но!!! Сколько можно решать железом проблемы архитектуры и уровня разработчиков!
П1С - да это ваши сервера #$@но! У меня на локальной файловой базе все летает! Настройте уже ваше хозяйство по нормальному!
Спорщики удаляются со сцены сыпля взаимными обвинениями, опускается занавес, свет гаснет.


И с этой стороны ни чуть не лучше… (с) печальный ослик Иа-Иа в свой собственный день рождения


Вот представьте себе - сидите вы в удобном кресле, в одной руке чашка вкусного чая, в другой пышущая жаром и свежестью булочка из кулинарии ближайшего магазина, за окном приятно пахнет весной… И это, конечно же, самое подходящие время для звонка с проблемой! Коллега - Байконур, у нас %@па!


Я - я так понимаю что стадию Хьюстона с проблемами мы уже успешно пролетели?
Коллега - да. База %имя базы% подвисла, вообще не отвечает, ТОПы уже рвут и мечут. 3 раза мне уже звонили. Надо перезагружать службу.
Я - так там же еще пачка баз на этой службе!!!
Коллега - да, поэтому вторая половина ТОПов тоже рвет и мечет что их отключат...


В итоге конечно все согласовали, перезапустили, но осадочек остался.


Идеология:

  1. В продуктовой среде мы должны следовать правилу - одна база - одна служба с разнесением по портам
  2. Запускаться службы должны исключительно из-под доменных учеток. Одна служба - одна учетка. Это удобно для раздачи прав на шары, доступ в скуль и прочее. Так же, если у вас внедрена RBAC то вы можете очень оперативно посмотреть куда имеет доступ конкретный экземпляр 1С
  3. Логи нужно вынести на отдельный диск и включить на эти папки сжатие (при разбитии по дням это очень сильно экономит место и ускоряет (незначительно) поиск по логам)
  4. Каждой службе выдается alias в DNS для того, чтобы отвязать разработку от ip и/или dns сервера (в этом случае разработка вообще не волнуется на предмет того, где фактически находится сервер - физика, виртуальная машина в приватном облаке или вообще в публичном облаке)
  5. На каждую службу мы выделяем 500 портов для пользовательских соединений (наше внутреннее решение)

Как мы это делали (для нового сервера. для уже существующего часть шагов не актуальны):

  1. Создаются учетки под каждую службу
  2. На машине, где они будут работать им выдаются права на "запуск как службе"
  3. Ставиться MS офис, обязательно с активацией по MAK-ключу
  4. Ставится sqlncli - утилита из набора MS SQL Native Client. На данный момент выше 2012 не появлялось
  5. Создается папка C:\Windows\SysWOW64\config\systemprofile\Desktop - в противном случае есть проблемы с выгрузками в Word/Excel
  6. Для Windows 2016 и 1С 8.1 нужно скопировать старую версию dll (В папке C:\Program Files\Common Files\System\Ole DB надо заменить два файла sqloledb.dll и sqloledb.rll взятых со старых серверов)
  7. Ставятся дополнительное ODBC драйверы, если нужно подключатся к MySQL/PostgreSQL

Настройка папки для службы и логов:

  1. Создается папка на отдельном диске называется в формате 1CServer %basename% (в стандартном случае это делает сама служба, ибо у нее есть в настройках запуска путь к логам)
  2. Если внутрь каталога только что созданной службы переносятся данные из другого каталога (другой службы, другого сервера), то необходимо заменить владельцев (иначе служба не получит к ним доступа) с заменой владельца подконтейнеров
  3. Владельцем папки делается учетная запись службы

Описание настройки службы

@echo off chcp 1251 установка кодировки set base=%base_name% название базы без пробелов на английском – для каталога с логами set dsce=%base name% название базы с пробелами на английском – для имени службы set dscr=%Имя базы% название базы на русском – для представления службы set sver=8.3 краткая версия – для имени и представления службы set fver=1cv8\8.3.9.2170 часть пути к нужной нам версии платформы 1С set port=8040 управляющий порт set regp=8041 основной порт set rnge=8060:8491 диапазон портов для службы set name="1C:Enterprise %sver% Server Agent (x86-64) %dsce%" имя службы (для реестра) по аналогии с типовыми, только добавляется название базы для уникальности названий set bpth=\"C:\Program Files\%fver%\bin\ragent.exe\" -srvc -agent путь к исполняемому файлу для запуска службы set logs=D:\1C_Server_%base% каталог для логов set user="%login%@%domain_name%" такой формат позволяет использовать логины длиннее 20 символов пароль нигде не указывал при создании, потому что потом всё равно надо его заново указать, только тогда у пользователя будут права на запуск служб; set view="Агент сервера 1С:Предприятия %sver% (x86-64) %dscr%" представление службы в оснастке sc create %name% binPath= "%bpth% -regport %regp% -port %port% -range %rnge% -d \"%logs%\"" type= "own" start= "auto" error= "severe" depend= "Tcpip/Dnscache/lanmanworkstation/lanmanserver" obj= %user%DisplayName= %view% тут: type= "own" – тип службы, какие бывают еще сам посмотри start= "auto" – автоматический запуск error= "severe" – не помню что значит, но устанавливает правильное значение ключа в реестре ErrorControl = 2 depend= "Tcpip/Dnscache/lanmanworkstation/lanmanserver" – зависимости (на четвертой вкладке указаны, вручную не настраиваются) sc description %name% %view% задает представление в оснастке, сразу при создании не указывается sc failure %name% reset= 0 actions= "restart/0" настройка на вкладке восстановление – перезапуск во всех случаях, через 0 минут; сброс счетчика через 0 дней То же самое без комментариев: @echo off chcp 1251 set base=%base_name% set dsce=%base name% set dscr=%Имя базы% set sver=8.3 set fver=1cv8\8.3.9.2170 set port=8040 set regp=8041 set rnge=8060:8491 set name="1C:Enterprise %sver% Server Agent (x86-64) %dsce%" set bpth=\"C:\Program Files\%fver%\bin\ragent.exe\" -srvc -agent set logs=D:\1C_Server_%base% set user="%login%@domain.company" set view="Агент сервера 1С:Предприятия %sver% (x86-64) %dscr%" sc create %name% binPath= "%bpth% -regport %regp% -port %port% -range %rnge% -d \"%logs%\"" type= "own" start= "auto" error= "severe" depend= "Tcpip/Dnscache/lanmanworkstation/lanmanserver" obj= %user% DisplayName= %view% sc description %name% %view% sc failure %name% reset= 0 actions= "restart/0"


  1. Для того, чтобы в службах не было кроказябр
    • в cmd ввести команду chcp 1251
    • файл надо сохранить в ANSI кодировке
  2. Обязательно надо проверить на отсутствие дублирующих ключей в строке запуска - служба с ними не стартует!!!
  3. Для того, чтобы удалить службу, можно воспользоваться командой - sc delete «Имя заданное в переменной name»
  4. Добавить порты используемые 1С в разрешения в firewall
  5. Нужен всего один физический ключ на сервер - все службы будут активироваться им

После проведения всех мероприятий в итоге мы пришли к:

  1. Базы можно спокойно перезагружать, не трогая другие базы
  2. Всегда можно найти "героя" - базу, которая съедает все ресурсы
  3. Любые работы с базой касаются только одной конкретной базы

В следующих статьях я планирую рассказать (если эта статья народу зайдет):

  • как мы перевели авторизацию в MSSQL на kerberos и вообще оптимизировали доступы
  • как мы сделали мониторинг служб - кто сколько занял ресурсов
  • как мы сделали мониторинг внутри службы 1С выявления блокировок пользователями быстрее, чем они позвонят
  • как мы пытались внедрить CI для 1С и что из этого вышло

UPD. Дополнил кое-что по комментариям

Теги: Добавить метки