Облачный сервер для MongoDB в Европе: руководство по набору реплик
MongoDB - самая широко развёрнутая документная база данных, на которой работает всё от систем управления содержимым до аналитики в реальном времени. Для приложений, обслуживающих европейских пользователей, где MongoDB хранит эти данные и под чьей юрисдикцией - важно не меньше, чем то, насколько хорошо она работает.
Это руководство описывает требования MongoDB к оборудованию, ключевые параметры настройки движка хранения WiredTiger и какую пропускную способность даёт правильно настроенный облачный сервер в ЕС.
Почему место хранения данных в ЕС важно для MongoDB
GDPR применяется к любой системе, обрабатывающей персональные данные жителей ЕС. Базы MongoDB обычно хранят профили пользователей, поведенческие данные и записи о транзакциях - всё это попадает в область GDPR. Хостинг на облачном сервере в ЕС у компании из ЕС означает, что ваши данные не покидают юрисдикцию ЕС, а это выполняет требование к месту хранения без стандартных договорных условий и сложных оценок влияния передачи.
Помимо соответствия требованиям, хостинг в ЕС снижает задержку для европейских пользователей. Гибкая документная модель MongoDB поощряет вкладывать связанные данные внутрь документа, а значит обращений к базе становится меньше. Каждое из них быстрее, когда сервер в том же регионе, что и приложение. База в Праге отвечает берлинскому приложению на 70-100 мс быстрее на запрос, чем база в дата-центре США.
Минимальные требования к серверу для MongoDB
Движок WiredTiger в MongoDB использует кеш, отдельный от файлового кеша ОС. И кеш WiredTiger, и кеш ОС выигрывают от доступной RAM:
- Небольшой (разработка и стейджинг, менее 1000 операций в секунду) - 4 vCPU, 8 ГБ RAM, 100 ГБ NVMe SSD
- Средний (продакшен, 1000-20000 операций в секунду) - 8 vCPU, 32 ГБ RAM, 500 ГБ NVMe SSD
- Крупный (высокая пропускная способность или большие наборы данных) - 16 и более vCPU, 64-128 ГБ RAM, 1 ТБ и более NVMe SSD
По умолчанию WiredTiger берёт под кеш 50% от (RAM минус 1 ГБ). На сервере с 32 ГБ это примерно 15,5 ГБ. Значение можно поднять, но оставьте запас на ОС, индексы в памяти и расход на соединения.
Рекомендуемая конфигурация DCXV
Облачные серверы DCXV дают хранилище NVMe с тем профилем случайного IOPS, который нужен операциям записи MongoDB и процессам сжатия. Рекомендуемые конфигурации для MongoDB:
- 8 vCPU, 32 ГБ RAM, 500 ГБ NVMe - продакшен-база приложения, основной узел набора реплик
- 16 vCPU, 64 ГБ RAM, 1 ТБ NVMe - крупные хранилища документов, нагрузки с интенсивной записью или аналитические сценарии
- 3 по 8 vCPU / 32 ГБ RAM - набор реплик из трёх узлов для высокой доступности между зонами дата-центра ЕС
Приватная сеть между серверами DCXV держит трафик репликации набора внутри сетевой фабрики дата-центра, что снижает отставание реплик. Напишите на sales@dcxv.com, чтобы обсудить топологию набора реплик и получить сетевую конфигурацию, которая минимизирует отставание вторичных узлов.
Команды для быстрой установки
# Установка MongoDB 7.0 на Ubuntu 22.04
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update && sudo apt install -y mongodb-org
# Запуск и включение службы
sudo systemctl start mongod
sudo systemctl enable mongod
# Подключение и создание пользователя базы
mongosh --quiet <<'EOF'
use admin
db.createUser({
user: "myapp_user",
pwd: "strongpassword",
roles: [{ role: "readWrite", db: "myapp" }]
})
EOF
# Ключевые параметры mongod.conf для сервера с 32 ГБ RAM
# Правьте /etc/mongod.conf
storage:
dbPath: /var/lib/mongodb
engine: wiredTiger
wiredTiger:
engineConfig:
# Около 50% RAM, с запасом на кеш ОС и соединения
cacheSizeGB: 20
collectionConfig:
blockCompressor: snappy # snappy = быстро; zstd = лучше сжатие
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.5 # localhost плюс приватный адрес этого сервера
security:
authorization: enabled
# Применение изменений
sudo systemctl restart mongod
# Настройка набора реплик из 3 узлов в приватной сети DCXV
# Сначала выполните на всех трёх серверах - обновите mongod.conf:
# replication:
# replSetName: "rs0"
# Затем инициируйте набор реплик с основного узла
mongosh --quiet <<'EOF'
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "10.0.0.5:27017", priority: 2 },
{ _id: 1, host: "10.0.0.6:27017", priority: 1 },
{ _id: 2, host: "10.0.0.7:27017", priority: 1 }
]
})
EOF
# Проверка состояния набора реплик
mongosh --quiet --eval "rs.status()"
# Создание полезных индексов после настройки коллекций
mongosh myapp --quiet <<'EOF'
// Индексы под частые схемы запросов - подстройте под свою схему данных
db.users.createIndex({ email: 1 }, { unique: true })
db.events.createIndex({ userId: 1, createdAt: -1 })
db.products.createIndex({ category: 1, price: 1 })
// Проверка использования индекса через explain
db.users.find({ email: "test@example.com" }).explain("executionStats")
EOF
Ожидаемые показатели производительности
На инстансе 8 vCPU / 32 ГБ RAM / NVMe с MongoDB 7.0 и кешем WiredTiger в 20 ГБ:
- Пропускная способность чтения (запросы по индексу, в кеше) - 50 000-80 000 операций в секунду
- Пропускная способность записи (одиночные вставки) - 15 000-25 000 операций в секунду
- Пропускная способность пакетной вставки (ordered:false, партии по 1000) - 100 000-200 000 документов в секунду
- Конвейер агрегации (набор данных в кеше) - 10 000-30 000 документов в секунду
Уровень подтверждения записи majority в наборе реплик добавляет задержку пропорционально времени оборота между узлами. В приватной сети внутри одного дата-центра это обычно 0,2-0,5 мс дополнительной задержки на запись - приемлемо для большинства продакшен-нагрузок.
Это ожидания для оборудования такого класса, а не измерения из нашей лаборатории. Считайте их отправной точкой для расчёта и измеряйте собственную нагрузку: реальные цифры зависят от ваших данных, ваших запросов и вашей настройки гораздо сильнее, чем от провайдера.
Итог
MongoDB на облачном сервере DCXV в ЕС даёт хранение данных по GDPR, низкую задержку для европейских пользователей и гибкость документной модели в масштабе. Два самых влиятельных решения по настройке - размер кеша WiredTiger и набор реплик из трёх узлов сразу и для надёжности, и для высокой доступности. Напишите в DCXV, чтобы собрать инфраструктуру MongoDB в дата-центре ЕС уровня Tier III.
