Содержание
Кластер не прошёл тестирование, статья выложена без всех стадий тестирования и проверок, поэтому может быть не актуальна и иметь ошибки.
0. Схема
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 по методу md51.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
- Пример вывода:
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
— интерфейсы, которые необходимо слушать приложению Redis1.2.4. Перезапустите сервис
systemctl restart redis
1.2.5. Проверьте, слушаются ли порты
netstat -lpn | grep redis
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 сервера с RabbitMQ1.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. Роль балансировщика
При включенной службе 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
- Пример вывода:
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
- Пример вывода:
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- Пример страницы:
4.5. Проверьте веб страницу на балансировщике/reverse proxy
https://astracl-ds.uatr7.ru/
astracl-ds.uatr7.ru
— dns имя балансировщика/reverse proxy- Пример страницы: