Содержание

Подготовка

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

И убеждаемся, что контейнеры пересоздались и запущены

Миграция КС2019 docker версия в КС2024 docker версия релиз 4400

Запускаем миграцию

Для этого открываем в браузере адрес

https://cddisk.domain.ru/api/v1/ExportFromCs/Start

где cddisk.domain.ru — адрес модуля Р7-Диск у Корпоративный сервер 2024

Была ли полезна статья?
Позвольте нам стать лучше