Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
ВКС и мессенджер
ВКС и мессенджер
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Кластер Сервер документов на РЕД ОС 8

Обновлено: 13.10.26

Инструкция актуальна для версий продукта: 2025.4.1.1604 – 2026.3.1.3275

0. Схема

Системные требования

Ноды сервера документов

  • Процессор: рекомендуется от 4 ядер;
  • Оперативная память: рекомендуется от 8 Гб;
  • Свободное место на жестком диске: рекомендуется от 40 Гб.

Ноды RabbitMQ, Postgresql, Redis

  • Процессор: рекомендуется от 4 ядер;
  • Оперативная память: рекомендуется от 4 Гб;
  • Свободное место на жестком диске: рекомендуется от 40 Гб.

Ноды общего хранилища, Nginx

  • Процессор: рекомендуется от 2 ядер;
  • Оперативная память: рекомендуется от 4 Гб;
  • Свободное место на жестком диске: рекомендуется от 40 Гб.

Требования к программному обеспечению

1. Роль СУБД, RabbitMQ и Redis

Важно

Данные роли можно разнести по серверам, выполняя пункты 1.1., 1.2. и 1.3. на разных серверах.

Важно

При включенной службе firewalld необходимо выполнить настройку для postgresql, redis и amqp.

# Добавляем службы:
sudo firewall-cmd --permanent --zone=public --add-service=postgresql
sudo firewall-cmd --permanent --zone=public --add-service=redis
sudo firewall-cmd --permanent --zone=public --add-service=amqp
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

1.1. СУБД

1.1.1. Установите PostgreSQL

dnf install postgresql-server -y

1.1.2. Инициализируйте БД

/usr/bin/postgresql-setup --initdb --unit postgresql

1.1.3. Добавьте сервис в автозагрузку

systemctl enable postgresql

1.1.4. Приведите файл /var/lib/pgsql/data/pg_hba.conf к виду

# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5

# Указать все сервера с DS
host r7office r7office 192.168.25.234/32 md5
host r7office r7office 192.168.25.28/32 md5

# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5

Где:

  • host r7office r7office 192.168.25.234/32 md5 — Это доступ к БД r7office пользователю r7office с ip 192.168.25.234 по методу md5

1.1.5. Приведите строки в файле /var/lib/pgsql/data/postgresql.conf к виду и раскомментируйте их

listen_addresses = 'localhost, 192.168.25.102'
port = 5432

Где:

  • localhost, 192.168.25.102 — интерфейсы, которые должен слушать PostgreSQL, можно также указать ‘*’, чтобы слушались все интерфейсы.

1.1.6. Перезапустите сервис

systemctl restart postgresql

Проверяем:

systemctl status postgresql

1.1.7. Проверьте, что слушает сервис нужные интерфейсы

netstat -tln | grep 5432

1.1.8. Создайте пользователя и БД

# Создание пользователя r7office с паролем r7office
sudo -i -u postgres psql -c "CREATE USER r7office WITH PASSWORD 'r7office';"
# Создание БД r7office и выдача прав для пользователя r7office
sudo -i -u postgres psql -c "CREATE DATABASE r7office OWNER r7office;"

1.2. Установка и настройка Redis

1.2.1. Установите

dnf install redis -y

1.2.2. Добавьте в автозагрузку и запустите

systemctl enable redis --now

1.2.3. Отредактируйте файл /etc/redis/redis.conf, приведите строки к виду

bind 127.0.0.1 192.168.25.102
protected-mode no

Где:

  • bind 127.0.0.1 192.168.25.102 — интерфейсы, которые необходимо слушать приложению.

1.2.4. Перезапустите сервис

systemctl restart redis

1.2.5. Проверьте, слушает ли сервис порты

netstat -lpn | grep redis

1.3. Установка и настройка RabbitMQ

1.3.1. Установите

dnf install 'rabbitmq-server-3.*' -y

1.3.2. Запустите и добавьте в автозагрузку

systemctl enable rabbitmq-server --now

1.3.3. Редактируйте/создайте (если нет в директории) файл /etc/rabbitmq/rabbitmq.conf, приведите параметры к виду

listeners.tcp.other_ip = 192.168.25.102:5672

Где:

  • 192.168.25.102 — ip сервера с RabbitMQ.

1.3.4. Перезапустите сервис

systemctl restart rabbitmq-server
systemctl status rabbitmq-server

1.3.5. Проверьте, слушает ли порты сервис

netstat -lpn | grep beam

Пример вывода:

1.3.6. Выдайте права для ds

