Добрый день! Хочу поделиться своим опытом по миграции Корпоративного портала и CRM Битрикс24 с одного физического сервера на 2 виртуальные машины.

В связи с нарастающим количеством заявок программистам на доработки коробочной версии корпоративного портала Битрикс24 была поставлена задача перенести портал с физического сервера, где он прекрасно "жил" около 2 лет в виртуальную среду, для более быстрого "отката" в случае неуспешных изменений. Да, у нас есть тестовая версия портала на которой изначально проверяются все доработки, но практика показала, что не все нюансы можно учесть и не возможно все проверить на 100% на "тестовом стенде".

За все время существования портала его база данных и Битрикс24.Диск очень сильно разрослись, поэтому было принято решение отделить Битрикс24.Диск и вынести его на отдельную ВМ. Это дает еще и ряд преимуществ, но сейчас не об этом. Перейдем непосредственно к тому, что было сделано.

1. Подготовка ВМ под Битрикс24.Диск (NFS-сервер)

Для начала создаем ВМ и накатываем туда CentOS 7 minimal и обновляем её:

yum clean all && yum update

Затем устанавливаем необходимое нам ПО и утилиты:

yum install mc wget net-tools bind-utils iftop htop lsof traceroute sshfs nfs-utils nfs-utils-lib

Затем запускаем необходимые службы и добавляем их в автозапуск:

systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server

В нашем случае мы выбрали NFS т.к. это наиболее быстрый и безопасный способ расшарить папки внутри локальной сети.

Затем открываем необходимые порты для работы NFS-сервера

firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=20048/tcp
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --permanent --zone=public --add-service=mountd
firewall-cmd --permanent --zone=public --add-service=rpc-bind
firewall-cmd --reload

По умолчанию большую часть свободного места CentOS отдает под раздел /home а расшариваемую директорию мы хотели разместить в корневом разделе, поэтому размонтируем и удалим логический раздел /home и создадим его заново с нужным нам размером, а все оставшееся свободное место отдадим корневому разделу:

umount /dev/mapper/centos-home
lvremove /dev/mapper/centos-home
lvcreate -L 62GB -n home centos
mkfs.xfs /dev/centos/home
mount /dev/mapper/centos-home
lvextend -r -l +100%FREE /dev/mapper/centos-root

Важно проверить /etc/fstab на предмет соответствия раздела /home. Если он использует UUID, нужно обновить часть UUID

Когда место перераспределено, создаем директорию для "раздачи" и назначаем ей соответствующие права:

mkdir -p /share/b24/upload
chmod -R 777 /share/b24/upload

и публикуем её отредактировав файл /etc/exports внеся туда следующую строку:

/share/b24/upload 192.168.1.6(rw,sync,no_root_squash,no_all_squash)

Применяем новые настройки и перезапускаем NFS-сервер:

exportfs -a
systemctl restart nfs-server

2. Подготавливаем ВМ для самого Битрикс24.

Тут все просто, устанавливаем CentOS 7, обновляем её, устанавливаем нужные пакеты для работы с NFS и по инструкции от Битрикс24 устанавливаем окружение BitrixEnv.

yum clean all && yum update
yum install mc wget net-tools bind-utils iftop htop lsof traceroute sshfs nfs-utils nfs-utils-lib
wget https://repo.bitrix.info/yum/bitrix-env.sh && chmod +x bitrix-env.sh && ./bitrix-env.sh

Затем запускаем и добавляем в автозапуск службы для работы с NFS:

systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server

Создаем директорию для Битрикс24.Диск в которую примонтируем созданное на первом шаге хранилище:

mkdir /home/bitrix/www/upload
mount -t nfs 192.168.1.7:/share/b24/upload /home/bitrix/www/upload

Поверяем примонтировалось ли хранилище через df -h и если все ОК, то настраиваем автоматическое монтирование хранилища после перезагрузки отредактировав файл /etc/fstab внеся в него следующую строку:

192.168.1.7:/share/b24/upload /home/bitrix/www/upload nfs rw,sync,hard,intr 0 0

и применяем настройки:

mount -a

По сути на этом все, дальше просто необходимо перенести файлы из папки /home/bitrix/www/upload старого (физического) сервера Битрикс24 на новый командой rsync. Затем создать бэкап портала через админ. панель Битрикс24 без папок /upload и /backup и развернуть его на новом сервере штатными средствами Битрикс24.

Если у вас остались вопросы или есть советы по данному кейсу, пишите их в комментариях.

Комментарии (3)


  1. SignFinder
    16.05.2023 12:27
    +1

    "rsynk" он все-таки rsync


  1. aborouhin
    16.05.2023 12:27
    +1

    Ну зачем же порты для nfs открывать на весь интернет, если шара монтируется с одного конкретного заранее известного IP...


    1. sakarpov Автор
      16.05.2023 12:27

      Спасибо за совет, хотя эта ВМ не смотрит за пределы гипервизора, но в статье это надо было учесть.