Как правильно создавать и управлять множеством кластеров 1С:Предприятия на одном сервере?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Архитектура сервера 1С:Предприятия: роли и порты

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

  1. Агент сервера (ragent.exe): Это единственный экземпляр, который должен быть запущен на каждом физическом сервере 1С. Он является "дирижером" всей серверной платформы, управляет всеми кластерами, которые на нем созданы. Агент сервера обычно слушает следующие порты:
    • TCP 1540 (параметр -port): Основной порт для взаимодействия с другими агентами (если используется отказоустойчивый кластер серверов) или с консолью администрирования.
    • TCP 1541 (параметр -regport): Порт для регистрации самого агента сервера в системе 1С.
    • Диапазон портов (параметр -range): Используется для внутренних нужд агента и, как правило, не должен конфликтовать с диапазонами рабочих процессов. По умолчанию это 1560-1591.

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

  2. Менеджер кластера (rmngr.exe): Каждый созданный кластер имеет свой менеджер. Этот процесс управляет конкретным кластером, распределяет нагрузку, запускает и останавливает рабочие процессы. Менеджер кластера регистрируется на агенте сервера на своем уникальном порту. Именно эти порты (например, 1541, 2541, 3541 и т.д. в случае автора) необходимо разносить. Они определяются при создании кластера через консоль администрирования.
  3. Рабочий процесс (rphost.exe): Эти процессы выполняют основную работу по обслуживанию информационных баз: обрабатывают запросы пользователей, взаимодействуют с базами данных, исполняют код 1С. Каждый рабочий процесс резервирует один порт из заданного для кластера диапазона.

Анализируем проблему автора: почему возникают ошибки

Автор столкнулся с проблемами при создании 27 кластеров на одном сервере с 91 базой, получая ошибки "Свободный рабочий процесс сервера 1С:Предприятия не найден" и "Ни один рабочий процесс не найден". Его конфигурация включала разделение портов по 1000 (например, 1541, 2541, 3541 для кластеров и 1560:1591, 2560:2591 для диапазонов рабочих процессов). Мы проанализируем, в чем могла быть причина.

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


"C:\Program Files\1cv8\8.3.27.1936\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1cv8\srvinfo"

Это выглядит как команда для запуска одного агента сервера. Если это так, то проблема, скорее всего, кроется в следующем:

  1. Неправильное конфигурирование диапазонов портов для рабочих процессов (rphost) в каждом кластере. Хотя автор указывает на использование уникальных диапазонов (например, -range 2560:2591 в примере rphost), нужно убедиться, что для каждого из 27 кластеров был назначен свой уникальный и достаточный диапазон. Диапазон портов по умолчанию (1560-1591) рассчитан всего на 31 рабочий процесс. Если кластеры содержат большое количество баз (автор указывает 91 базу на 27 кластеров), и некоторые кластеры имеют более 31 ИБ, или если диапазоны пересекались, это могло вызвать ошибку "Свободный рабочий процесс сервера 1С:Предприятия не найден".
  2. Исчерпание системных ресурсов. Даже при 128 ГБ оперативной памяти, 27 кластеров и 91 база могут создать значительную нагрузку. Каждый рабочий процесс rphost потребляет память, и их большое количество может привести к нехватке ресурсов, особенно если базы активно используются. Операционная система Windows Server 2022 Datacenter, указанная автором, имеет свои ограничения по количеству потоков и процессов.
  3. Ошибки в работе службы агента сервера. Если служба 1С:Предприятия работает некорректно, она может не запускать или не видеть рабочие процессы.

Ошибка "Ни один рабочий процесс не найден" или "Ни один рабочий процесс не доступен" напрямую указывает на то, что менеджер кластера не смог запустить или обнаружить ни один процесс rphost в своем диапазоне. Это может быть результатом конфликта портов, недостатка ресурсов или некорректной настройки диапазона портов для самого кластера.

Проверка портов через PowerShell, выполненная автором, показала, что многие порты свободны. Это хороший начальный шаг, но он не исключает конфликтов динамически выделяемых портов или проблем с запуском rphost.

Пошаговая инструкция по правильной настройке множества кластеров на одном сервере

Рассмотрим шаги для корректного создания и настройки множества кластеров 1С:Предприятия на одном сервере.

1. Убедитесь, что запущен только один агент сервера (ragent)

