Создайте отказоустойчивый кластер Nextcloud с помощью Galera.

Сначала создайте кластер баз данных, затем разместите несколько идентичных узлов приложений Nextcloud за балансировщиком нагрузки с проверкой работоспособности. Для стабильной работы все узлы приложений должны использовать одно и то же надежное файловое хранилище, конфигурацию, службу блокировки Redis или Valkey, а также конечную точку базы данных, которая направляет операции записи только к работоспособному участнику Galera. В текущем руководстве администратора Nextcloud указана поддерживаемая база данных MariaDB, но не опубликован рецепт развертывания, специфичный для Galera; перед запуском в производство уточните у поставщиков точные версии Nextcloud, MariaDB, Galera и прокси-сервера.

По состоянию на 9 октября 2026 года на странице системных требований Nextcloud 35 указаны MariaDB 10.11, 11.4, 11.8 и 12.3, при этом версия 12.3 отмечена как рекомендуемая. Это список версий баз данных Nextcloud, а не гарантия того, что каждая комбинация Galera или прокси-сервера сертифицирована. Начните с системных требований Nextcloud 35 и матрицы поддержки Galera для вашего дистрибутива MariaDB.

1. Определите границы отказов.

Кластер высокой доступности имеет не только реплицированную базу данных. Galera защищает уровень базы данных; она не реплицирует файлы пользователей Nextcloud, сессии PHP, блокировки Redis или код приложения. Кроме того, единая общая база данных не может компенсировать сбой монтирования хранилища или работу балансировщика нагрузки, который продолжает направлять трафик на неисправный узел приложения.

Перед установкой спланируйте установку следующих компонентов:

  • По меньшей мере два сервера приложений должны работать под управлением одной и той же версии Nextcloud, с одинаковой версией PHP, включенными приложениями и веб-конфигурацией.
  • Балансировщик нагрузки или обратный прокси-сервер со стабильным публичным именем хоста, HTTPS и проверками работоспособности серверов приложений.
  • Общее, надежное хранилище данных Nextcloud, доступное по одному и тому же пути и с правильными правами доступа на каждом сервере приложений. Каталог данных Nextcloud следует указать во время установки; в инструкции по установке указано, что перемещение его позже будет затруднительным.
  • Кластер Galera с нечетным числом узлов базы данных для голосования, обычно тремя, расположенными таким образом, чтобы отказ одного хоста не привел к удалению большинства.
  • Общий сервис Redis или Valkey для распределенного кэширования и транзакционных блокировок файлов.

Выбирайте решения для хранения данных и сети, которые имеют собственные резервные системы и проверенные механизмы восстановления. Общий путь не гарантирует автоматическую высокую доступность только потому, что несколько веб-серверов могут его монтировать.

2. Сначала установите и проверьте работоспособность MariaDB Galera.

Выберите версию MariaDB, соответствующую текущим требованиям Nextcloud, и соответствующий пакет Galera, поддерживаемый вашим поставщиком MariaDB. Следуйте документации по развертыванию MariaDB Galera для настройки узлов, сетевых портов, передачи снимков состояния, TLS и начальной загрузки. Не запускайте каждый пустой узел как новый кластер; загрузите один узел, а затем подключите остальные к этому кластеру.

Для работы Nextcloud требуется InnoDB и READ-COMMITTEDуровень изоляции транзакций для MySQL или MariaDB. На текущей странице базы данных Nextcloud также рекомендуется использовать построчное двоичное логирование. Подтвердите значения на каждом узле базы данных, а не только на том, который в данный момент принимает трафик. См. требования к конфигурации MariaDB в Nextcloud .

Перед подключением Nextcloud проверьте состояние кластера на каждом узле. Например, выполните команды `npm run server` SHOW GLOBAL STATUS LIKE 'wsrep_cluster_status';и ` npm run server` SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';. Кластер должен сообщить о Primaryкомпоненте, ожидаемом размере кластера и состоянии узлов Synced. MariaDB объясняет, что для кворума требуется более половины последнего известного состава кластера; поэтому кластер из трех узлов может допустить потерю одного узла, а не двух. Ознакомьтесь с рекомендациями по кворуму и восстановлению .

