• Post category:Версия для Linux
  • Запись изменена:15.04.2024

Содержание

Кластер не прошёл тестирование, статья выложена без всех стадий тестирования и проверок, поэтому может быть не актуальна и иметь ошибки.

0. Схема

Кластер DS Astra Linux

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

apt install postgresql -y

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

sudo -i -u postgres psql -c "CREATE USER r7office WITH password 'r7office';"
sudo -i -u postgres psql -c "CREATE DATABASE r7office OWNER r7office;"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE r7office TO r7office;"

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

systemctl enable postgresql

1.1.4. Приведите файл /etc/postgresql/11/main/pg_hba.conf к виду:

Версия PostgreSQL может отличаться.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
 
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    r7office        r7office        192.168.25.234/32       md5
host    r7office        r7office        192.168.25.130/32       md5
host    r7office        r7office        192.168.25.203/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. Приведите строки в файле /etc/postgresql/11/main/postgresql.conf к виду и раскомментируйте их

listen_addresses = 'localhost, 192.168.25.56'
port = 5432
Где:
localhost, 192.168.25.56 — интерфейсы, которые должен слушать PostgreSQL (чтобы слушались все интерфейсы можно также указать ‘*’)

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

systemctl restart postgresql
  • Проверяем:
systemctl status postgresql

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

netstat -tln | grep 5432
  • Пример вывода:

Кластер DS Astra Linux

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

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

apt install redis -y

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

systemctl start redis-server
systemctl enable redis-server

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

bind 127.0.0.1 192.168.25.56
protected-mode no
Где:
bind 127.0.0.1 192.168.25.102интерфейсы, которые необходимо слушать приложению Redis

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

systemctl restart redis

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

netstat -lpn | grep redis

Кластер DS Astra Linux

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

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

apt install rabbitmq-server -y

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

systemctl enable rabbitmq-server --now

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

listeners.tcp.other_ip = 192.168.25.56:5672
Где:
192.168.25.56 — ip сервера с RabbitMQ

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

systemctl restart rabbitmq-server
systemctl status rabbitmq-server

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

netstat -lpn | grep beam
  • Пример вывода:

Кластер DS Astra Linux

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. Роль балансировщика

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

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

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

apt install nginx -y

2.1.1. Запустите службу nginx

systemctl enable nginx --now

2.2. Создайте конфигурационные файлы

2.2.1. Общий конфигурационный файл

nano /etc/nginx/conf.d/r7-proxy.conf
  • с содержимым
upstream ds {
  server <IP_DS>;
}
 
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;
}
Где:
В блоке upstream ds {} — указываем IP адреса серверов DS
<IP_DS> – приватные ip адреса нод с Document Server

2.2.2. Конфигурационный файл для DS

nano /etc/nginx/conf.d/r7-ds.conf
  • с содержимым
server {
  listen 80;
  server_name <DNS_DS>;
  server_tokens off;
  ## Redirects all traffic to the HTTPS host
  return 301 https://$server_name$request_uri;
}
 
server {
  listen 443 ssl http2;
  server_name <DNS_DS>;
  server_tokens off;
  root /usr/share/nginx/html;
   
  ssl_certificate <SSL_CERTIFICATE_PATH>;
  ssl_certificate_key <SSL_KEY_PATH>;
  ssl_verify_client off;
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
   
  ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_session_cache builtin:1000 shared:SSL:10m;
   
  ssl_prefer_server_ciphers on;
   
  add_header X-Content-Type-Options nosniff;
   
  location / {
    proxy_pass http://ds;
    proxy_http_version 1.1;
     
    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;
  }
}

Где:

<DNS_DS> – имя для сервиса DS,
Например: astracl-ds.uatr7.ru

<SSL_CERTIFICATE_PATH> – путь до ssl сертификата,
Например: ssl_certificate /etc/nginx/ssl/uatr7.ru.crt;

<SSL_KEY_PATH> – путь до приватного ключа сертификата,
Например ssl_certificate_key /etc/nginx/ssl/uatr7.ru.key;

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

nginx -t
  • Пример вывода:

Кластер DS Astra Linux

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

systemctl restart nginx

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

3.1. Подготовка к установке ПО Samba

Рассмотрим вариант простого samba хранилища на Astra Linux 1.7.4 Orel

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

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

3.1.1. Установите ПО Samba

apt install samba -y

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

systemctl enable smbd.service

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

mkdir /mnt/cache
mkdir /mnt/data

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

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

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

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

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

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

systemctl stop ds-* --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/

3.3.1. Создайте пользователя «ds»

UID и GID пользователя ds должны быть одинаковые на всех ВМ с ПО Р7 Сервер Документов и samba хранилищем

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

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

vi /etc/samba/smb.conf
  • с содержимым
[cache]
comment = DS cache
path = /mnt/cache/
valid users = ds
write list = ds
read only = no
writable = yes
 
[data]
comment = DS data
path = /mnt/data
valid users = ds
write list = ds
read only = no
writable = yes

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

4. Роль DS

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

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

4.1. Подготовка к установке ПО Р7 Сервер Документов

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

nano /etc/apt/sources.list
  • с содержимым
# Репозиторий Debian
deb https://archive.debian.org/debian/ stretch main contrib non-free

