Содержание
- 0. Технические требования
- 1. Архитектура
- 2. Роль PostgreSQL
- 3. Роль DS
- 3.1. Установка зависимостей
- 3.2. Установите NGINX
- 3.3. Установка и настройка PostgreSQL
- 3.4. Инициализируйте базу данных PostgreSQL
- 3.5. Запустите PostgreSQL
- 3.6. Создайте БД и пользователя
- 3.7. Установите вспомогательных сервисов
- 3.8. Запустите сервисы
- 3.9. Установите дополнительные пакеты
- 3.10. Установка Сервера Документов
- 3.11. Запустите DS
- 3.12. Переведите на https
- 3.13. Регистрация DS
- 4. Роль Р7 Диск
- 4.1. Скачайте архив дистрибутива
- 4.2. Разметите архив в /mnt
- 4.3. Распакуйте
- 4.4. Для HTTPS
- 4.5. Добавьте права на исполнение скрипту
- 4.6. Запустите установку (В зависимости от версии дистрибутива, шаги могут отличаться)
- 4.7. В процессе установки
- 4.7.1. Чистая установка
- 4.7.2. Установка СУБД на локальную ВМ
- 4.7.3. Установка Сервера Документов
- 4.7.4. Установка CDDisk api & web
- 4.7.5. Выбрать PostgreSQL
- 4.7.6. Создание БД
- 4.7.7. Хост СУБД
- 4.7.8. Пароль от пользователя cddisk
- 4.7.9. coremachinkey от Корпоративного сервера 2019
- 4.7.10. Настройка https
- 4.7.11. Укажите домен
- 4.7.12. Установить Р7 Почтовый сервер
- 4.7.13. Перезагрузка сервера
- 4.8. Интеграция корпоративного сервера 2024 с вынесенным сервером документов
- 5. Роль Поиск
- 5.1. Установите зависимости
- 5.2. Перенесите конфигурационные файлы
- 5.2.1. Архивируйте их на сервере с ролью Р7 Диск
- 5.2.2. Перенесите удобным вам способом архив на сервер с ролью search
- 5.2.3. Узнайте uid и gid пользователя cddisk на сервере с ролью Р7 Диск
- 5.2.4. Удалите конфигурационный файл на сервере с ролью Р7 Диск
- 5.2.5. Отредактируйте файл
- 5.2.6. Отредактируйте файл сервиса Registry
- 5.2.7. Перезапустите сервис
- 5.3. На сервере с ролью Search
- 5.4. Проверьте работу поиска
- 6. Роль NFS (опционально)
- 7. Подключение сетевых каталогов
- 8. Настройка потоковой репликации Master-Slave PostgreSQL
Для установки потребуется wildcard сертификат, содержащий полную цепочку (fullchain)
Например:
—-BEGIN CERTIFICATE——
(Your Primary SSL certificate: your_domain_name.crt)
——END CERTIFICATE——
——BEGIN CERTIFICATE——
(Your Intermediate certificate: DigiCertCA.crt)
——END CERTIFICATE——
——BEGIN CERTIFICATE——
(Your Root certificate: TrustedRoot.crt)
——END CERTIFICATE——
Где:
Основной Certificate — your_domain_name.crt
Промежуточный Certificate — DigiCertCA.crt
Корневой Certificate — TrustedRoot.crt
0. Технические требования
- 6 Виртуальных машин (без slave и файлового сервера — 4);
- Для сервера NFS дополнительно 3 диска (для Р7 Диск, для Сервера документов, для Сервера поиска);
- ТХ Машин, для тестирования, возможно использовать:
- от 2 CPU;
- от 4Гб RAM (для ролей Поиска и Р7-диска рекомендуем использовать от 8Гб);
- от 20Гб свободного пространства на диске;
- Более конкретные данные рассчитываются по обращению в ТП;
- Отключение или перевод selinux в режим permissive для корректной работы сервисов.
В состав дистрибутива Корпоративный сервер 2024 не включён модуль Р7 Графика. Для установки модуля Р7 Графика необходимо воспользоваться инструкциями, опубликованными в разделе: Р7 Графика > Установка ↗.
1. Архитектура
1.1. Схема

1.2. Описание
1.2.1. Роль Р7 Диск
Фронт и бэкенд сервиса Р7 Диска, модули Р7 Диск, Р7 Почта, Р7-Управление, Р7 Календарь и т.д. Хранение и обработка пользовательских сессий и файлов
1.2.2. Роль PostgreSQL
Хранение информации о пользователях, файлах, ролях, событиях и т.п. Критически важная роль для работы продукта
1.2.3. Роль Поиск
Отвечает за поиск файлов и писем в продукте Р7 Диск, крайне требователен к ресурсам сервера. Чем больше данных и чаще ведётся поиск, тем больше требуется ресурсов.
1.2.4. Роль NFS сервер
Является файловым хранилищем, в данном примере является хранилищем пользовательских файлов и индексов в Р7 Диске и Сервисе Поиска, а также хранение кэша и лицензии Сервера документов.
1.2.5. Роль Сервер документов
Отвечает за функционал редактирования документов
2. Роль PostgreSQL
При включенной службе firewalld необходимо выполнить настройку для PostgreSQL.
# Добавляем службу: firewall-cmd --permanent --zone=public --add-service=postgresql # Перезапускаем службу firewalld: firewall-cmd --reload # Проверяем правила для зоны public: firewall-cmd --zone=public --list-all
2.1. Установите PostgreSQL
apt-get update && apt-get install -y postgresql14-server /etc/init.d/postgresql initdb
2.2. Отредактируйте postgresql.conf
vim /var/lib/pgsql/data/postgresql.conf
Приводим параметры к виду:
listen_addresses = 'localhost,192.168.26.48' # what IP address(es) to listen on; port = 5432
Где:
localhost,192.168.26.48— адреса, которые слушает сервис;5432— порт, который сервис прослушивает.
2.3. Измените pg_hba.conf
vim /var/lib/pgsql/data/pg_hba.conf
Добавьте строку:
host cddisk cddisk 192.168.26.99/24 trust host pagesdb cddisk 192.168.26.99/24 trust host cddisk postgres 192.168.26.99/24 trust host pagesdb postgres 192.168.26.99/24 trust host postgres postgres 192.168.26.99/24 trust
Где:
cddisk— имя базы данных р7-диска;cddisk— имя пользователя для р7-диска;pagesdb— имя базы данных для модуля Р7 Страницы;192.168.26.99— адрес, с которого будет подключаться р7-диск.
2.4 Запустите службу БД и добавьте в автозагрузку
systemctl enable postgresql.service --now
2.5. Создайте пользователя и БД
su - postgres -s /bin/bash -c "psql -c \"CREATE DATABASE cddisk;\"" su - postgres -s /bin/bash -c "psql -c \"CREATE USER cddisk WITH password 'cddisk';\"" su - postgres -s /bin/bash -c "psql -c \"GRANT ALL privileges ON DATABASE cddisk TO cddisk;\"" su - postgres -s /bin/bash -c "psql -c \"CREATE DATABASE pagesdb OWNER cddisk;\"" su - postgres -s /bin/bash -c "psql -c \"GRANT ALL privileges ON DATABASE pagesdb TO cddisk;\""
Где:
cddisk— имя БД для работы р7-диск;cddisk— пользователь с доступом к БДcddisk;cddisk— пароль от пользователяcddisk;pagesdb— имя базы данных для модуля Р7 Страницы.
3. Роль DS
Актуальная инструкция на странице ↗.
При включенной службе firewalld необходимо выполнить настройку для DS.
# Добавляем службу: firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --permanent --zone=public --add-service=http # Перезапускаем службу firewalld: firewall-cmd --reload # Проверяем правила для зоны public: firewall-cmd --zone=public --list-all
3.1. Установка зависимостей
sudo apt-get update && sudo apt-get install -y xorg-x11-font-utils cabextract
3.2. Установите NGINX
sudo apt-get install nginx
После этого отредактируйте конфигурационный файл NGINX /etc/nginx/nginx.conf, чтобы он выглядел следующим образом:
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '3595remote_addr - 3595remote_user [3595time_local] "3595request" '
'3595status 3595body_bytes_sent "3595http_referer" '
'"3595http_user_agent" "3595http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-enabled.d/*;
}
3.3. Установка и настройка PostgreSQL
sudo apt-get install postgresql12 postgresql12-server -y
3.4. Инициализируйте базу данных PostgreSQL
sudo /etc/init.d/postgresql initdb
3.5. Запустите PostgreSQL
systemctl enable --now postgresql
Проверьте включён ли метод аутентификации «trust» для адреса localhost в формате IPv4 и IPv6:
Откройте файл /var/lib/pgsql/data/pg_hba.conf в текстовом редакторе:
vi /var/lib/pgsql/data/pg_hba.conf
Пример:
# "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 ident на trust # IPv6 local connections: host all all ::1/128 ident на trust # Allow replication connections from localhost, by a user with the # replication privilege. local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust
Перезапустите сервис PostgreSQL:
sudo systemctl restart postgresql sudo systemctl enable postgresql
3.6. Создайте БД и пользователя
sudo -u postgres psql -c "CREATE USER r7office WITH password 'r7office';" sudo -u postgres psql -c "CREATE DATABASE r7office OWNER r7office;" sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE r7office TO r7office;"
3.7. Установите вспомогательных сервисов
sudo apt-get install rabbitmq-server redis -y
3.8. Запустите сервисы
sudo systemctl enable rabbitmq redis sudo systemctl start rabbitmq redis
3.9. Установите дополнительные пакеты
apt-get install ca-certificates apt-https
3.10. Установка Сервера Документов
3.10.1. Добавьте репозиторий для установки зависимостей
apt-repo add "rpm https://alt-repo.r7-office.ru r7server/x86_64 r7server" apt-get update
3.10.2. Установите пакета
apt-get install r7-office-documentserver-ee -y
3.11. Запустите DS
sudo systemctl start ds-docservice.service sudo systemctl start ds-converter.service sudo systemctl start ds-metrics.service sudo systemctl enable ds-docservice.service sudo systemctl enable ds-converter.service sudo systemctl enable ds-metrics.service sudo systemctl start nginx.service sudo systemctl enable nginx.service
3.11.1. Настройка сервера документов
Запустите скрипт documentserver-configure.sh для конфигурирования:
bash documentserver-configure.sh
Вам будет предложено указать параметры подключения к PostgreSQL, Redis и RabbitMQ. Используйте следующие данные:
Для PostgreSQL:
Host: localhost;Database: r7office;User: r7office;Password: r7office.
Где:
host— ip сервера с PostgreSQL или его dns имя (в данном примереlocalhost);Database— имя Базы Данных;User— Имя пользователя;Password— Пароль от пользователя.
Для AMQP:
Host: localhost;User: guest;Password: guest.
Где:
host— ip сервера с RabbitMQ или его dns имя (в данном примереlocalhost);user— пользователь для подключения;password— пароль от пользователя.
3.11.2. JWT_SECRET
Выполните:
documentserver-jwt-status.sh
Запомните значение JWT_SECRET, т.к. пригодится на шаге установки Р7 Диска.
3.12. Переведите на https
Актуальная инструкция на странице ↗.
3.12.1. Создайте директорию
sudo mkdir /var/www/r7-office/Data/ssl
3.12.2. Поместите сертификат и ключ в таком виде
/var/www/r7-office/Data/ssl/имя_файла.crt /var/www/r7-office/Data/ssl/имя_файла.key
Где:
имя_файла— домен или произвольное название.
3.12.3. Замените конфигурационный файл на https
sudo cp /etc/r7-office/documentserver/nginx/ds.conf /etc/r7-office/documentserver/nginx/ds.conf_orig sudo cp -f /etc/r7-office/documentserver/nginx/ds-ssl.conf.tmpl /etc/r7-office/documentserver/nginx/ds.conf
3.12.4. Измените конфигурационный файл
vim /etc/r7-office/documentserver/nginx/ds.conf
В разделе HTTPS host изменить строки:
# Закомментировать #ssl on # Изменить ssl_certificate /var/www/r7-office/Data/ssl/имя_файла.crt; ssl_certificate_key /var/www/r7-office/Data/ssl/имя_файла.key;
Где:
имя_файла— домен или произвольное название.
3.12.5. Проверьте конфигурацию
nginx -t
3.12.6. Перезапустите сервис nginx
systemctl restart nginx
3.12.7. Запустите скрипт для обновления секрета storage
bash /usr/bin/documentserver-update-securelink.sh
3.13. Регистрация DS
Если вы приобрели Р7 Офис. Профессиональный. Сервер документов и получили файл license.lic. Вы можете поместить его в инсталляцию, для получения полной версии программы.
Если вы используете дистрибутив Linux на базе Debian, файл license.lic помещается в следующую папку:
/var/www/r7-office/Data/license.lic
Имя файла лицензии должно быть строго license.lic.
После этого ваша версия Р7 Офис. Профессиональный. Сервер документов станет зарегистрированной и полнофункциональной.
4. Роль Р7 Диск
Актуальная инструкция на странице ↗.
При включенной службе firewalld необходимо выполнить настройку для Р7 Диск.
# Добавляем службу: sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --permanent --zone=public --add-service=http # Перезапускаем службу firewalld: sudo firewall-cmd --reload # Проверяем правила для зоны public: sudo firewall-cmd --zone=public --list-all
4.1. Скачайте архив дистрибутива
4.2. Разметите архив в /mnt
4.3. Распакуйте
unzip AltServer*.zip
4.4. Для HTTPS
Для корректной работы Корпоративного сервера обязательно требуется настройка HTTPS. Перед установкой, скопируйте crt и key файлы в папку /mnt/sslcert.
Имя файла должно содержать название домена и расширение.
Например, для домена r7.ru имена файлов должны быть r7.ru.crt и r7.ru.key.
Важно:
Потребуется использовать ssl сертификат типа wildcard с соответствующей А записью (пример, *.yourdomain.ru) на используемом DNS сервере в сети сервера.
Для интеграции Р7-Корпоративный сервер 2024 с Р7 Команда сертификат должен быть с шифрованием RSA.
4.5. Добавьте права на исполнение скрипту
chmod +x online_installer.sh
4.6. Запустите установку (В зависимости от версии дистрибутива, шаги могут отличаться)
./online_installer.sh
4.7. В процессе установки
4.7.1. Чистая установка
Если требуется выполнить чистую установку (удалит имеющуюся инсталляцию Р7 Диск и зависимости):
- Выберите Да:

4.7.2. Установка СУБД на локальную ВМ
Install PostgreSQL:
- Выберите Нет:

4.7.3. Установка Сервера Документов
Если версия устанавливаемого корпоративного сервера 2024 ниже 14000, то для корректной установки Роли Р7 Диск требуется document-server. Поэтому во время установки будем использовать локальный документ сервер, а потом его вынесем на отдельную ВМ.
Установка Сервер Документов:
- Выберите Да:

4.7.3.1. JWT Key Document Server
Укажите Секрет установленного Document Server.
- Его значение сохраняли в п. 2.11.2, значение jwt-secret:

4.7.3.2. Пароль для базы данных DS

4.7.4. Установка CDDisk api & web
- Выберите Да:

4.7.5. Выбрать PostgreSQL
- Выберите PostgreSQL:

4.7.6. Создание БД
Выберите:
- Нет:

4.7.7. Хост СУБД
Укажите ip сервера с СУБД:

4.7.7.1. Порт СУБД
Укажите port сервера с СУБД:
- По умолчанию 5432, порт задавали в п.1.2:

4.7.7.2. Пользователь с правами создания БД
Укажите cddisk:

4.7.8. Пароль от пользователя cddisk
Укажите пароль пользователя cddisk, что был задан в п.2.4:

4.7.9. coremachinkey от Корпоративного сервера 2019
- Измените на актуальный, если есть Р7 Офис Корпоративный сервер 2019 и нажмите ОК;
- Если нет, нажмите Ок без редактирования.

