Технические требования
Пассворк не требователен к ресурсам. Объемы оперативной памяти, дискового пространства и мощности процессора, а также необходимое количество серверов зависят от числа активных пользователей, объема хранимых данных и требований к отказоустойчивости системы.
Пассворк состоит из двух элементов:
- Сервера приложения (веб-сервер и PHP);
- Базы данных (MongoDB);
Сервер приложения и база данных могут работать на одном общем выделенном или виртуальном сервере.
Вы можете использовать несколько серверов если:
- в целях безопасности требуется разделить сервер приложения и базу данных по разным серверам
- необходимо хранить данные одновременно на нескольких серверах;
- необходимо обеспечить отказоустойчивое решение.
- Показатель IOPS имеет большое значение для скорости работы базы данных, поэтому мы рекомендуем использовать SSD накопители.
- Для Linux c ОЗУ меньше 4 ГБ рекомендуется включить файл подкачки (swap file) на 4 ГБ.
Этот вариант подходит для редакций до 500 пользователей при отсутствии особых требований к хранению данных:
Количество пользователей | RAM | CPU | HDD/SSD |
---|---|---|---|
до 50 | 2-4 ГБ | 4 | 100 ГБ |
до 100 | 4-8 ГБ | 8 | 150 ГБ |
до 500 | 8-16 ГБ | 8 | 200 ГБ |
В этом случае база данных и сервер приложения разнесены по разным серверам.
Требования к серверу приложения:
Количество пользователей | RAM | CPU | HDD/SSD |
---|---|---|---|
до 50 | 2-4 ГБ | 4 | 100 ГБ |
до 100 | 4 ГБ | 8 | 100 ГБ |
до 500 | 8-16 ГБ | 8 | 100 ГБ |
до 1000 | 8-16 ГБ | 8 | 100 ГБ |
до 10 000 | 16-32 ГБ | 16 | 100 ГБ |
Требования к серверу базы данных:
Количество пользователей | RAM | CPU | HDD/SSD |
---|---|---|---|
до 50 | 2-4 ГБ | 4 | 100 ГБ |
до 100 | 4 ГБ | 4 | 150 ГБ |
до 500 | 8-16 ГБ | 8 | 200 ГБ |
до 1000 | 16 ГБ | 8 | 200 ГБ |
до 10 000 | 16-32 ГБ | 16 | 200 ГБ |
База данных MongoDB может работать в режиме отказоустойчивости. Выделяется три основных роли серверов в репликационном наборе:
- Primary — основной сервер;
- Secondary — второстепенный сервер в режиме синхронизации;
- Arbiter — сервер не хранящий данных, но участвующий в выборе основного узла в случае падения сервера.
Мы рекомендуем использовать полноценные экземпляры, так как встроенный механизм балансировки MongoDB работает и без арбитра
- Три и более сервера: три полноценных сервера баз данных (основной выбирается в процессе голосования). При таких условиях арбитр можно использовать в качестве дополнительного сервера, например когда нужно добиться прогнозируемого переключения основного узла;
- Три сервера: два полноценных сервера баз данных, один из которых выбирается в качестве основного, второй — в качестве второстепенного (SECONDARY), а третий выступает арбитром. Основной узел переключается автоматически в случае падения текущего основного сервера. Арбитр при этом позволяет сэкономить ресурсы, так как менее требователен.
Минимальное количество членов репликационного набора — три. Иначе при отказе одного из узлов репликационный набор перейдет в режим «только чтение», и Пассворк будет недоступен
- RAM — 4 ГБ, CPU — 4 ядра, HDD/SSD — 100 ГБ;
- Высокая скорость сетевого соединения с остальными серверами баз данных.
Вы можете использовать несколько серверов приложений в связке из:
- нескольких PHP-FPM серверов (горизонтально);
- балансировщика трафика.
Это позволит:
- Автоматически переадресовывать запросы на остальные сервера при падении одного из них.
- Ускорить работу приложения при большом количестве пользователей (10 000 и более).
В указанных выше рекомендациях по объему дисков не учитываются бэкапы и логи. Мы рекомендуем хранить бэкапы базы данных на отдельных серверах или в специализированных хранилищах.
Архивированный бэкап базы занимает около 10% от размера самой базы.
Оценить фактический размер базы данных (без учёта вложений) можно по следующей таблице:
Кол-во пользователей | Кол-во паролей | Время в работе | Объем базы | Архив бэкапа |
---|---|---|---|---|
до 100 | 1000 | 1 год | 0,1 ГБ | 10 МБ |
до 100 | 1000 | 2 года | 0,5 ГБ | 50 МБ |
до 100 | 1000 | 3 года | 1 ГБ | 0,1 ГБ |
до 1000 | 5000 | 1 год | 1 ГБ | 0,1 ГБ |
до 1000 | 5000 | 2 года | 5 ГБ | 0,5 ГБ |
до 1000 | 5000 | 3 года | 10 ГБ | 0,5 ГБ |
до 10 000 | 10 000 | 1 год | 10 ГБ | 0,5 ГБ |
до 10 000 | 10 000 | 2 года | 50 ГБ | 1 ГБ |
до 10 000 | 10 000 | 3 года | 100 ГБ | 2 ГБ |