Общее устройство кластера серверов 1С

Три компоненты системы: ragent, rmngr, rphost. Чтобы было понятно, о чем идет речь, лучше взглянуть на картинкуНа что здесь стоит обратить внимание? В первую оче­редь — порты сервера 1С. Они все должны быть открыты. Как показано на рисунке, соединения в основном прохо­дят непосредственно к рабочим процессам сервера 1С, т.е. по портам 1560-1591 (посчитайте сами максимальное количество рабочих процессов, которое можно запустить на одном сервере).

Но основной порт — 1541 — по нему будет первичное подключение к серверу 1С, соответственно, его тоже нуж­но открывать через Firewall для работы с сервером. Зато часто можно не открывать порт 1540 — там находится про­цесс ragent, с которым общается только менеджер кла­стера (rmngr). Для клиентского приложения данный порт ни к чему.

Все порты задаются в строке запуска агента серве­ра 1С:Предприятия:

-regport 1541 -port 1540 -range 1560:1591

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

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

Ragent — в сущности, бесполезный компонент. В теории предназначается для того, чтобы передавать управление другому менеджеру кластера при проблемах в текущем ме­неджере. На практике даже в тестовом режиме подобные переключения редко срабатывают. В рабочем не сраба­тывают практически никогда. В 8.3 заявлен полноценный отказоустойчивый кластер, агент сервера теряет свою актуальность еще больше, несмотря на то что отказоу­стойчивость в ее лучшем варианте в 8.3 тоже не работает как надо. В общем, кластер должен быть один, это, конеч­но, ИМХО, но проверенное очень большим опытом. Дело в том, что ragent не может определить, что rmngr перестал функционировать, потому как основная проблема менед­жера кластера — не «аварийное завершение», а «зависа­ние», т.е. те случаи, когда он ждет получения информации о сеансовых данных, а этой информации по каким-либо причинам нет, либо есть какие-то блокировки разных сер­висов.

Rmngr — главный проблемный компонент в системе. Луч­ше всего вынести его на отдельный рабочий сервер, поста­вив минимальную производительность, этим оградив от вся­кой рабочей нагрузки и оставив только служебные функции. Данный процесс отвечает за блокировки 1С, время, список информационных баз, журнал регистрации, сеансовые дан­ные… т.е. выполняет все сервисные функции, кроме не­посредственно выполнения программного кода 1С. В них, как правило, и содержится большая часть проблем.

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

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

Rphost — рабочий процесс сервера 1С. Функции его пре­дельно просты — принять запрос, обработать и/или отпра­вить к СУБД, потом обработать и вернуть ответ. Несмотря на то что большая часть кода выполняется в rphost, проблем с ними не так много, как кажется.

По сути дела, проблем всего две:

  • Сеансы падают.
  • Съедают память.

В случае (1) если проблема разовая, то ничего страшного в этом нет. Менеджер кластера просто перекинет сеансы на другой рабочий процесс. Если регулярно повторяется, то нужно включить технологический журнал 1С [4], посмот­реть на каком участке кода «падает» процесс, и переписать этот участок кода либо долго и мучительно регистрировать в 1С ошибку в платформе.

В случае (2) нужно просто настроить как лимиты памяти на вызов, так и перезапуск рабочих процессов. Как рабо­тает, лично не проверял, есть предположение, что не всег­да. Но «старый дедовский способ», который известен еще с 8.2 . Он точно работает и на 8.3. Найти сеанс, который «съел» памяти больше лимита, убить сеанс.

Установка и запуск

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

Нужно бы еще отдельно отметить расположение фай­лов srvinfo — это каталог, который обычно находится в C:\ Program Files\1cv8\srvinfo. Бытует мнение, что «сервер 1С не требователен к диску, и ему не нужно много места». Так вот, все это ерунда, если у вас включен полный журнал регистрации. Конечно, диск, такой как на сервере СУБД, не нужен, но сам журнал может занять достаточно много ме­ста и создавать существенную дисковую нагрузку.

0 ответы

Ответить

Хотите присоединиться к дискуссии?
Приглашаем поучаствовать!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>