Запуск нескольких экземпляров сервера 1С Предприятия 8.3 разных релизов на одном Linux-сервере

Публикация № 1118281

Администрирование - Администрирование данных 1С

кластер сервер сервис linux

22
Несколько слов о том, КАК это сделать, для тех кто сильно далек от GNU/Linux.

0. Общие моменты

Весь нижеследующий материал излагается с расчетом на то, что читатель как минимум заглядывал в Клиент-серверный вариант. Руководство администратора. В данном руководстве даже есть глава "4.3. Обеспечение совместной работы нескольких серверных процессов", в которой в свою очередь есть раздел 4.3.3. Для ОС Linux, однако, он не дает ответа на вопрос, обозначенный в заголовке статьи.

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

Для специалистов, долгое время работавших с MS Windows, такое положение дел выглядит непривычным (необычным, непонятным, ...). Т.к. бывает удобно, когда у тебя одновременно установленно два (а может больше, ведь кто удаляет старые версии платформы?! ;) ) разных релиза платформы и ты можешь быстро "переключиться" между ними, либо запустить одновременно несколько серверов 1С Предприятия разных релизов.

В GNU/Linux "напрямую" такая возможность отсутствует, что конечно печалит некоторых коллег. Посему, постараюсь показать, что в решении данной задачи нет ничего сложного, НО ... Да - это "костыль" ...

Для решения обозначенной задачи нам надо определиться со следующими моментами:
а. На каких сетевых портах будут работать компоненты кластера 1С Предприятия (ragent, rmngr и rphost) каждого из экземпляров;
б. Место размещения каталога кластера каждого из экземпляров.

Дабы внести некую определенность, будем отталкиваться от следующих вводных:
1. Используемые релизы платформы 8.3.13.1644 и 8.3.13.1809 (могут быть любые другие). В нашем случае принципиально только то, что оба релиза версии 8.3, ибо одновременно установить версии 8.2 и 8.3 не составляет проблем;
2. Каталоги кластеров располагаются в /home/1C/first и /home/1C/second, соответственно;
3. Компоненты кластера работают на следующих сетевых портах: релиз 8.3.13.1809 на 1540,1541,1560-1590; релиз 8.3.13.1644 на 2540,2541,2560-2590;
4. Речь пойдет о x64-платформе, установленной на CentOS, но предлагаемый сценарий легко перенести на любой другой дистрибутив с некоторыми исправлениями.

ВАЖНО: Ответственность за любые последствия, возникшие в результате внесения изменений в работающую систему по материалам данной статьи, лежат исключительно на лице, внесшим данные изменения!

1. Подготовка окружения

1. Устанавливаем пакеты платформы релиза 8.3.13.1644 обычным способом;
2. Останавливаем, если запущен, сервер 1С Предприятия;
3. Копируем файл /etc/sysconfig/srv1cv83 в файл /etc/sysconfig/srv1cv83131644;
4. Копируем файл /etc/init.d/srv1cv83 в файл /etc/init.d/srv1cv83131644 (в нашем случае важно, чтобы имена новых файлов из п. 2 и п. 3 совпадали);
5. Рекурсивно копируем каталог /opt/1C/v8.3/x86_64/ в каталог /opt/1C/v8.3.13.1644/x86_64/;
6. Устанавливаем обычным образом пакеты релиза 8.3.13.1809;
7. В файле /etc/sysconfig/srv1cv83131644 меняем следующие параметры:

SRV1CV8_PORT=2540
SRV1CV8_REGPORT=2541
SRV1CV8_RANGE=2560:2591
SRV1CV8_DATA=/home/1C/second

8. В файле /etc/init.d/srv1cv83131644 меняем следующие строки:

G_BINDIR="/opt/1C/v${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}/${G_VER_ARCH}"

[ -z "$SRV1CV8_PIDFILE"   ] && SRV1CV8_PIDFILE="/var/run/srv1cv${G_VER_MAJOR}${G_VER_MINOR}${G_VER_BUILD}${G_VER_RELEASE}.pid"

9. В файле /etc/sysconfig/srv1cv83 меняем следующие строки:

SRV1CV8_DATA=/home/1C/first

10. Создаем каталоги /home/1C/first и /home/1C/second;
11. Устанавливаем владельцем на каталог /home/1C с подкаталогами пользователя usr1cv8 (man 1 chown в помощь).

2. Активация и запуск сервисов

Чтобы сервис для релиза 8.3.13.1644 запускался самостоятельно при загрузке системы необходимо выполнить команду:

$ sudo systemctl enable srv1cv83131644

Для запуска сервисов выполняем последовательно:

$ sudo systemctl start srv1cv83
$ sudo systemctl start srv1cv83131644

После чего необходимо убедиться, что необходимые сервисы запустились и работают. Для этого можно прибегнуть к командам ps и/или pgrep (man 1 ps и man 1 pgrep в помощь), или к класическому service status <имя_сервиса>.

ВАЖНО: С помощью административной консоли (или ras/rac) требуется создать (проверить наличие) кластеров на каждом экземпляре сервера 1С Предприятия!

3. Резюме

Мы получили два сервиса: srv1cv83 для запуска сервера 1С Предприятия релиза 8.3.13.1809 и srv1cv83.13.1644 для запуска сервера 1С Предприятия релиза 8.3.13.1644 (файлы запуска /etc/init.d/srv1cv83 и /etc/init.d/srv1cv83131644 соответственно).

Получили два конфигурационных файла для сервера 1С Предприятия: /etc/sysconfig/srv1cv83131644 - для релиза 8.3.13.1644 и /etc/sysconfig/srv1cv83 - для релиза 8.3.13.1809.

Получили два каталога кластера 1С Предприятия: /home/1C/second - для релиза 8.3.13.1644 и /home/1C/first - для релиза 8.3.13.1809.

Для чего все это было надо? Думаю, каждый сам ответит для себя на этот вопрос ;)

P.S. Есть конструктивная критика? Всегда рад услышать!

22

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Sedaiko 223 09.09.19 12:47 Сейчас в теме
Спасибо за статью. Как раз планировал реализовать подобное в ближайшее время. Теперь не придется изобретать велосипед
2. starik-2005 1942 10.09.19 20:36 Сейчас в теме
3. Sloth 121 11.09.19 07:27 Сейчас в теме
(2) в отношении докера убедился на себе, когда не очень хорошо понимаешь (или не понимаешь совсем) как оно работает, то это может привнести дополнительные трудно диагностируемые плюшки, которых в обычном варианте развертывания никогда не словил бы ...
В общем же случае, каждый выбирает тот вариант который считает удобным для себя ;)
4. starik-2005 1942 11.09.19 12:15 Сейчас в теме
(3) Докер позволяет на любой хост-системе поднять независимое окружение, в котором., в свою очередь, как в песочнице будет запущено любое ПО, совместимое с окружением. Если 1С отлично встает на убунту, а у нас какой-нить альт-линух, то образ с убунту и предустановленной в нем платформе может решать проблему совместимости и переносимости. Также несколько контейнеров могут позволить запустить совершенно любые версии ПО, для которых собирается свой докер-контейнер. И порты трогать не надо - все переопределяется для конкретного контейнера (для первого - базовые порты, для второго - переопределенные). Т.е. переопределение производится в настройке контейнера, а не ПО.
5. Sloth 121 11.09.19 12:27 Сейчас в теме
(4) преимущества контейнеров не оспариваю :) Просто надо учитывать определенные моменты ну и читать документацию перед тем, как начать пользоваться ;)
Оставьте свое сообщение