3. Предоставьте Nextcloud конечную точку базы данных, отслеживающую состояние системы.

Настройте Nextcloud для подключения к стабильному адресу прокси-сервера базы данных, а не к списку IP-адресов Galera, распределяемых по принципу циклического перебора. Хотя Galera реплицирует операции записи по всему кластеру, приложениям по-прежнему необходима предсказуемая обработка транзакций. Прокси-сервер, отслеживающий членство в Galera, может прекратить маршрутизацию к недоступным или несинхронизированным узлам и выбрать узел для записи. Монитор Galera в MariaDB MaxScale — один из документированных вариантов; его точное поведение и поддерживаемые режимы маршрутизации зависят от версии и конфигурации MaxScale.

Используйте документированную конечную точку подключения прокси-сервера в качестве конечной точки подключения Nextcloud dbhost. Создайте отдельные учетные записи с минимальными привилегиями для мониторинга и доступа к приложениям, защитите учетные данные и зашифруйте трафик базы данных при его прохождении через недоверенную сеть. Избегайте включения разделения операций чтения/записи как предполагаемого снижения производительности: собственная функция репликации Nextcloud отправляет операции чтения на реплики, сохраняя операции записи и случайного чтения на основном соединении, но Galera — это не обычная асинхронная схема репликации. Используйте маршрутизацию, протестированную специально для вашего стека.

4. Обеспечьте, чтобы каждый узел приложения видел один и тот же экземпляр Nextcloud.

Установите один и тот же код Nextcloud и набор приложений на каждом сервере приложений. Поддерживайте согласованность настроек каждого узла config.phpдля общего экземпляра, включая конечную точку базы данных, значения секретов, доверенные домены и путь к каталогу данных. Не выполняйте обновление на нескольких узлах независимо друг от друга. Сначала сделайте резервную копию, переведите экземпляр в режим обслуживания, выполните обновление по одному контролируемому пути и возобновите трафик только после того, как на всех узлах будет установлена ​​одна и та же версия.

Настройте все узлы приложения на использование одной и той же службы Redis или Valkey для распределенного кэширования и блокировки. Локальный кэш, такой как APCu, может оставаться локальным для каждого узла, но memcache.distributedдолжен memcache.lockingуказывать на общую службу, а не на службу каждого сервера localhost. Например, в конфигурации Redis Nextcloud можно использовать 'memcache.locking' => '\OC\Memcache\Redis'общий хост Redis redis. Следуйте текущему руководству по настройке кэша и руководству по транзакционной блокировке файлов . Memcached не подходит для транзакционной блокировки файлов Nextcloud.

Если вы также централизуете PHP-сессии в Redis, рассматривайте это как отдельную задачу настройки PHP. В руководстве Nextcloud предупреждается, что блокировка сессий по умолчанию не включена для обработчика сессий Redis; примените его настройки блокировки и протестируйте поведение сессий, прежде чем полагаться на него. Не путайте репликацию базы данных или блокировку файлов с непрерывностью сессий.

5. Перед тем как называть систему высокодоступной, протестируйте механизм переключения на резервный сервер.

Сначала убедитесь в нормальной работе через общедоступное имя хоста: войдите в систему, загрузите и скачайте тестовый файл, а также проверьте, виден ли он после того, как запрос достигнет другого узла приложения. Затем отключите один веб-узел и убедитесь, что запросы продолжаются через другой. Восстановите его и убедитесь, что он снова подключается, не предоставляя устаревший код или версию конфигурации.

Далее, используйте окно технического обслуживания для имитации сбоя одного узла базы данных в соответствии с руководством по эксплуатации вашего поставщика. Убедитесь, что прокси-сервер удаляет неисправный или несинхронизированный участник, Nextcloud по-прежнему может читать и записывать данные, а возвращающийся узел достигает соединения Syncedдо того, как начнет принимать трафик. Отслеживайте состояние основного узла Galera, размер кластера, синхронизацию узлов, работоспособность прокси-сервера, ошибки приложений и работоспособность монтирования хранилища.

