mrusklon
@mrusklon
Не получается? Яростно гугли!

Возможно как то сделать что бы nextlcoud работал в «дубле»?

есть у меня "серверная" грубо говоря, бывает иногда там то свет пропадает то интернет... а облако в этот момент крайне необходимо , может есть какая то возможность сделать АВР(аварийный ввод резерва) для этого? Что бы 2 сервера работали одновременно, но второй скажем на очень слабом ПК просто неспешно поспевал за вторым, а когда первому гайки, второй работал хоть кое как
  • Вопрос задан
  • 162 просмотра
Решения вопроса 2
SlavikF
@SlavikF
Многое зависит от сценария.

1. Например можно просто сделать вторую копию Nextcloud, куда регулярно скриптами будут копироваться файлы с основной копии. И в случае, если первая копия пропадает, то данные доступны на второй копии.
Минусы:
- Синхронизация может иметь задержку
- Вторая копия должна быть READ ONLY, потому что синхронизировать данные в обе стороны - сложно
- У второй копии адрес будет отличаться, поэтому его надо будет менять вручную. Наверное можно на коленке слепить свой Load Balancer, но он явно будет ограничен в функциональности.

2. Можно сделать полноценный high availability, но для этого надо:
- DB cluster
- File system cluster
- Load Balancer
Вот тут описан пример такой конфигурации:
https://severalnines.com/database-blog/deploying-h...
Но сюда не подходит "на очень слабом ПК".
И такую конфигурацию достаточно сложно настраивать, поддерживать и обновлять.
Ответ написан
Комментировать
@rPman
Универсально (любые приложения) можно резервировать средствами виртуальных машин с поддержкой технологий непрерывной миграции,
например у vmware vmotion или по дешевле quick migration, весь смысл которых заключается в том что виртуальную машину можно 'моментально' перенести с одного хоста на другой, а для поддержке этой технологии обе виртуальные машины фактически работают одновременно, а содержимое оперативной памяти постоянно синхронизируется, есть возможность переключаться между ними, недостаток - файловое хранилище так же должно быть в виде сетевого кластера с резервированием, т.е. в нормальной работе все данные автоматически синхронизируются между нодами и при потере одной, вторая будет продолжать работать.

Такой подход позволит построить такие распределенные кластеры, которые смогут почти полностью защитить работающее приложение от сбоев оборудования но за счет многократного повышения стоимости как внедрения так и поддержания работы (грубо говоря в 3 раза повысит количество машин, нагрузка на сеть между датацентрами и т.п.)

Все остальные решения по дешевле это вариации того же самого но без универсальности и гарантий.

для nextcloud тебе достаточно настроить синхронизацию хранилища (всего, не только хранящиеся файлы но и ее базу данных), а при потере связи поднимать сервис на этой копии (при восстановлении связи так же нужно изменения данных переносить)

Готовых настроек нет, для другого случая и софта я реализовывал с помощью снапшотов btrfs (на обоих узлах хранятся последние снимки файловой системы, я еще их делал, подбирая момент отсутствия нагрузки, выполняя sync, что не дает гарантии но понижает шансы смерти софта и данных). сторонний сервис мониторит и выбирает, какая нода сейчас будет главной а какая резервной, соответственно запуская на них команды на создание и восстановление снапшотов (резервная принимает патчи а главная - отправляет), запуск ноды - по факту воспринимается софтом как перезагрузка по reset, поэтому если с файлами еще можно что то сделать, то с базами данных придется отдельно помучиться. Этот подход не гарантирует что данные не потеряются (все что произошло после последнего снапшота будет потеряно либо мучиться с конфликтами)

вместо рассылке патчей снапшотов лучше настроить кластерную файловую систему она из коробки поддерживает синхронизацию данных на лету, сложнее в настройке но и потерей данных будет меньше.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы