Технические требования
Пассворк не требователен к ресурсам сервера(-ов). Объемы нужных ресурсов (RAM, CPU, HDD) и количество серверов зависят от количества активных пользователей, объема хранимых данных, а также требований к отказоустойчивости системы.
Пассворк состоит из:
- Сервера приложения (веб-сервер и PHP);
- Базы данных (MongoDB);
Сервер приложения и база данных могут работать на одном общем выделенном или виртуальном сервере.
Использовать несколько серверов можно при:
- наличии политики безопасности разделять сервер приложения и базу данных по разным серверам;
- требовании хранить данные одновременно на нескольких серверах;
- требовании обеспечения отказоустойчивого решения (несколько серверов приложения).
Показатель IOPS имеет большое значения для скорости работы базы данных, поэтому желательно использовать SSD
Для Linux c RAM меньше 4 ГБ Рекомендуем включить файл подкачки (swapfile) на 4 ГБ.
Обычно подходит для редакций до 500 пользователей, без специальных требований по хранению данных:
Количество пользователей | RAM | CPU | HDD |
---|---|---|---|
до 50 | 2-4 ГБ | 4 | 100 ГБ |
до 100 | 4-8 ГБ | 8 | 150 ГБ |
до 500 | 8-16 ГБ | 8 | 200 ГБ |
База данных и сервер приложения разнесены по разным серверам.
RAM-1, CPU-1, HDD-1 — сервер приложения.
RAM-2, CPU-2, HDD-2 — база данных.
Количество пользователей | RAM-1 | CPU-1 | HDD-1 | RAM-2 | CPU-2 | HDD-2 |
---|---|---|---|---|---|---|
до 50 | 2-4 ГБ | 4 | 100 ГБ | 2-4 ГБ | 4 | 100 ГБ |
до 100 | 4 ГБ | 8 | 100 ГБ | 4 ГБ | 4 | 150 ГБ |
до 500 | 8-16 ГБ | 8 | 100 ГБ | 8 ГБ | 8 | 200 ГБ |
до 1000 | 8-16 ГБ | 8 | 100 ГБ | 16 ГБ | 8 | 200 ГБ |
до 10 000 | 16-32 ГБ | 16 | 100 ГБ | 16-32 ГБ | 16 | 200 ГБ |
База данных MongoDB может работать в режиме «отказоустойчивости». Выделяется три основных роли серверов в репликационном наборе:
- PRIMARY — основной (главный) сервер;
- SECONDARY — второстепенный сервер в режиме синхронизации;
- ARBITER — сервер не хранящий данных, но принимающий голосование при выборе основной (PRIMARY) ноды.
Мы рекомендуем использовать полноценные экземпляры, так как встроенный механизм балансировки MongoDB работает и без Арбитра.
Возможные варианты реализации:
- Три и более сервера: три полноценных сервера баз данных (мастер выбирается в процессе голосования). Арбитр также может быть использован в таких сценариях в качестве дополнительного сервера. Это может быть нужно в специфичных ситуациях, где нужно использовать прогнозируемое переключение PRIMARY ноды;
- Три сервера: два полноценных сервера баз данных, один из которых выбирается в качестве основного (PRIMARY), второй — в качестве второстепенного (SECONDARY), и сервер ARBITER. PRIMARY нода переключается автоматически в случае падения текущего основного сервера. ARBITER позволяет сэкономить ресурсы, так как менее требователен.
Минимальное количество членов репликационного набора — три. При использовании двух нод в репликационном наборе, в случае отказа одной из нод, репликационный набор перейдет в режим «только чтение», и Пассворк будет недоступен.
Технические требования для арбитра:
- RAM — 4 ГБ, CPU — 4, HDD — 100 ГБ;
- Высокая скорость сетевого соединения с остальными серверами баз данных.
Возможно использовать несколько серверов приложений в связке:
- горизонтально несколько PHP-FPM серверов;
- балансировщик трафика.
Это позволит:
- При падении одного сервера запросы автоматически переадресуются на рабочие серверы;
- Ускорить работу приложения при большом количестве пользователей (10 000 и более).
В указанных выше рекомендациях по HDD не учитываются бэкапы и логи. Мы рекомендуем хранить бэкапы базы данных на отдельных серверах или в специализированных хранилищах.
Архивированный бэкап базы занимает примерно 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 ГБ |