4.7.10. Настройка https
- Выберите Да, если выполнили пункт 3.4;
- В ином случае выберете Нет.

4.7.11. Укажите домен
- Необходимо указать домен, в котором у Вас созданы записи.
Например, при домене r7.ru, необходимо создать запись cddisk.r7.ru.
В значении указываем именно r7.ru, не созданную А запись

4.7.11.1. Префиксы для модулей
Пример для Р7 Диск:

Например, если Вы хотите, чтобы открылся Р7 Диск по адресу disk.r7.ru ↗, то указать нужно именно disk, без указания домена.
Также, необходимо сделать соответствующую А запись в DNS.
4.7.11.2. Остальные префиксы укажите по аналогии и укажите в DNS необходимые записи по префиксам
4.7.12. Установить Р7 Почтовый сервер
- Выбрать Нет:

4.7.13. Перезагрузка сервера
- Ввести Да:

4.8. Интеграция корпоративного сервера 2024 с вынесенным сервером документов
Актуальная инструкция на странице ↗.
4.8.1. На сервере с БД (postgresql) (пункт 2) выведите информацию
sudo -u postgres psql -d cddisk -c "SELECT * FROM public.\"MessageSettings\" WHERE \"Key\" = 'documentServerUrl';" sudo -u postgres psql -d cddisk -c "SELECT * FROM public.\"MessageSettings\" WHERE \"Key\" = 'apiUrlInternal';" sudo -u postgres psql -d cddisk -c "SELECT * FROM public.\"MessageSettings\" WHERE \"Key\" = 'files.docservice.secret';" - где потребуется сохранить значение files.docservice.secret
4.8.1.1. Обновите на новые значения секрет (если требуется) и адрес сервера документов в БД
sudo -u postgres psql -d cddisk -c "UPDATE public.\"MessageSettings\" SET \"Value\"='https://ds.r7o.ru' WHERE \"Key\" = 'documentServerUrl';" sudo -u postgres psql -d cddisk -c "UPDATE public.\"MessageSettings\" SET \"Value\"='https://cddisk.r7o.ru' WHERE \"Key\" = 'apiUrlInternal';"
- Указав вместо
https://ds.r7.ruадрес вынесенного сервера документов (если адрес вынесенного ДС одноименный — нет необходимости менять), для примера, указан в запросе —Value"='https://ds.r7.ru'; - Указав вместо
https://cddisk.r7.ruссылку на сервер документов.
4.8.1.2. Секрет
На вынесенном сервере документов (установили в пункте 3.11.2) укажите секрет из запроса, по значению ключа «Key» = ‘files.docservice.secret’, в файле:/etc/r7-office/documentserver/local.json.
Пример:
"secret": {
"inbox": {
"string": " " // в кавычках указать ключ из селекта п. 4.8.1, по значению ключа "Key" = 'files.docservice.secret'
},
"outbox": {
"string": " " // в кавычках указать ключ из селекта п. 4.8.1, по значению ключа "Key" = 'files.docservice.secret'
},
"session": {
"string": " " // в кавычках указать ключ из селекта п. 4.8.1, по значению ключа "Key" = 'files.docservice.secret'
},
Перезапустите сервис DS (на вынесенном сервере документов) и проверьте статусы сервисов:
systemctl restart ds-* --all systemctl status ds-*
4.8.2. Перезапустите cddisk
supervisorctl restart all
4.8.3. Отключите сервер документов на сервере с ролью Р7 Диск
systemctl stop ds-* systemctl disable ds-metrics.service ds-docservice.service ds-converter.service
4.8.4. Отредактируйте файл /etc/hosts на сервере с ролью Р7 Диск
В файле /etc/hosts на сервере с ролью Р7 Диск удалите запись с ds.r7.ru:
127.0.0.1 ds.r7.ru
4.8.5. Проверьте работу сервера документов
Зайдите на портал Корпоративного сервера 2024 и создайте документ. Проверьте редактирование.
5. Роль Поиск
При включенной службе firewalld необходимо выполнить настройку для nfs.
# Добавляем службу: firewall-cmd --permanent --zone=public --add-port=2664/tcp # Перезапускаем службу firewalld: firewall-cmd --reload # Проверяем правила для зоны public: firewall-cmd --zone=public --list-all
5.1. Установите зависимости
5.1.1. Установите дополнительные пакеты
apt-get update && apt-get install ca-certificates apt-https
5.1.2. Установите пакеты необходимые для запуска сервиса Search
Для версии 14752 и выше выполните установку следующих пакетов:
sudo apt-get install supervisor dotnet-6.0 dotnet-apphost-pack-6.0 dotnet-aspnetcore-runtime-6.0 dotnet-aspnetcore-targeting-pack-6.0 dotnet-common dotnet-host dotnet-hostfxr-6.0 dotnet-runtime-6.0 dotnet-sdk-6.0 dotnet-targeting-pack-6.0 -y
Для версий ниже:
sudo apt-get install dotnet-aspnetcore-3.1 dotnet-sdk-3.1 supervisor -y
5.2. Перенесите конфигурационные файлы
5.2.1. Архивируйте их на сервере с ролью Р7 Диск
Пример команды:
tar czvf search.tar.gz --selinux /opt/r7-office/SearchApi /var/log/r7-office/CDDisk/SearchApi /var/log/r7-office/CDDisk/Bsa.Search.Api.Host /etc/supervisord.d /var/r7-office/searchindex
5.2.2. Перенесите удобным вам способом архив на сервер с ролью search
Пример переноса через scp:
scp search.tar.gz ipВмПоиска:/root/
5.2.3. Узнайте uid и gid пользователя cddisk на сервере с ролью Р7 Диск
id cddisk
Вывод:
uid=479(cddisk) gid=459(cddisk) groups=459(cddisk)
5.2.4. Удалите конфигурационный файл на сервере с ролью Р7 Диск
rm /etc/supervisord.d/cddisk-searchapi.ini
5.2.5. Отредактируйте файл
vim /etc/supervisord.d/cddisk.ini
Приведите к виду:
[group:cddisk] programs=api,filestorage,processing,registry,apisso
5.2.6. Отредактируйте файл сервиса Registry
vi /opt/r7-office/Service.Registry/appsettings.json
Приведите параметры к виду:
.....
},
{
"id": "ISearchService",
"host": "http://192.168.27.218:2664"
}
],
"ServiceRegistry": {
"Host": "http://localhost:7777"
}
}
Где:
192.168.27.218— ip ВМ, где находится сервис search.
Если серверов с сервисом поиска несколько, то вид будет следующим:
.....
},
{
"id": "ISearchService",
"host": "http://192.168.27.218:2664"
},
{
"id": "ISearchService",
"host": "http://192.168.27.219:2664"
}
],
"ServiceRegistry": {
"Host": "http://localhost:7777"
}
}
Где:
192.168.27.218,192.168.27.219— ip ВМ, где находится сервис search.
5.2.7. Перезапустите сервис
systemctl restart supervisord supervisorctl restart all
5.3. На сервере с ролью Search
4.3.1. Создайте группу и пользователя cddisk
# Создаём группу и пользователя на сервере с поиском groupadd -g 459 cddisk # Создаём пользователя с uid 479 и добавляем его в группу с gid 459 useradd -u 479 -g 459 cddisk
Где uid=479 и gid=459, значения, которые мы узнали в пункте 5.2.3.
5.3.2. Распакуйте архив
tar xzvf search.tar.gz --selinux -C /
5.3.3. Удалите лишнее конфигурационные файлы /etc/supervisord.d
rm -Rf /etc/supervisord.d/{cddisk-api,cddisk-processing,cddisk-filestorage,cddisk-registry,cddisk-ssoapi}.ini
5.3.4. Измените файл /etc/supervisord.d/cddisk.ini
Приведите к виду:
[group:cddisk] programs=searchapi
5.3.5. Перезапустите службу
systemctl restart supervisor.service supervisorctl status all
5.4. Проверьте работу поиска
5.4.1. Введите в модуле Диск, в строке поиска, символы из названия документа
Для выдачи результата понадобится время, т.к. сервис только начал работу:

