Содержание
Подготовка
0. Предварительные условия миграции
Убедитесь, что Docker и необходимые образы установлены на обоих серверах.
Откройте сетевые взаимодействия между КС19 и КС24 по портам 3306 (MySQL), 2049 (NFS), и 15672 (RabbitMQ).
В данной инструкции:
- 192.168.24.102 — IP-адрес Корпоративный сервер 2019 docker
- 192.168.24.22 — IP-адрес Корпоративный сервер 2024 docker
1. Останавливаем сервер документов на обоих серверах и создаем пользователя на сервере с КС2024
Для остановки сессий с документами выполняем скрипт на обоих серверах внутри контейнера командами (Корпоративный сервер 2024 docker):
docker exec ds-app bash /usr/bin/documentserver-prepare4shutdown.sh
Создаем пользователя для миграции и добавляем его в группу docker:
useradd -u 1999 -G docker cddisk
Аналогично завершаем сессии документов для Корпоративного сервера 2019 docker:
docker exec r7 bash /usr/bin/documentserver-prepare4shutdown.sh
Проверяем, что файлы не открываются на редактирование.
2. Работы для интеграции на Корпоративном сервере 2019
2.1 Создайте пользователя в БД r7-office с правами Select
2.1.1 Войдите в контейнер КС2019:
docker exec -it r7 bash
2.1.2 Подключитесь к MySQL:
mysql -u root -p
Узнаём пароль от root MySQL командой:
grep -oP 'Password=\K[^;]+' /var/www/r7-office/WebStudio/web.connections.config
2.1.3 Создайте пользователя cddisk с правами SELECT:
CREATE USER 'cddisk'@'192.168.24.22' IDENTIFIED WITH mysql_native_password BY 'StrongSecurityPassword'; GRANT SELECT ON `r7-office`.* TO 'cddisk'@'192.168.24.22'; FLUSH PRIVILEGES; \q
2.1.4 Выйдите из контейнера:
mysql -u root -p
2.2 Предоставление доступа к файлам
2.2.1 Установите nfs сервер:
# .deb apt install nfs-kernel-server -y # .rpm yum install nfs-utils nfs4-acl-tools # ALT Linux apt-get install nfs-server
2.2.2 Запустите службу nfs:
systemctl start nfs-server systemctl enable nfs-server
2.2.3 Откройте файл /etc/exports
nano /etc/exports
2.2.4 Добавьте строку в файл /etc/exports:
/mnt/r7/app/r7-office/www/r7-office/Data/Products/Files/ ip_docker_cs24/32(rw,nohide,all_squash,anonuid=1999,anongid=128,no_subtree_check)
Где,
- ip_docker_cs24 — ip адрес сервера с докер версией Корпоративного сервера 2024;
- anonuid=1999 — указываем 1999, если выполнялось создание нового пользователя cddisk;
- anongid=128 — указываем id группы докер;
- путь в начале указывается до директории со структурой документов (в примере, если по умолчанию был выбран путь при установке Корпоративного сервера 2019, если нет, заменить /mnt/r7/ на фактический путь).
Посмотреть uid и gid возможно командой:
id cddisk
2.2.5 Примените изменения:
exportfs -ra
3. Работы для интеграции на Корпоративном сервере 2024
3.1 Проверка доступ к БД КС2019 и NFS
telnet 192.168.24.102 3306 telnet 192.168.24.102 2049
Где,
- 192.168.24.102 — ip сервера Корпоративный сервер 2019;
- 3306 — порт для MySQL;
- 2049 — порт NFS.
3.2 Доступ к файлам
3.2.1 Установите клиент nfs:
# для deb sudo apt-get install nfs-common # для yum sudo yum install nfs-utils # ALT Linux sudo apt-get install nfs-utils
3.2.2 Создайте каталог:
Эта команда создаст папку на вашем сервере, в которую будут монтироваться файлы с сервера «Корпоративный сервер 2019»
192.168.24.102:/mnt/r7/app/r7-office/www/r7-office/Data/Products/Files/ /mnt/cs19 nfs defaults 0 2
Где,
- 192.168.24.102 — ip сервера с Корпоративным сервером 2019;
- /mnt/r7/app/r7-office/www/r7-office/Data/Products/Files/ — имя каталога, который сделали сетевым;
- /mnt/cs19 — куда монтируется.
Замените StrongSecurityPassword на ваш реальный пароль
3.2.4 Чтобы примонтировать сетевой каталог указанный на этапе 3.2.3 без перезагрузки сервера, выполните команды:
systemctl daemon-reload mount -a
3.3 Добавляем порты rabbitmq
3.3.1 Откроем файл docker-compose-client.yml, расположенный в каталоге cddisk:
Добавляем в конфигурацию rabbitmq порты:
rabbitmq: env_file: - .env.overrides - .env.defaults image: cddisk-rabbitmq:latest restart: unless-stopped container_name: rabbitmq hostname: rabbitmq environment: - RABBITMQ_DEFAULT_USER=${r7_rabbitmq_user} - RABBITMQ_DEFAULT_PASS=${r7_rabbitmq_pass} ports: - 5672:5672
Порт слева можно указать другой.
Добавляем файл и директорию внутрь контейнера
Файл извлекаем из контейнера командой, находясь в директории cddisk:
docker cp processing:/opt/r7-office/Processing/appsettings.json ./
или заменив ./ на путь к директории cddisk.
Откроем файл appsettings.json на редактирование и изменим строку «CommunityRepository» к виду:
"ConnectionStrings": { "R7StorageServerUserActions": "Database=postgres;Username=postgres;Password=pg_pass;Host=postgres;Port=5432;", "R7StorageServer": "Database=postgres;Username=postgres;Password=pg_pass;Host=postgres;Port=5432;", "CommunityRepository": "Server=192.168.24.102;UserID=cddisk;Password=StrongSecurityPassword;Database=r7-office"
где
- 192.168.24.102 — ip адрес сервера КС2019
- cddisk — пользователь и его пароль, созданный в пункте 2.1.3
После в файле docker-compose-client.yml в блок processing добавляем volumes:
processing: env_file: - .env.overrides - .env.defaults image: cddisk-processing:latest container_name: processing hostname: processing restart: unless-stopped depends_on: postgres: condition: service_healthy volumes: - /mnt/cs19:/mnt/cs19:ro - ./appsettings.json:/opt/r7-office/Processing/appsettings.json
После сохранения изменений выполняем:
docker-compose -f docker-compose-client.yml up -d && docker restart ds-app
И убеждаемся, что контейнеры пересоздались и запущены
Запускаем миграцию
Для этого открываем в браузере адрес
https://cddisk.domain.ru/api/v1/ExportFromCs/Start
где cddisk.domain.ru — адрес модуля Р7-Диск у Корпоративный сервер 2024