Введение: зачем нужны разные порты в кластере 1С?
Представь, что ты разворачиваешь несколько кластеров 1С на одном сервере или хочешь изолировать тестовую и продуктивную среду. Стандартные порты (1540-1541) уже заняты? Или нужна тонкая настройка безопасности? Именно здесь пригодится установка кластера 1С Linux на разных портах.
Давай разберем, как правильно настроить кластер серверов 1С на Linux с нестандартными портами, чтобы избежать конфликтов и повысить безопасность системы.
Подготовка окружения Linux
Перед началом установки кластера 1С убедись, что у тебя есть:
- Сервер на базе CentOS 7/8 или Ubuntu 20.04/22.04
- Установленные пакеты:
wget,tar,systemd - Доступ к репозиториям 1С (лицензия или тестовый ключ)
- Права root или sudo
Установка сервера 1С на Linux
Сначала установим базовый сервер 1С. Выбери свою ОС:
Для CentOS/RHEL
# Добавляем репозиторий 1С
wget -O /etc/yum.repos.d/1c.repo https://repo.1c.ru/1c.repo
# Устанавливаем сервер 1С
sudo yum install 1c-enterprise83-server -y
# Устанавливаем сервер лицензирования
sudo yum install 1c-enterprise83-server-licenses -y
Для Ubuntu/Debian
# Добавляем ключ репозитория
wget -qO - https://repo.1c.ru/1c.key | sudo apt-key add -
# Добавляем репозиторий
sudo echo "deb https://repo.1c.ru/apt/ubuntu/ focal main" > /etc/apt/sources.list.d/1c.list
# Обновляем и устанавливаем
sudo apt update
sudo apt install 1c-enterprise83-server -y
Настройка кластера 1С на разных портах
Теперь перейдем к главному — конфигурации портов. По умолчанию кластер использует:
- Порт менеджера кластера: 1540
- Порт рабочего процесса: 1541
Мы изменим эти порты на, например, 15540 и 15541 для первого кластера, и 15640/15641 для второго.
Шаг 1: Создание конфигурационных файлов
Создадим отдельные конфиги для каждого кластера:
# Создаем директории для конфигов
sudo mkdir -p /etc/1c/1C_cluster1
sudo mkdir -p /etc/1c/1C_cluster2
Шаг 2: Конфиг для первого кластера (порты 15540-15541)
# /etc/1c/1C_cluster1/ragent.conf
[General]
ClusterPort=15540
ClusterUdpPort=15540
[Cluster]
Port=15541
Range=15541:15549
[WorkerProcess]
StartPort=15550
Range=15550:15599
Шаг 3: Конфиг для второго кластера (порты 15640-15641)
# /etc/1c/1C_cluster2/ragent.conf
[General]
ClusterPort=15640
ClusterUdpPort=15640
[Cluster]
Port=15641
Range=15641:15649
[WorkerProcess]
StartPort=15650
Range=15650:15699
Создание systemd сервисов для каждого кластера
Чтобы кластеры запускались автоматически, создадим отдельные systemd-юниты:
Сервис для кластера 1 (порты 15540-15541)
# /etc/systemd/system/1c_cluster1.service
[Unit]
Description=1C:Enterprise Cluster 1 (Ports 15540-15541)
After=network.target
[Service]
Type=forking
ExecStart=/opt/1C/v8.3/x86_64/ragent -daemon -d /var/1C/cluster1 -port 15540
ExecStop=/opt/1C/v8.3/x86_64/ragent -kill -d /var/1C/cluster1
PIDFile=/var/1C/cluster1/ragent.pid
Restart=on-failure
User=usr1cv8
Group=grp1cv8
[Install]
WantedBy=multi-user.target
Сервис для кластера 2 (порты 15640-15641)
# /etc/systemd/system/1c_cluster2.service
[Unit]
Description=1C:Enterprise Cluster 2 (Ports 15640-15641)
After=network.target
[Service]
Type=forking
ExecStart=/opt/1C/v8.3/x86_64/ragent -daemon -d /var/1C/cluster2 -port 15640
ExecStop=/opt/1C/v8.3/x86_64/ragent -kill -d /var/1C/cluster2
PIDFile=/var/1C/cluster2/ragent.pid
Restart=on-failure
User=usr1cv8
Group=grp1cv8
[Install]
WantedBy=multi-user.target
Активация и запуск сервисов
# Перечитываем конфигурацию systemd
sudo systemctl daemon-reload
# Включаем автозагрузку
sudo systemctl enable 1c_cluster1.service
sudo systemctl enable 1c_cluster2.service
# Запускаем кластеры
sudo systemctl start 1c_cluster1.service
sudo systemctl start 1c_cluster2.service
# Проверяем статус
sudo systemctl status 1c_cluster1.service
sudo systemctl status 1c_cluster2.service
Настройка firewall для нестандартных портов
Если firewall включен, нужно открыть наши порты:
Для firewalld (CentOS/RHEL)
# Открываем порты для первого кластера
sudo firewall-cmd --permanent --add-port=15540/tcp
sudo firewall-cmd --permanent --add-port=15541/tcp
sudo firewall-cmd --permanent --add-port=15540/udp
# Открываем порты для второго кластера
sudo firewall-cmd --permanent --add-port=15640/tcp
sudo firewall-cmd --permanent --add-port=15641/tcp
sudo firewall-cmd --permanent --add-port=15640/udp
# Применяем изменения
sudo firewall-cmd --reload
# Проверяем
sudo firewall-cmd --list-ports
Для ufw (Ubuntu)
sudo ufw allow 15540/tcp
sudo ufw allow 15541/tcp
sudo ufw allow 15540/udp
sudo ufw allow 15640/tcp
sudo ufw allow 15641/tcp
sudo ufw allow 15640/udp
sudo ufw reload
Проверка работы кластеров на разных портах
Убедимся, что кластеры слушают правильные порты:
# Проверяем сетевые соединения
sudo netstat -tulpn | grep 1C
# Ожидаемый вывод:
# tcp 0 0 0.0.0.0:15540 0.0.0.0:* LISTEN 12345/ragent
# tcp 0 0 0.0.0.0:15541 0.0.0.0:* LISTEN 12346/ragent
# tcp 0 0 0.0.0.0:15640 0.0.0.0:* LISTEN 12347/ragent
# tcp 0 0 0.0.0.0:15641 0.0.0.0:* LISTEN 12348/ragent
Также можно проверить через браузер:
- Кластер 1:
http://ваш_сервер:15540/1c/clusman - Кластер 2:
http://ваш_сервер:15640/1c/clusman
Настройка клиентских подключений
В клиентских приложениях 1С теперь нужно указывать соответствующие порты:
В строке подключения:
Стандартно: tcp://сервер:1541/база_данных
Для кластера 1: tcp://сервер:15541/база_данных
Для кластера 2: tcp://сервер:15641/база_данных
Таблица сравнения конфигураций портов
| Компонент | Стандартные порты | Кластер 1 | Кластер 2 |
|---|---|---|---|
| Менеджер кластера (TCP) | 1540 | 15540 | 15640 |
| Менеджер кластера (UDP) | 1540 | 15540 | 15640 |
| Рабочий процесс | 1541 | 15541 | 15641 |
| Диапазон рабочих процессов | 1541:1549 | 15541:15549 | 15641:15649 |
Частые проблемы и их решение
Проблема 1: Кластер не запускается
Решение: Проверь логи:
sudo journalctl -u 1c_cluster1.service -f
# Или
sudo tail -f /var/1C/cluster1/logs/*.log
Частая причина — занятый порт. Проверь: sudo lsof -i :15540
Проблема 2: Клиенты не подключаются
Решение:
- Проверь firewall: порты должны быть открыты
- Убедись, что в строке подключения указан правильный порт
- Проверь сетевую доступность:
telnet сервер 15541
Проблема 3: Конфликт диапазонов портов
Решение: Убедись, что в конфигах Range не пересекаются. Между диапазонами должен быть запас минимум в 10 портов.
Оптимизация и мониторинг
После успешной установки кластера 1С Linux на разных портах рекомендую:
- Настроить логирование в отдельные файлы для каждого кластера
- Реализовать мониторинг доступности портов (например, через Zabbix или Nagios)
- Настроить балансировку нагрузки между кластерами, если это требуется
- Регулярно делать бэкапы конфигурационных файлов
# Пример скрипта для проверки доступности кластеров
#!/bin/bash
PORTS=(15540 15541 15640 15641)
SERVER="localhost"
for port in "${PORTS[@]}"; do
nc -z $SERVER $port > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Port $port: OK"
else
echo "Port $port: FAILED"
fi
done
Заключение
Установка кластера 1С на Linux с разными портами — мощный инструмент для DevOps-инженеров. Это позволяет:
- Запускать несколько независимых кластеров на одном сервере
- Изолировать тестовую и продуктивную среду
- Обходить конфликты портов в сложных инфраструктурах
- Повышать безопасность через нестандартные порты
Главное — внимательно настраивать конфигурационные файлы, не допускать пересечения диапазонов портов и правильно конфигурировать firewall. Следуя этому руководству, ты сможешь развернуть отказоустойчивую кластерную среду 1С любой сложности.