Содержание
Статья выложена без всех стадий тестирования и проверок, поэтому может быть не актуальна и иметь ошибки.
0. Схема
0.1 Описание
Сервис процессинга отвечает за обработку очередей действий пользователей, синхронизаций и т.п. Вынос его требуется для снижения нагрузки API сервера. Также возможно увеличить количество сервисов Processing, что даёт нам отказоустойчивость в виде нескольких серверов одного сервиса, работающих параллельно.
1. Выполните установку Корпоративного портала 2024
При включенной службе 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. На ВМ с ролью Processing
2.1. Установите ключ репозитория
sudo wget -O - https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null
2.2. Добавьте репозиторий
sudo wget https://packages.microsoft.com/config/debian/10/prod.list -O /etc/apt/sources.list.d/microsoft-prod.list && sudo apt update
2.3. Установите dotnet
sudo wget https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/d/dotnet-host/dotnet-host-7.0.3-x64.deb && sudo apt -y install ./dotnet-host*.deb && sudo rm ./dotnet-host*.deb
2.4. Установите остальные пакеты
sudo apt install supervisor aspnetcore-runtime-3.1 aspnetcore-targeting-pack-3.1 autoconf automake autotools-dev binutils binutils-common binutils-x86-64-linux-gnu dotnet-apphost-pack-3.1 dotnet-hostfxr-3.1 dotnet-runtime-3.1 dotnet-runtime-deps-3.1 dotnet-sdk-3.1 dotnet-targeting-pack-3.1 libbinutils libltdl-dev libodbc1 m4 netstandard-targeting-pack-2.1 odbcinst odbcinst1debian2 unixodbc-dev
2.5. Установите конструктор документов
Необходим для установки, если версия Вашего КС 2024 ниже 2.0.2024.2171
:
wget https://download.r7-office.ru/ubuntu/r7-office-documentconstructor_1.7.4-357_amd64.deb apt install ./r7-office-documentconstructor_1.7.4-357_amd64.deb
3. На ВМ с КП24
При включенной службе firewalld
необходимо выполнить настройку.
# Откройте # Доступ к БД sudo firewall-cmd --permanent --zone=public --add-service=postgresql # Доступ к очереди sudo firewall-cmd --permanent --zone=public --add-service=amqp # Доступ к сервису registry sudo firewall-cmd --permanent --zone=public --add-port=7777/tcp # Доступ к сервису search sudo firewall-cmd --permanent --zone=public --add-port=2664/tcp # Доступ к сервису хранения sudo firewall-cmd --permanent --zone=public --add-port=11581/tcp sudo firewall-cmd --permanent --zone=public --add-port=11580/tcp # Перезапустите службу firewalld sudo firewall-cmd --reload # Проверьте правила для зоны public sudo firewall-cmd --zone=public --list-all
3.1. Заархивируйте необходимые файлы и директории
tar czvf processing.tar.gz --selinux /opt/r7-office/Processing /var/log/r7-office/CDDisk/R7.Storage.Server.Processing.Host /var/log/r7-office/CDDisk/Processing /etc/supervisor /var/r7-office/filestorage_temp_proc
3.2. Перенесите удобным Вам способом на ВМ с ролью Процессинг
Например, через scp
:
scp processing.tar.gz ipВМпроцессинга:/root/
3.3. Узнайте uid и gid пользователя cddisk
id cddisk
Вывод:
id cddisk uid=120(cddisk) gid=132(cddisk) группы=132(cddisk)
3.4. Удалите конфигурационный файл
rm /etc/supervisor/conf.d/cddisk-processing.conf
3.5. Отредактируйте файл
vi /etc/supervisor/conf.d/cddisk.conf
Приведите к виду:
[group:cddisk] programs=api,filestorage,searchapi,registry,apisso
3.5. Перезапустите сервисы
systemctl restart supervisor.service supervisorctl restart all
3.6. Открыть доступ к RabbitMQ
3.6.1. Отредактируйте файл
nano /etc/rabbitmq/rabbitmq.conf
Приведите в нём параметры к виду:
listeners.tcp.default = 127.0.0.1:5672 listeners.tcp.other_ip = 192.168.27.77:5672
Если файла или параметров нет, то создайте их самостоятельно.
Где:
listeners.tcp.default
— слушается интерфейс127.0.0.1
на порту5672
;listeners.tcp.other_ip
— слушается интерфейс192.168.27.77
на порту5672
.
3.6.2. Перезапустите сервис
systemctl restart rabbitmq-server
3.6.2.1. Проверьте, что все интерфейсы слушаются
netstat -tulpan | grep 5672
Вывод:
netstat -tulpan | grep 5672 tcp 0 0 127.0.0.1:5672 0.0.0.0:* LISTEN 15118/beam.smp tcp 0 0 192.168.27.77:5672 0.0.0.0:* LISTEN 15118/beam.smp
3.6.3. Создайте хост и пользователя
3.6.3.1. Создайте пользователя для Процессинга
rabbitmqctl add_user processing processing
Где:
processing
— имя пользователя;processing
— пароль пользователя.
3.6.3.2. Выдайте права пользователю
rabbitmqctl set_permissions -p / processing ".*" ".*" ".*"
3.6.3.3. Создайте хост
С данного хоста будет разрешено подключение:
rabbitmqctl add_vhost 192.168.25.234
Где:
192.168.25.234
— IP-адрес сервера с Процессингом. Если таких ВМ несколько, то выполните для каждого IP.
3.6.3.3. Дайте права для ВМ с Процессингом
rabbitmqctl set_permissions -p 192.168.25.234 processing ".*" ".*" ".*"
Где:
192.168.25.234
— IP-адрес сервера с Процессингом. Если таких ВМ несколько, то выполните для каждого IP;processing
— имя созданного в п.3.6.3.1 пользователя.
3.7. Настроить доступ к БД
3.7.1. Отредактируйте файл pg_hba
vi /etc/postgresql/11/main/pg_hba.conf
Добавьте следующую строку:
host cddisk cddisk 192.168.25.234/32 md5
Где:
cddisk
— имя базы данных;cddisk
— имя пользователя, с доступом к БДcddisk
;192.168.25.234/32
— IP, с которого разрешено подключение;md5
— метод авторизации.
Если ВМ с Процессингом несколько, то добавьте для каждой строку.
3.7.2. Перезапустите сервис
systemctl restart postgresql
3.8. Отредактируйте файл сервиса Registry
vi /opt/r7-office/Service.Registry/appsettings.json
Приведите параметры к виду:
}, "AllowedHosts": "*", "Clients": [ { "id": "IFileStorageService", "host": "http://192.168.27.77:11580/" }, { "id": "IFileStorageRestService", "host": "http://192.168.27.77:11580/" }, { "id": "IFolderStorageRestService", "host": "http://192.168.27.77:11580/" }, { "id": "ITcpFolderStorageService", "Address": "192.168.27.77", "Port": "11581" }, { "id": "ITcpFileStorageService", "Address": "192.168.27.77", "Port": "11581" }, { "id": "ISearchService", "host": "http://192.168.27.77:2664" } ], "ServiceRegistry": { "Host": "http://+:7777" }
Где:
192.168.27.77
— IP ВМ, где находится сервисfilestorage
и сервисsearch
. Если эти ВМ являются разными, то указать верные значения.
3.9. Отредактируйте appsettings файл сервиса Filestorage
vi /opt/r7-office/FileStorage/appsettings.json
Приведите параметры к виду:
}, "AllowedHosts": "*", "FileStorage": { "Host": "http://+:11580" }
3.10. Отредактируйте filestorage файл сервиса Filestorage
vi /opt/r7-office/FileStorage/filestorage.json
Приведите параметры к виду:
"Connection": { "Tcp": { "Address": "0.0.0.0", "Port": 11581 }
3.11. Перезапустите сервисы
supervisorctl restart all
4. На ВМ с Процессингом
4.1. Создание группы и пользователя cddisk
Из п.3.3. Вы узнали uid
и gid
пользователя.
Создайте его с помощью следующих команд:
4.1.1. Создайте группу
groupadd -g 132 cddisk
Где:
132
— id группы;cddisk
— имя группы.
4.1.2. Создайте пользователя
useradd -u 120 -g 132 cddisk
Где:
120
— id пользователя;132
— id группы;cddisk
— имя пользователя.
4.2. Распакуйте архив
tar xzvf processing.tar.gz --selinux -C /
4.3. Удалите лишние конфигурационные файлы
rm /etc/supervisor/conf.d/{cddisk-api,cddisk-filestorage,cddisk-registry,cddisk-ssoapi,cddisk-searchapi}.conf
4.4. Отредактируйте файл
vi /etc/supervisor/conf.d/cddisk.conf
Приведите к виду:
[group:cddisk] programs=processing
4.5. Отредактируйте файл
vi /opt/r7-office/Processing/appsettings.json
Измените следующие параметры:
4.5.1. Хост с Registry
Укажите верный IP (в данном примере, это IP ВМ с КС 2024):
"serviceRegistry": { "address": "http://192.168.27.77:7777" },
4.5.2. Хост с Search
Укажите верный IP-адрес (в данном примере, это IP-адрес ВМ с КС 2024). С версии 2.0.2024.2716
данный параметр не актуален:
"documentSearchServiceSettings": { "host": "http://192.168.27.77:2664" },
4.5.3. Хост с БД
Укажите верный IP, т.к. остальные данные не изменяли (в данном примере, это IP ВМ с КС 2024):
"R7StorageServerUserActions": "Database=cddisk;Username=cddisk;Password=СЕКРЕТ;Host=192.168.27.77;Port=5432;", "R7StorageServer": "Database=cddisk;Username=cddisk;Password=СЕКРЕТ;Host=192.168.27.77;Port=5432;",
4.5.4. Хост с RabbitMQ
Укажите верный IP-адрес, пользователя и пароль (в данном примере, это IP ВМ с КС 2024, а пользователя создали в п.3.6.3):
"rabbitMq": { "host": "192.168.27.77", "username": "processing", "password": "processing", "timeout": 10 },
4.6. Отредактируйте файл services
vi /opt/r7-office/Processing/services.json
Приведите параметры к виду:
{ "name": "ConvertDocumentMessageHandler", "type": "ConvertDocumentMessageHandler", "subscriptionEndpoint": "Convert.Document", "publicationEndpoint": "", "useExchange": true, "degreeOfParallelism": 5, "retry": true, "retryCount": 2, "process": "/bin/documentconstructor" }, { "name": "IndexingDocumentMessageHandler", "type": "IndexingDocumentMessageHandler", "subscriptionEndpoint": "Indexing.Document", "publicationEndpoint": "", "useExchange": true, "degreeOfParallelism": 3, "retry": true, "retryCount": 2, "process": "/bin/documentconstructor" },
Где:
/bin/documentconstructor
— путь до исполняемого файла Конструктора Документов, который установили в п. 2.5 (не актуально для версии КС 2024 выше2.0.2024.2171
).
4.7. Перезапустите сервис
systemctl restart supervisor.service supervisorctl restart all