Ваш сервер 1С должен иметь только одну службу "Агент сервера 1С:Предприятия", которая запускает процесс ragent.exe. Если вы создавали несколько таких служб с разными портами, вам необходимо удалить лишние и оставить только одну. Мы рассмотрим стандартный запуск службы агента сервера:

  1. Удалите все существующие службы агента сервера, кроме одной, или переустановите сервер 1С:Предприятия, чтобы гарантировать чистую установку.
  2. Убедитесь, что служба агента сервера запускается с корректными параметрами. Обычно при установке сервера 1С служба регистрируется автоматически. Если требуется ручная регистрация или изменение параметров, используйте команду (пример для версии 8.3.27.1936):
  3. 
    "C:\Program Files\1cv8\8.3.27.1936\bin\ragent.exe" -install -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1cv8\srvinfo"
    

    Где:

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

2. Создание кластеров в консоли администрирования

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

  1. Откройте консоль администрирования серверов 1С:Предприятия.
  2. Подключитесь к центральному серверу 1С. Используйте IP-адрес или имя сервера и порт агента сервера (по умолчанию 1540).
  3. Создайте новый кластер. Правой кнопкой мыши на узле "Кластеры" и выберите "Создать" -> "Новый кластер".
  4. Укажите параметры кластера:
    • Имя кластера: Присвойте уникальное и понятное имя (например, "Кластер_РабочиеБазы1", "Кластер_ТестовыеБазы").
    • Порт менеджера кластера: Здесь вы указываете уникальный порт для менеджера этого кластера (rmngr.exe). Именно этот порт вы должны были увеличивать по 1000, как делал автор (1541, 2541, 3541 и т.д.). Убедитесь, что каждый новый кластер получает свой уникальный порт менеджера. Например, для первого кластера это может быть 1541 (если ragent использует 1540), для второго — 2541, для третьего — 3541, и так далее, до 27541, как планировал автор. Эти порты не должны пересекаться.
    • Добавьте рабочий сервер: Укажите IP-адрес или имя вашего сервера.
  5. Настройте диапазон портов для рабочих процессов (rphost) в свойствах кластера. Это один из наиболее важных шагов, который часто становится источником проблем.
    • В свойствах созданного кластера перейдите на вкладку "Рабочие процессы".
    • Укажите уникальный диапазон портов для рабочих процессов rphost именно этого кластера. Например:
      • Для кластера с менеджером 1541: диапазон 1560:1591 (или шире, если баз много).
      • Для кластера с менеджером 2541: диапазон 2560:2591.
      • Для кластера с менеджером 3541: диапазон 3560:3591.
      • И так далее, для каждого из 27 кластеров.
    • Важно: Убедитесь, что каждый диапазон портов для rphost достаточно широк для обслуживания всех баз в этом кластере. Помните, что стандартный диапазон 1560:1591 (32 порта) может обслужить до 31 рабочего процесса. Если в одном кластере планируется больше рабочих процессов (например, из-за параметра "Количество ИБ на процесс" или большого числа активных сеансов), диапазон портов должен быть соответствующим образом расширен. Например, 2560:2599 для 40 процессов.
  6. Создайте сервер лицензирования в каждом кластере. Как правильно отметил автор, сервер лицензирования создается для каждого кластера.

3. Настройка параметров рабочих процессов и кластеров

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

  1. Параметры кластера (вкладка "Основные"):
    • Допустимый объем памяти: (для 32-битных систем) Важный параметр для предотвращения утечек памяти. Указывает максимальный объем памяти (в МБ), который может занять рабочий процесс. Если процесс превышает этот лимит, он будет перезапущен. Для 64-битных систем этот параметр часто устанавливают в 0, что означает отсутствие принудительного ограничения по памяти, полагаясь на стабильность 64-битных процессов и общие ресурсы сервера. На сервере с 128 ГБ RAM и Windows Server 2022 (64-бит) мы рекомендуем оставить 0 или установить достаточно большое значение, чтобы избежать частых перезапусков.
    • Интервал перезапуска: Время (в секундах), по истечении которого рабочий процесс будет принудительно перезапущен. Для 64-битных систем часто устанавливают 0 (отключение автоматического перезапуска) или очень большое значение (например, 86400 секунд = 24 часа), чтобы избежать прерывания работы пользователей.
  2. Параметры рабочего сервера (вкладка "Рабочие процессы"):
    • Количество ИБ на процесс: Этот параметр позволяет управлять тем, сколько информационных баз может быть назначено одному рабочему процессу. Установка значения 1 (один процесс на каждую ИБ) может повысить стабильность изолированных баз, но приведет к значительному увеличению числа rphost процессов и, как следствие, потребления ОЗУ. Для 91 базы и 27 кластеров это может быть избыточно. Обычно используют значение, которое позволяет распределить нагрузку, например, 5-10 ИБ на процесс, или настраивают индивидуально для нагруженных баз.
    • Количество соединений на процесс: Определяет максимальное количество клиентских соединений, которое может обслуживать один рабочий процесс. Увеличение этого параметра может уменьшить количество rphost процессов, но увеличит нагрузку на каждый из них.
    • Количество рабочих процессов: В свойствах рабочего сервера можно установить, сколько минимально и максимально рабочих процессов будет запускаться. Обычно рекомендуют устанавливать число рабочих процессов равным 1.5 от количества физических ядер CPU сервера, но для множества кластеров и баз это может потребовать более тонкой настройки и мониторинга.

4. Мониторинг и диагностика

Мы рассмотрим инструменты и подходы для мониторинга и диагностики работы кластеров 1С.

  1. Проверка занятости портов: Используйте команду netstat -ano в командной строке или PowerShell, чтобы увидеть, какие порты заняты и какими процессами (PID). С помощью Process Explorer можно сопоставить PID с именем процесса.
  2. Технологический журнал: Настройте технологический журнал 1С:Предприятия. Он является бесценным инструментом для диагностики любых проблем с сервером 1С. Мы рекомендуем собирать события типа "CALL", "DBMSSQL", "EXCP", "CONN", "SESN" для анализа проблем с рабочими процессами и производительностью. Файлы журнала помогут определить точную причину ошибок "Свободный рабочий процесс сервера 1С:Предприятия не найден" или "Ни один рабочий процесс не найден".
  3. Мониторинг ресурсов сервера: Постоянно отслеживайте загрузку CPU, потребление оперативной памяти и операции ввода-вывода дисковой подсистемы (IOPS, задержки) с помощью Диспетчера задач или Монитора производительности Windows. Недостаток любого из этих ресурсов может привести к проблемам с рабочими процессами.

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

Для повышения стабильности и производительности вашей конфигурации из 91 базы и 27 кластеров, мы предлагаем следующие рекомендации:

  1. Оптимизация количества рабочих процессов:
    • Начните с настройки количества рабочих процессов на рабочем сервере равным 1.5 от числа физических ядер CPU.
    • Используйте параметры "Количество ИБ на процесс" и "Количество соединений на процесс" для балансировки нагрузки. Для наиболее критичных или нагруженных баз вы можете выделить отдельный кластер с одним рабочим процессом (rphost) на каждую ИБ.
  2. Использование быстрых дисков: Для баз данных 1С и каталога srvinfo критически важна скорость дисковой подсистемы. Используйте SSD или NVMe диски.
  3. Актуальность платформы и ОС: Всегда используйте последние стабильные версии платформы 1С:Предприятия и операционной системы (Windows Server 2022 Datacenter в вашем случае), так как в них исправляются ошибки и улучшается производительность.
  4. Разделение баз по кластерам: Ваша идея разделения баз на рабочие и тестовые кластеры, а также дальнейшее разбиение на 26 рабочих кластеров, является верной. Это позволяет изолировать проблемы и лучше управлять ресурсами.
  5. Настройка технологического журнала: Не забывайте про технологический журнал. Он даст вам всю необходимую информацию для тонкой настройки и выявления узких мест.

Пример конфигурации для множества кластеров

Мы рассмотрим пример, как могла бы выглядеть корректная настройка для вашего сценария.

Предположим, у вас есть один сервер 1CSRV.

  1. Запущен только один агент сервера (ragent)

    Служба "Агент сервера 1С:Предприятия" запущена с параметрами, например:

    
    "C:\Program Files\1cv8\8.3.27.1936\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "D:\1cv8\srvinfo"
    

    Этот агент управляет всеми последующими кластерами.

  2. Создание кластеров в консоли администрирования

    Вы создаете 27 кластеров, например:

    • Кластер_01_Рабочие
      • Порт менеджера кластера: 2541
      • Диапазон портов для рабочих процессов: 2560:2600 (для обеспечения 41 рабочего процесса)
    • Кластер_02_Рабочие
      • Порт менеджера кластера: 3541
      • Диапазон портов для рабочих процессов: 3560:3600
    • ...
    • Кластер_26_Рабочие
      • Порт менеджера кластера: 27541
      • Диапазон портов для рабочих процессов: 27560:27600
    • Кластер_Тестовые
      • Порт менеджера кластера: 28541
      • Диапазон портов для рабочих процессов: 28560:28600

    Для каждого кластера мы назначаем уникальный порт менеджера кластера (например, 2541, 3541, ..., 27541, 28541) и уникальный, непересекающийся и достаточно широкий диапазон портов для рабочих процессов (например, 2560:2600, 3560:3600 и т.д.). Такой подход минимизирует конфликты портов и позволяет агенту сервера корректно управлять всеми кластерами и их рабочими процессами.

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

← На главную