# Создаём пользователя r7office с паролем r7office и выдать ему права
rabbitmqctl add_user r7office r7office
rabbitmqctl set_permissions -p / r7office ".*" ".*" ".*"
 
# Создаём хост с DS (выполнить для каждой ноды DS)
rabbitmqctl add_vhost 192.168.25.234
 
# Даём права ВМ с DS (выполнить для каждой ноды DS)
rabbitmqctl set_permissions -p 192.168.25.234 r7office ".*" ".*" ".*"

2. Роль балансировщика

2.1. Установите nginx

dnf install nginx -y

2.2. Запустите

systemctl enable nginx --now

2.3. Добавление конфигурационного файла NGINX для Document Server

2.3.1. Настройка HTTPS с автоматическим перенаправлением HTTP

Важно


Этот сценарий используется для обеспечения доступа к Document Server по защищённому протоколу HTTPS. NGINX принимает HTTPS-запросы и проксирует их на серверы Document Server по HTTP, автоматически перенаправляя все HTTP-запросы на HTTPS.

Создайте файл /etc/nginx/conf.d/r7-ds.conf и добавьте в него конфигурацию для данного сценария.

upstream docservice {
# Указать все сервера с DS
  server 192.168.25.234;
  server 192.168.25.28;
  server 192.168.25.38;
}
 
map $http_host $this_host {
  "" $host;
  default $http_host;
}
 
map $http_x_forwarded_proto $the_scheme {
  default $http_x_forwarded_proto;
  "" $scheme;
}
 
map $http_x_forwarded_host $the_host {
  default $http_x_forwarded_host;
  "" $this_host;
}
 
map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}
 
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
## Normal HTTP host
server {
  listen 0.0.0.0:80;
  server_name ds-cluster.devr7.ru;
  server_tokens off;
 
## Redirects all traffic to the HTTPS host
  return 301 https://$server_name:443$request_uri;
}
 
server {
  listen 0.0.0.0:443 ssl http2;
  server_name ds-cluster.devr7.ru;
  server_tokens off;
  root /usr/share/nginx/html;
 
  ssl_certificate /etc/nginx/ssl/devr7.ru-full.crt;
  ssl_certificate_key /etc/nginx/ssl/devr7.ru.key;
 
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
 
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_session_cache builtin:1000 shared:SSL:10m;
 
  ssl_prefer_server_ciphers on;
 
## [Optional] Before enabling Strict-Transport-Security headers, ensure your server is properly configured for SSL.
## This directive informs the browser to always use HTTPS. For more info see:
## - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# add_header X-Frame-Options SAMEORIGIN;
  add_header X-Content-Type-Options nosniff;
 
location / {
  proxy_pass http://docservice;
  proxy_http_version 1.1;
  }
}

где,

  • в блоке upstream docservice {} — указаны сервера DS;
  • server_name ds-cluster.devr7.ru; — указано dns имя reverse proxy;
  • ssl_certificate /etc/nginx/ssl/devr7.ru-full.crt;  — указан путь до полной цепочки сертификатов;
  • ssl_certificate_key /etc/nginx/ssl/devr7.ru.key; — указан путь до закрытого ключа.

2.3.2. Настройка HTTP без перенаправления на HTTPS

 

Важно

Этот сценарий используется для настройки проксирования запросов к Document Server по HTTP без автоматического перенаправления на HTTPS.

Создайте файл /etc/nginx/conf.d/r7-ds.conf и добавьте в него конфигурацию для данного сценария.

upstream docservice {
# Указать все сервера с DS
  server 192.168.25.234;
  server 192.168.25.28;
  server 192.168.25.38;
}
 
map $http_host $this_host {
  "" $host;
  default $http_host;
}
 
map $http_x_forwarded_proto $the_scheme {
  default $http_x_forwarded_proto;
  "" $scheme;
}
 
map $http_x_forwarded_host $the_host {
  default $http_x_forwarded_host;
  "" $this_host;
}
 
map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}
 
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
## Normal HTTP host
server {
  listen 0.0.0.0:80;
  server_name ds-cluster.devr7.ru;
  server_tokens off;
 
  location / {
    proxy_pass http://docservice;
    proxy_http_version 1.1;
  }
}

где,

  • в блоке upstream docservice {} — указаны сервера DS;
  • server_name ds-cluster.devr7.ru; — указано dns имя reverse proxy;

2.4. Проверьте конфигурацию

nginx -t

Пример вывода:

2.5. Перезапустите сервис

systemctl restart nginx

3. Файловое хранилище

Рассмотрим вариант простого nfs хранилища на RedOS 8, для примера.

Важно

При включенной службе firewalld необходимо выполнить настройку для nfs.