4.1.2. Измените параметр «Pin-Priority» на «500»

nano /etc/apt/preferences.d/smolensk
  • с содержимым
Package: *
Pin: release n=1.7_x86-64
Pin-Priority: 900 на 500

4.1.3. Добавьте репозиторий «r7-office»

sudo apt update && sudo apt install curl -y
sudo echo "deb https://download.r7-office.ru/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/r7-office.list
sudo curl -s https://download.r7-office.ru/repo/gpgkey/r7-office.gpg.key | sudo apt-key add -

4.1.4. Обновите список пакетов

sudo apt update

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

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

192.168.25.56 rabbitmq
192.168.25.56 redis
192.168.25.56 postgresql

4.1.6. Задайте параметры для PostgreSQL, RabbitMQ, Redis

  • Для PostgreSQL
echo r7-office-documentserver-ee ds/db-host string postgresql | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/db-pwd select r7office | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/db-user select r7office | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/db-name select r7office | sudo debconf-set-selections
  • Для RabbitMQ
echo r7-office-documentserver-ee ds/rabbitmq-host string rabbitmq:5672 | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/rabbitmq-user string r7office | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/rabbitmq-pwd password r7office | sudo debconf-set-selections
  • Для Redis
echo r7-office-documentserver-ee ds/redis-host string redis | sudo debconf-set-selections

4.1.7. Задайте «header» и «secret» ,включите «jwt»

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

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

echo r7-office-documentserver-ee ds/jwt-enabled boolean false | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/jwt-header string AuthorizationJWT | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/jwt-enabled boolean true | sudo debconf-set-selections
echo r7-office-documentserver-ee ds/jwt-secret password x8HtBJJavrBlYmXaVaRwcKPTxW | sudo debconf-set-selections
  • Пример содержимого
},
      "token": {
        "enable": {
          "request": {
            "inbox": true,
            "outbox": true
          },
          "browser": true
        },
        "inbox": {
          "header": "AuthorizationJWT"
        },
        "outbox": {
          "header": "AuthorizationJWT"
        }
      },
      "secret": {
        "inbox": {
          "string": "x8HtBJJavrBlYmXaVaRwcKPTxW"
        },
        "outbox": {
          "string": "x8HtBJJavrBlYmXaVaRwcKPTxW"
        },
        "session": {
          "string": "x8HtBJJavrBlYmXaVaRwcKPTxW"
        }

4.1.8. Установите пакеты ПО для подключения файлового хранилища

apt install cifs-utils smbclient -y

4.2. Установите ПО Р7 Сервер Документов

apt-get install r7-office-documentserver-ee -y

4.3. Настройка сервера с ПО Р7 Сервер Документов

4.3.1. Остановите службы

systemctl stop ds-* --all

4.3.2. Создайте файл для авторизации в smb

nano ~/.ds
  • с содержимым
# Логин
username=ds
# Пароль (если не требуется, то можно оставить пустым)
password=M7qcsbs3b5IoXSqa

4.3.3. Измените права

chmod 600 ~/.ds

4.3.4. Добавьте автомонтирование в файл

nano /etc/fstab
  • с содержимым
//192.168.25.56/cache /var/lib/r7-office/documentserver/App_Data/cache cifs credentials=/root/.ds,uid=1100,gid=1100,rw,iocharset=utf8,nofail,_netdev 0 0
//192.168.25.56/data /var/www/r7-office/Data cifs credentials=/root/.ds,uid=1100,gid=1100,rw,iocharset=utf8,nofail,_netdev 0 0
Где:
192.168.25.56 — ip samba сервера,
/mnt/cache и /mnt/data — каталоги на samba сервере
/var/www/r7-office/Data и /var/lib/r7-office/documentserver/App_Data/cache — пути монтирования на ВМ с DS

4.3.5. Измените gid группы и uid пользователя ds

groupmod -g 1100 ds
usermod -u 1100 -g 1100 ds

4.3.6. Назначьте права на директории

chown -R ds:ds /var/lib/r7-office/
chown -R ds:ds /var/www/r7-office/
chown -R ds:ds /etc/r7-office/
chown -R ds:ds /var/log/r7-office/

4.3.7. Выполните монтирование

mount -a

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

df -h
  • Пример вывода:

Кластер DS Astra Linux

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

Данные параметры должны ОДИНАКОВЫ для всех ВМ с DS в кластере

  • Для ds «secretString»
nano /etc/r7-office/documentserver/local.json
  • Для nginx «secure_link_secret«
nano /etc/r7-office/documentserver/nginx/ds.conf

4.3.10. Перезапустите службу Nginx

systemctl restart nginx.service

4.3.11. Перезапустите службы ds и проверьте их статус

systemctl restart ds-* --all
systemctl status ds-* --all

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

http://192.168.25.234/
Где:
192.168.25.234 — ip адрес DS
  • Пример страницы:

Кластер DS Astra Linux

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

https://astracl-ds.uatr7.ru/
Где:
astracl-ds.uatr7.ru — dns имя балансировщика/reverse proxy
  • Пример страницы:

Кластер DS Astra Linux

4.6. Повторите пункт 4 для каждой ноды DS