5.4.2. Проверьте дополнительно трафик
На сервере Поиска включите tcpdump, чтобы убедится, идут ли запросы во время заполнения строки поиска:
tcpdump port 2664
Вывод:

6. Роль NFS (опционально)
NFS сервер возможно заменить на дополнительный примонтированный диск.
При включенной службе firewalld необходимо выполнить настройку для nfs.
# Добавляем службу: firewall-cmd --permanent --zone=public --add-service=nfs # Перезапускаем службу firewalld: firewall-cmd --reload # Проверяем правила для зоны public: firewall-cmd --zone=public --list-all
6.1. Установите nfs и запустите
apt-get install nfs-server -y systemctl enable nfs systemctl start nfs
6.2. Создайте каталог
mkdir -p /mnt/nfs/search mkdir /mnt/nfs/cddisk mkdir /mnt/nfs/ds
Где:
/mnt/nfs/search— каталог для файлов Сервера с сервисом Поиска;/mnt/nfs/cddisk— каталог для файлов Р7 Диск;/mnt/nfs/ds— каталог для файлов Сервера Документов.
6.3. Создайте пользователей ds и cddisk
6.3.1. Проверьте на ВМ с сервисом Поиска и ВМ с Р7 Диск uid и gid
id cddisk
Вывод:
[root@sabrr-search-alt10-1 var]# id cddisk uid=479(cddisk) gid=459(cddisk) groups=459(cddisk)
6.3.2. Проверьте на ВМ с Сервером документов uid и gid
id ds
Вывод:
[root@sabrr-ds-alt10-1 ~]# id ds uid=480(ds) gid=459(ds) groups=459(ds)
6.3.2.1. Измените gid и uid на ВМ с Сервером Документов
Если uid или gid пользователя ds совпадает с cddisk, то обновляем значения, потому что значение gid и uid должны быть уникальными для каждой группы и пользователя;:
# Останавливаем службы systemctl stop ds-converter ds-docservice ds-metrics # Изменяем группу и права на каталог groupmod -g 1100 ds usermod -u 1100 -g 1100 ds # Обновляем права на каталоги chown -R ds:ds /var/lib/r7-office /var/www/r7-office /etc/r7-office /var/log/r7-office # Запускаем сервисы systemctl start ds-converter ds-docservice ds-metrics
6.3.3. Создайте пользователя на сервере NFS
6.3.3.1. Для DS
# Создаём группу ds groupadd -g 1100 ds # Создаём пользователя ds и добавляем в группу useradd -u 1100 -g 1100 ds
6.3.3.2. Для Р7 Диска и Поиска
# Создаём группу cddisk groupadd -g 459 cddisk # Создаём пользователя cddisk и добавляем в группу useradd -u 479 -g 459 cddisk
6.4. Измените файл
vim /etc/exports
6.4.1. Добавьте строки
# Шара для сервера с Сервером документов /mnt/nfs/ds 192.168.25.1/32(rw,nohide,all_squash,anonuid=1100,anongid=1100,no_subtree_check) # Шары для сервера с CDDISK и сервера с сервисом поиска /mnt/nfs/cddisk 192.168.25.2/32(rw,nohide,all_squash,anonuid=119,anongid=131,no_subtree_check) /mnt/nfs/search 192.168.25.3/32(rw,nohide,all_squash,anonuid=119,anongid=131,no_subtree_check)
Где:
192.168.25.1— ip сервера DS;192.168.25.2— ip сервера с Р7 Диск;192.168.25.3— ip сервера с сервисом Поиска/.
6.4.2. Обновите права на каталоги
chown cddisk:cddisk /mnt/nfs/cddisk chown cddisk:cddisk /mnt/nfs/search chown ds:ds /mnt/nfs/ds
6.4.3. Включите сетевые каталоги
exportfs -ra
7. Подключение сетевых каталогов
7.1. Установите клиент nfs на северах с ролями DS, Р7 Диск, Search
systemctl stop ds-converter ds-docservice ds-metrics
7.2. Для ВМ с ролью DS
7.2.1. Остановите сервис
systemctl stop ds-converter ds-docservice ds-metrics
7.2.2. Пропишите в fstab сетевой каталог
192.168.27.165:/mnt/nfs/ds /var/lib/r7-office/documentserver/App_Data/cache nfs defaults 0 2
Где:
192.168.27.165— ip сервера nfs;/mnt/nfs/ds— сетевой каталог на сервера nfs;/var/lib/r7-office/documentserver/App_Data/cache— куда монтируем сетевой каталог на сервере с DS.
7.2.3. Скопируйте файлы
cd /var/lib/r7-office/documentserver/App_Data/cache/ mkdir /tmp/backup_ds cp -pr ./ /tmp/backup_ds/
7.2.4. Примонтируйте и скопируйте файлы
cd /tmp/backup_ds mount -a cp -pr ./ /var/lib/r7-office/documentserver/App_Data/cache
7.2.5. Запустите сервисы
systemctl start ds-converter ds-docservice ds-metrics
7.2.6. Проверьте работу редактирования
И что файлы создаются на нашем nfs сервере:

7.3. Для ВМ с ролью Р7 Диск
7.3.1. Остановите сервисы
supervisorctl stop all
7.3.2. Пропишите в fstab
192.168.25.4:/mnt/nfs/cddisk /var/r7-office nfs defaults 0 2
Где:
192.168.25.4— ip сервера nfs;/mnt/nfs/cddisk— сетевой каталог на сервера nfs;/var/r7-office— куда монтируем сетевой каталог на сервере с Р7 Диск.
7.3.3. Скопируйте файлы
cd /var/r7-office mkdir /tmp/backup_cddisk cp -pr ./ /tmp/backup_cddisk
7.3.4. Примонтируйте и скопируйте файлы
cd /tmp/backup_cddisk mount -a cp -pr ./ /var/r7-office
7.3.5. Запустите сервисы
supervisorctl start all
7.3.6. Проверьте работу портала и сохранение документов
7.3.6.1. Создайте файл и отредактируйте его

7.3.6.2. Проверьте его сохранение

7.4. Для ВМ с Сервисом Поиска
7.4.1. Остановите сервис
supervisorctl stop all
7.4.2. Пропишите в fstab сетевой каталог
192.168.25.4:/mnt/nfs/search /var/r7-office/searchindex nfs defaults 0 2
Где:
192.168.25.4— ip сервера nfs;/mnt/nfs/search— сетевой каталог на сервера nfs;/var/r7-office/searchindex— куда монтируем сетевой каталог на сервере с сервисом Поиска.
7.4.3. Скопируйте файлы
cd /var/r7-office/searchindex mkdir /tmp/backup_search cp -pr ./ /tmp/backup_search
7.4.4. Примонтируйте и скопируйте файлы
cd /tmp/backup_search mount -a cp -pr ./ /var/r7-office/searchindex
7.4.5. Запустите сервисы
supervisorctl start all
7.4.6. Проверьте работу поиска
7.4.6.1. Введите имя файла в строке поиска
Должен выдать его в результате:

8. Настройка потоковой репликации Master-Slave PostgreSQL
При включенной службе firewalld необходимо выполнить настройку для PostgreSQL.
# Добавляем службу: firewall-cmd --permanent --zone=public --add-service=postgresql # Перезапускаем службу firewalld: firewall-cmd --reload # Проверяем правила для зоны public: firewall-cmd --zone=public --list-all
8.1. Установите PostgreSQL на Slave
apt-get update && apt-get install -y postgresql14-server /etc/init.d/postgresql initdb
8.2. Измените postgresql.conf
vim /var/lib/pgsql/data/postgresql.conf
Приведите параметры к виду:
listen_addresses = 'localhost,192.168.26.71' # what IP address(es) to listen on; port = 5432
Где:
localhost,192.168.26.71— адреса, которые слушает сервис;5432— порт, который сервис прослушивает.
8.2.1. Перезапустите PostgreSQL
systemctl enable postgresql systemctl restart postgresql
8.3. На Master
8.3.1. Создайте пользователя
su - postgres /bin/bash createuser --replication -P repluser
Запросит ввод пароля для новой роли, сохраните его.
8.3.1.1. Проверьте расположение конфигурационного файла
psql -c 'SHOW config_file;'
В нашем случае это:
/var/lib/pgsql/data/postgresql.conf
8.3.2. Выйдите из оболочки postgres
exit
8.3.3. Измените postgresql.conf
vim /var/lib/pgsql/data/postgresql.conf
Отредактируйте следующие параметры:
wal_level = replica max_wal_senders = 1 max_replication_slots = 2 hot_standby = on hot_standby_feedback = on
Где:
wal_level— указывает, сколько информации записывается в WAL (журнал операций, который используется для репликации);max_wal_senders— количество планируемых серверов Slave;max_replication_slots— максимальное число слотов репликации;hot_standby— определяет, можно или нет подключаться к postgresql для выполнения запросов в процессе восстановления;hot_standby_feedback— определяет, будет или нет сервер slave сообщать мастеру о запросах, которые он выполняет.
8.3.4. Измените файл pg_hba.conf
vim /var/lib/pgsql/data/pg_hba.conf
Добавьте следующие строки:
host replication repluser 127.0.0.1/32 md5 host replication repluser 192.168.26.48/32 md5 host replication repluser 192.168.26.71/32 md5
- Данной настройкой Вы разрешаете подключение к базе данных
replicationпользователюrepluserс локального сервера (localhostи192.168.26.48) и сервера192.168.26.71.
8.3.5. Перезапустите службу postgresql
systemctl restart postgresql
8.4. На Slave
8.4.1. Проверьте пути до конфигурационных файлов
sudo -u postgres psql -c 'SHOW data_directory;'
Вывод:

sudo -u postgres psql -c 'SHOW config_file;'
Вывод:

8.4.2. Остановите PostgreSQL
systemctl stop postgresql
8.4.3. Сделайте бэкап
tar -czvf /tmp/data_pgsql.tar.gz /var/lib/pgsql/data
8.4.4. Удалите содержимое
rm -rf /var/lib/pgsql/data/*
8.4.5. Запустите репликацию с Master на Slave
sudo -u postgres pg_basebackup --host=192.168.26.48 --username=repluser --pgdata=/var/lib/pgsql/data --wal-method=stream --write-recovery-conf
Где:
192.168.26.48— IP-адрес мастера;/var/lib/pgsql/data— путь до каталога с данными.
После ввода команды система запросит пароль для созданной ранее учетной записи repluser — введите его.
Начнется процесс клонирования данных.
8.4.6. Запустите PostgreSQL
systemctl start postgresql
8.5. Проверка репликации
8.5.1. Посмотрите статус
Статус работы репликации можно посмотреть следующими командами.
8.5.1.1. На Master
select * from pg_stat_replication;
8.5.1.2. На Slave
select * from pg_stat_wal_receiver;

8.5.2. Создайте тестовую базу
8.5.2.1. На Master зайдите в командную оболочку Postgres
sudo -u postgres -s psql
8.5.2.2. Создайте новую базу данных
CREATE DATABASE repltest ENCODING='UTF8';
8.5.2.3. На Slave посмотрите список баз
Выполните команду:
sudo -u postgres -s psql -c '\l'
Вы должны увидеть среди баз ту, которую создали на первичном сервере:

Настройка завершена.