# Добавляем службу:
sudo firewall-cmd --permanent --zone=public --add-service=nfs
 
# Перезапускаем службу firewalld:
sudo firewall-cmd --reload
 
# Проверяем правила для зоны public:
sudo firewall-cmd --zone=public --list-all

3.1. Установите пакеты

dnf install nfs-utils nfs4-acl-tools -y

3.2. Запустите сервис

systemctl enable nfs-server --now

3.3. Создайте директории

mkdir /mnt/cache
mkdir /mnt/data

3.4. Добавьте файл лицензии

По данному пути добавляем файл лицензии с именно таким именем license.lic:

/mnt/data/license.lic

3.5. Создайте пользователя

Обратите внимание

В данной инструкции рассматривается чистая инсталляции без имеющихся DS. Если у Вас уже есть DS, то необходимо указать UID и GID пользователя ds с ВМ, где установлен DS.

Можно воспользоваться командой:

id ds
Обратите внимание

В данной инструкции установки не рассматривается наличие уже установленного Документ сервера, поэтому UID и GID будут везде указаны 1100. Если Вам важно сохранить имеющийся DS, то необходимо использовать GID и UID с данной ВМ, либо изменить их на ней, возможно использовать данные команды:

supervisorctl stop all
groupmod -g 1100 ds
usermod -u 1100 -g 1100 ds
chown -R ds:ds /var/lib/r7-office/
chown -R ds:ds /var/www/r7-office/
chown -R ds:ds /etc/r7-office/

Создание пользователя:

Обратите внимание

UID и GID пользователя ds должны быть одинаковые на всех ВМ с Документ сервером и NFS хранилищем:

# Создаём группу с gid 1100
groupadd -g 1100 ds
 
# Создаём пользователя с uid 1100 и добавляем его в группу с gid 1100
useradd -u 1100 -g 1100 ds
 
# Обновляем права на каталоги
chown ds:ds -R /mnt/cache/
chown ds:ds -R /mnt/data

3.6. Редактируйте файл

/etc/exports

3.7. Добавьте строки примерно такого характера

/mnt/cache 192.168.25.0/24(rw,insecure,nohide,all_squash,anonuid=1100,anongid=1100,no_subtree_check)
/mnt/data 192.168.25.0/24(rw,insecure,nohide,all_squash,anonuid=1100,anongid=1100,no_subtree_check)

Где:

  • /mnt/cahce –путь к папке, для которой раздается доступ;
  • 192.168.25.0 – IP-адрес, которому раздается доступ к папке (можно указать всю сеть, тогда запись примет вид 192.168.1.0/24).
  • (rw,no_root_squash,sync) – набор опций, опции могут быть:
    • rw –чтение запись(может принимать значение ro-только чтение);
    • no_root_squash – по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;
    • nohide — NFS автоматически не показывает нелокальные ресурсы (например, примонтированые с помощью mount –bind), эта опция включает отображение таких ресурсов;
    • subtree_check (no_subtree_check) — в некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опции no_subtree_check. Опция subtree_check, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска.

3.8. Выполните команду

Для публикации сетевых директорий:

exportfs -ra

4. Роль DS

4.1. Установите nginx

dnf install nginx -y

4.1.1. Запустите сервис

systemctl enable nginx --now

4.2. Примонтируйте каталоги

# устанавливаем пакет
dnf install nfs-utils
 
# Создаём группу и пользователя (id теже, что и на nfs должны быть)
groupadd -g 1100 ds
useradd -u 1100 -g 1100 ds
 
# Создаём каталоги
mkdir /var/lib/r7-office/documentserver/App_Data/cache -p
mkdir /var/www/r7-office/Data -p
 
# Назначаем права
chown ds:ds -R /var/lib/r7-office/
chown ds:ds -R /var/www/r7-office/
 
# Примонтировать
sudo mount -t nfs -O uid=1100,iocharset=utf-8 192.168.25.146:/mnt/cache /var/lib/r7-office/documentserver/App_Data/cache
sudo mount -t nfs -O uid=1100,iocharset=utf-8 192.168.25.146:/mnt/data /var/www/r7-office/Data

Где:

  • 192.168.25.146 — ip nfs сервера;
  • /mnt/cahce и /mnt/data— каталог на nfs сервере;
  • /var/www/r7-office/Data и /var/lib/r7-office/documentserver/App_Data/cache — пути монтирования на ВМ с DS.

4.3. Проверьте монтирование

df -h

Примерный вывод:

4.4. Добавьте запись в /etc/fstab