Потеря кворума — это аварийная остановка, а не доказательство потери данных. Не следует принудительно загружать несколько узлов или выбирать один случайным образом. В руководстве по восстановлению MariaDB рекомендуется определить наиболее продвинутый узел и загрузить только его, а затем снова подключить остальные. Убедитесь, что вы проверили резервные копии базы данных и файлового хранилища; репликация Galera отражает изменения в базе данных и не заменяет резервные копии на определенный момент времени.

Проверьте результат

Настройка готова к производственной эксплуатации только тогда, когда один узел приложения и один узел базы данных могут быть отключены без нарушения нормальных операций с файлами, все оставшиеся узлы Galera остаются в основном компоненте, а общее файловое хранилище и служба Redis или Valkey остаются доступными. Если тест не пройден, определите, какой уровень перестал обрабатывать запрос, прежде чем изменять тайм-ауты или настройки повторных попыток. В руководстве Nextcloud описаны поддерживаемые параметры базы данных и приложения, а матрица совместимости поставщиков и ваши тесты отказоустойчивости определяют, поддерживается ли данное развертывание Galera.

Оставить комментарий

Снизьте скачки загрузки ЦП в предварительной версии Nextcloud с помощью запланированной очереди.

Перенесите обработку миниатюр в контролируемый фоновый режим, обрежьте неиспользуемые размеры предварительного просмотра и проверьте очередь, не перегружая сервер Nextcloud.

Переход от «обработки файлов» к синхронизации Nextcloud Desktop Sync

Найдите файл, правило исключения, проблему с подключением или состояние базы данных клиента, препятствующие синхронизации Nextcloud, а затем безопасно проверьте загрузку и скачивание файлов.

Устраните предупреждение Nextcloud OPcache, отрегулировав правильный лимит.

Найдите ограничение на использование PHP OPcache, вызывающее предупреждение Nextcloud, обновите правильную конфигурацию PHP для веб-приложений, безопасно перезапустите систему и проверьте результат.

Подключение Nextcloud к CODE Docker: настройка и компромиссы.

Подключение Nextcloud к CODE Docker: настройка и компромиссы.

Сравните встроенный и основанный на Docker код, затем подключите Collabora Online к Nextcloud через защищенный обратный прокси-сервер HTTPS.

Создайте отказоустойчивый кластер Nextcloud с помощью Galera.

Спланируйте надежное развертывание Nextcloud HA с использованием общего хранилища, блокировок Redis, маршрутизации MariaDB с учетом кворума и практичных проверок отказоустойчивости.

Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.

Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.

Настройте и проверьте доступность TURN-ретранслятора для Nextcloud Talk, если брандмауэры или ограничительные NAT блокируют прямые вызовы.

Устраните предупреждения о целостности Nextcloud, восстановив правильные файлы.

Используйте отчет о недействительных файлах, чтобы выявить измененный, отсутствующий или лишний код Nextcloud, безопасно восстановить доверенные файлы и проверить результат.

Подключите Gmail или Microsoft 365 к Nextcloud Mail с помощью OAuth2.

Настройте OAuth2 для почты Nextcloud с использованием Gmail или Microsoft 365, проверьте получение и отправку сообщений, а также устраните распространенные ошибки, связанные с согласием и SMTP.

Безопасно выведите из зависшего режима обслуживания Nextcloud с помощью OCC.

Безопасно выведите из зависшего режима обслуживания Nextcloud с помощью OCC.

Используйте OCC для восстановления доступа к Nextcloud, проверки статуса миграции базы данных и выбора правильной команды для установки архивов, Docker или Snap.

Настройка входа в Nextcloud через LDAP и Active Directory.

Подключите Nextcloud к LDAP или Active Directory, ограничьте доступ с помощью фильтров по пользователям и группам и проверьте безопасную аутентификацию перед развертыванием.