Настройка отказоустойчивого Next cloud Enterprise: руководство


Nextcloud — это удобное корпоративное решение для хранения файлов, совместной работы и обмена документами. В рабочих условиях важно обеспечить бесперебойную работу системы. В этой инструкции мы разберём, как развернуть Nextcloud с высокой доступностью, используя:

  • Балансировщик нагрузки (HAProxy)
  • Два сервера с Nextcloud для распределения запросов
  • Базу данных MariaDB с репликацией Master-Slave
  • Redis для кэширования запросов
  • Два NFS-сервера с синхронизацией через DRBD
  • Elasticsearch для быстрого поиска по документам
  • Интеграцию с Active Directory

Все компоненты работают на Ubuntu 22.04 LTS.

Установка и настройка Nextcloud

  1. Установка Apache и PHP

    Сначала установим веб-сервер и необходимые компоненты:

    apt-get install apache2 –y
    apt update && apt upgrade –y
    add-apt-repository ppa:ondrej/php
    apt install php8.2 php8.2-{curl,zip,gd,fpm,ctype,dom,libxml,mbstring,posix,session,SimpleXML,XMLReader,XMLWriter,zlib,intl,gmp,bcmath,xml} memcached php8.2-imagick
    sudo phpenmod pdo_mysql
  2. Настройка виртуального хоста

    Создадим конфигурационный файл для Nextcloud (/etc/apache2/sites-available/nextcloud.conf):

    DocumentRoot /var/www/nextcloud/
    ServerName yourdomain.com

    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =yourdomain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    Активируем конфигурацию:

    a2ensite nextcloud.conf
    a2enmod rewrite headers env dir mime
    systemctl restart apache2

  3. Конфигурационный файл apache2 nextcloud.conf выглядит следующим образом:

    SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"

    DocumentRoot /var/www/nextcloud/
    ServerName domainname.ru


    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews


    Dav off


    RewriteEngine on
    RewriteCond %{SERVER_NAME} =domainname.ru
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]


    Пример конфигурационного файла

    Установка Nextcloud

    Скачиваем архив с официального сайта. Проверяем контрольную сумму:

    md5sum -c nextcloud-x.y.z.tar.bz2.md5 < nextcloud-x.y.z.tar.bz2
  4. Распаковываем и перемещаем файлы:

    tar -xjvf nextcloud-x.y.z.tar.bz2
    sudo cp -r nextcloud /var/www
    sudo chown -R www-data:www-data /var/www/nextcloud

Настройка MariaDB с репликацией

  1. Установка и базовая настройка
    На обоих серверах выполняем:

    apt-get install mariadb-server mariadb-client –y
    mysql_secure_installation
  2. Конфигурация Master-сервера
    Редактируем /etc/mysql/mariadb.conf.d/50-server.cnf:

    bind-address = 0.0.0.0
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    relay_log = /var/log/mysql/mysql-relay-bin

    Перезапускаем MariaDB:

    systemctl restart mariadb



    Создаём пользователя для репликации:

    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
  3. Конфигурация Slave-сервера


     Аналогично Master, но с server-id = 2.

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

    STOP SLAVE;
    CHANGE MASTER TO MASTER_HOST='master-ip', MASTER_USER='repl_user',
    MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123;
    START SLAVE;

Настройка отказоустойчивого хранилища (NFS + DRBD)

Пример файла /etc/exports

  1. Установка NFS
    На обоих серверах:

    apt install nfs-kernel-server
    mkdir /mnt/ncdata
    echo "/mnt/ncdata client-ip(rw,sync,no_subtree_check)" >> /etc/exports
    systemctl start nfs-kernel-server
  2. Настройка DRBD
    Устанавливаем DRBD:

    apt install drbd-utils

    Создаём конфиг /etc/drbd.d/r0.res:

    resource r0 {
    protocol C;
    startup { wfc-timeout 15; degr-wfc-timeout 60; }
    on server1 { device /dev/drbd0; disk /dev/sda1; address 10.0.0.1:7788; meta-disk internal; }
    on server2 { device /dev/drbd0; disk /dev/sda1; address 10.0.0.2:7788; meta-disk internal; }
    }

    Инициализируем и запускаем:

    drbdadm create-md r0
    systemctl start drbd
    drbdadm primary r0
    mkfs.ext4 /dev/drbd0
    mount /dev/drbd0 /mnt/ncdata

Настройка HAProxy для балансировки нагрузки

  1. Установка и базовая конфигурация:

    apt install haproxy

    Редактируем /etc/haproxy/haproxy.cfg:

    frontend nextcloud_https
    bind *:443 ssl crt /etc/ssl/cert.pem
    default_backend nextcloud_servers

    backend nextcloud_servers
    balance roundrobin
    server nextcloud1 192.168.1.10:443 check ssl
    server nextcloud2 192.168.1.11:443 check ssl

    Перезапускаем HAProxy:

    systemctl restart haproxy

Интеграция с Active Directory

  1. Устанавливаем приложение LDAP user and group backend через веб-интерфейс Nextcloud.

  2. В разделе Администрирование → LDAP/AD указываем:

    • Адрес контроллера домена

    • Учётные данные для подключения

    • Базовый DN для поиска пользователей

Заключение

Мы настроили отказоустойчивую систему Nextcloud, которая продолжает работать даже при сбоях отдельных компонентов. Для корпоративного использования рекомендуем готовое решение Nextcloud Enterprise от Cloud4Y, которое включает профессиональную поддержку и дополнительные инструменты для администрирования. Не получилось настроить? Вот ещё одна инструкция, более подробная.


Полезный материал?
1
0
автор: Олег
опубликовано: 01.07.2025
Читайте нас: 
Последние статьи
Вверх!