192.168.25.146:/mnt/cache /var/lib/r7-office/documentserver/App_Data/cache nfs defaults 0 0
192.168.25.146:/mnt/data /var/www/r7-office/Data nfs defaults 0 0

Где:

  • 192.168.25.146 — ip nfs сервера;
  • /mnt/cache и /mnt/data — каталог на nfs сервере;
  • /var/www/r7-office/Data и /var/lib/r7-office/documentserver/App_Data/cache — пути монтирования на ВМ с DS.

4.5. Добавьте репозиторий

В файл:

/etc/yum.repos.d/r7server.repo

Добавьте строки:

[r7server]
name=r7server
baseurl=https://downloads.r7-office.ru/repository/r7-server-yum/
enabled=1
gpgcheck=1
gpgkey=https://download.r7-office.ru/repos/RPM-GPG-KEY-R7-OFFICE.public
sslverify=1
username=server
password=KwmuQmOzuFIw9wcJsL3zb

Обновите список репозиториев с подгружаемыми данными:

dnf makecache

4.6. Добавьте в hosts

Добавьте записи для сервисов в /etc/hosts

192.168.25.102 rabbitmq
192.168.25.102 redis
192.168.25.102 postgresql
Уточнение

ip для сервисов может быть разный или у Вас может быть свой DNS с уже сделанными записями, поэтому данный пункт можете пропустить.

4.7. Установите DS

# Установим пакет
dnf install r7-office-documentserver-ee

4.8. Запустите скрипт конфигурации

Обратите внимание

Если это первая инсталляция, то файла этого нет, можете сделать рандомный секрет, например, командой ниже:
AuthorizationJwt можете использовать по умолчанию.

cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32

4.8.1. Задайте секрет и хедер

declare -x JWT_SECRET=VrTMopwWwGP1
declare -x JWT_HEADER=AuthorizationJwt
Обратите внимание

Это параметры из файла /etc/r7-office/documentserver/local.json
Должны быть ОДИНАКОВЫ для всех ВМ с DS в кластере, если используется JWT.

Если JWT необходимо отключить, то выполните данную команду:

declare -x JWT_ENABLED=false

4.8.2. Запустите скрипт

bash documentserver-configure.sh

Будут запрошены данные.

4.8.2.1. Для PostgreSQL
  • Host: postgresql
  • Database: r7office
  • User: r7office
  • Password: r7office

Где:

  • host — ip сервера с PostgreSQL или его dns имя (в данном примере запись из п.4.6);
  • Database — имя Базы Данных;
  • User — Имя пользователя;
  • Password — Пароль от пользователя.
4.8.2.2. Для Redis
  • Host: rabbitmq
  • User: r7office
  • Password: r7office

Где:

  • host — ip сервера с RabbitMQ или его dns имя (в данном примере запись из п.4.6);
  • user — пользователь для подключения;
  • password — пароль от пользователя.

Измените подключение к rabbitmq в /etc/r7-office/documentserver/local.json на следующий параметр:

"rabbitmq": { "url": "amqp://r7office:r7office@rabbitmq:5672?frameMax=8192" },

Так же добавите блок Redis после блока «CoAuthoring": { "sql", ... },:

"redis": {
  "host": "redis",
  "port": 6379
},

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

"CoAuthoring": {
  "sql": {
    "dbHost": "postgresql",
    "dbName": "r7office",
    "dbUser": "r7office",
    "dbPass": "r7office",
    "type": "postgres",
    "dbPort": "5432"
  },
  "redis": {
    "host": "redis",
    "port": 6379
  },
  "token": {

4.9. Проверьте статус служб

systemctl status ds*

Примерный вывод:

4.10. Обновите параметр для nginx

Следующие действия обновят параметр secure_link_secret в файлах:

/etc/r7-office/documentserver/local.json
/etc/r7-office/documentserver/nginx/ds.conf

4.10.1. Для Nginx

4.10.2. Для DS

Обратите внимание

Данный параметр должен быть также одинаковым на всех нодах DS.

4.10.3. Установите значение параметра

declare -x SECURE_LINK_SECRET=bC8xyZpur6WjunjL01gL

4.10.4. Выполните скрипт

bash documentserver-update-securelink.sh

5. Проверьте страницу DS

http://192.168.25.234/

Где:

  • 192.168.25.234 — ip адрес DS..

Пример страницы:

5.1. Проверить страницу на балансировщике/reverse proxy

https://ds-cluster.devr7.ru/

Где:

  • ds-cluster.devr7.ru — dns имя балансировщика/reverse proxy.

Пример страницы:

5.2. Повторите п.4 для каждого сервера DS.

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое