Установка и настройка MongoDB 4.4 на CentOS 8
В этом руководстве собраны практические команды, проверенные настройки производительности и сценарии отладки для типичной установки MongoDB на сервере CentOS 8.
Кому это нужно
- Системным администраторам и DevOps-инженерам, которые разворачивают MongoDB на CentOS 8.
- Разработчикам, которым нужен приватный экземпляр MongoDB с включённой аутентификацией.
Предварительные требования
- Сервер с CentOS 8
- Доступ root или учётная запись с sudo
- Базовые навыки работы в терминале Linux
Что мы сделаем
- Добавим репозиторий MongoDB 4.4
- Установим MongoDB
- Исправим распространённые проблемы (THP, ulimits)
- Создадим администратора MongoDB
- Включим аутентификацию
- Протестируем работу
Быстрый обзор терминов
- MongoDB: документо-ориентированная NoSQL СУБД (данные хранятся в BSON, похожем на JSON).
- THP: Transparent Huge Pages — механизм ядра Linux, который может негативно влиять на производительность MongoDB.
- ulimit: ограничения ресурсов для процессов пользователя.
Шаг 1 — Добавление репозитория MongoDB
Сначала подключитесь к серверу по SSH и обновите пакеты:
ssh [email protected]
sudo dnf updateПерейдите в каталог с репозиториями и создайте файл mongodb-4.4.repo:
cd /etc/yum.repos.d/
vim mongodb-4.4.repoВставьте следующие строки и сохраните файл:
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.ascПроверьте список репозиториев:
sudo dnf repolist
Результат подтверждает успешное добавление репозитория.
Шаг 2 — Установка сервера MongoDB
Установите пакет mongodb-org:
sudo dnf install -y mongodb-orgЗапустите сервис и добавьте его в автозагрузку:
systemctl start mongod
systemctl enable mongodПроверьте состояние службы и открытые порты:
ss -plnt
systemctl status mongod
По умолчанию MongoDB слушает порт 27017.
Шаг 3 — Оптимизация и исправления распространённых ошибок
На этом этапе мы применим настройки, которые обычно рекомендуются для продакшен-инсталляций MongoDB.
Отключение Transparent Huge Pages (THP) с помощью tuned
THP может привести к фрагментации и задержкам в работе MongoDB. Для CentOS удобнее управлять этим через tuned-профили.
Создайте директорию для кастомного профиля и файл конфигурации:
sudo mkdir -p /etc/tuned/virtual-guest-no-thp
vim /etc/tuned/virtual-guest-no-thp/tuned.confВставьте:
[main]
include=virtual-guest
[vm]
transparent_hugepages=neverАктивируйте профиль:
sudo tuned-adm profile virtual-guest-no-thpПроверьте статус THP:
cat /sys/kernel/mm/transparent_hugepage/enabledОжидаемый вывод содержит “[never]”.

Настройка ulimit для mongod
MongoDB требует повышения лимитов процессов и открытых файлов для стабильной работы под нагрузкой.
Создайте файл конфигурации в /etc/security/limits.d/:
cd /etc/security/limits.d/
vim mongod.confДобавьте:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000Примените изменения (sysctl иногда не обязателен, но безопасно выполнить):
sysctl -pПосле перезагрузки пользователя mongod эти лимиты вступят в силу. Убедитесь, что служба mongod запускается от пользователя mongod.
Отключение предупреждения MongoDB Cloud Monitoring (опционально)
При входе в mongo shell может появляться приглашение подключиться к облачному мониторингу. Его можно отключить из shell:
mongoВнутри shell выполните:
db.disableFreeMonitoring()Выйдите из shell и перезагрузите сервер:
exit
sudo reboot
Шаг 4 — Создание администратора MongoDB
Подключитесь к mongo shell и создайте пользователя с ролью userAdminAnyDatabase в базе admin.
mongo
use admin
db.createUser(
{
user: "admin",
pwd: "hakasepasswordformongodbadmin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)Проверьте созданных пользователей:
show users
Важно: замените пароль на надёжный секрет в реальной среде; рассмотрите использование менеджера секретов.
Шаг 5 — Включение аутентификации
Отредактируйте /etc/mongod.conf и включите секцию security с авторизацией:
vim /etc/mongod.confНайдите или добавьте:
security
authorization: "enabled"Перезапустите службу:
systemctl restart mongodПроверьте, что ошибок нет и служба активна.

Шаг 6 — Тестирование аутентификации
Проверим, что без аутентификации доступ к администраторам ограничен.
mongo
use admin
show usersЕсли пользователь не авторизован, вы увидите ошибку доступа.
Авторизуйтесь:
db.auth('admin', 'hakasepasswordformongodbadmin')Ожидаемый ответ: 1 (успешная аутентификация).
После входа можно снова выполнить
show users
Полезные команды и краткая шпаргалка
- Запустить/остановить/перезапустить службу:
systemctl start|stop|restart mongod
systemctl enable mongod
systemctl status mongod- Проверить открытые порты:
ss -plnt | grep 27017- Войти в mongo shell:
mongoСоздать пользователя в базе admin: см. выше block db.createUser
Включить/отключить мониторинг: db.disableFreeMonitoring() / db.enableFreeMonitoring()
Рекомендации по безопасности
- Всегда используйте сложные пароли и ротацию секретов.
- Ограничьте сетевой доступ к порту 27017 через брандмауэр или Security Group.
- Для продакшена используйте TLS между клиентами и серверами MongoDB.
- Отключите подключение mongod к внешнему интерфейсу, если оно не требуется (bindIp в mongod.conf).
Резервные стратегии и откат
- Перед изменением конфигурации делайте резервную копию mongod.conf и данных.
- Если после включения authorization служба не стартует, откатите изменения в mongod.conf и перезапустите, затем просмотрите логи:
journalctl -u mongod -b --no-pager
less /var/log/mongodb/mongod.log- Для отката профиля tuned: выполните
sudo tuned-adm profile defaultВарианты и альтернативные подходы
- Вместо tuned можно использовать скрипты systemd или /etc/rc.local для отключения THP (менее предпочтительно).
- Для управления секретами используйте HashiCorp Vault, AWS Secrets Manager или аналог.
- Для высокодоступных инсталляций рассмотрите реплика-сеты и шардирование (это выходит за рамки данной инструкции).
Ментальные модели и контрольные списки
- “Минимум для продакшена”: репозиторий → установка → отключение THP → ulimit → пользователь admin → включение авторизации → тесты.
- Контрольный список перед вводом в эксплуатацию:
- Репозиторий добавлен
- Установлен mongodb-org
- THP отключён
- ulimit увеличен
- Создан admin-пользователь
- Включена авторизация
- Проходят тесты аутентификации
- Настроено резервное копирование
- Ограничен сетевой доступ
Сценарии отказа и когда это может не сработать
- Если система использует кастомный релиз ядра или особую виртуализацию, tuned-профиль может не применяться — проверьте, поддерживается ли tuned.
- На сильно ограниченных VPS провайдер может блокировать изменение ulimits; в этом случае обратитесь в поддержку провайдера.
- Если mongod запускается от другого пользователя, правила в /etc/security/limits.d/mongod.conf должны соответствовать этому пользователю.
Пример плана приёма (критерии приёмки)
- MongoDB установлена и запущена без ошибок.
- THP в системе отключён (cat /sys/kernel/mm/transparent_hugepage/enabled показывает [never]).
- ulimit для процесса mongod соответствует конфигурации (проверить через ps+ /proc/
/limits). - При включённой авторизации подключение к mongo требует аутентификации и db.auth возвращает 1 для корректных учётных данных.
Role-based чек-листы
Системный администратор:
- Проверил логи mongod
- Настроил мониторинг и бэкапы
- Ограничил сетевые правила
Разработчик базы данных:
- Создал необходимые роли и пользователей
- Проверил права доступа на коллекции
Минимальная методология развертывания
- Подготовка сервера и обновление пакетов
- Добавление репозитория и установка mongodb-org
- Применение настроек производительности (THP, ulimit)
- Создание admin-пользователя
- Включение авторизации
- Тестирование и мониторинг
Короткий список файлом для копирования (cheat sheet)
- Файл репозитория: /etc/yum.repos.d/mongodb-4.4.repo
- Конфигурация tuned: /etc/tuned/virtual-guest-no-thp/tuned.conf
- Лимиты: /etc/security/limits.d/mongod.conf
- Главный конфиг MongoDB: /etc/mongod.conf
Заключение
Установка MongoDB 4.4 на CentOS 8 включает не только установку пакета, но и набор настроек для стабильной и безопасной работы: отключение THP, корректные ulimits, создание администратора и включение авторизации. После выполнения всех шагов выполните нагрузочное тестирование и настройте резервное копирование.
Факто-бокс: ключевые числа
- Порт по умолчанию: 27017
- Рекомендуемые лимиты: nofile/nproc = 64000
- Версия, описанная в руководстве: MongoDB 4.4
Краткое напоминание: замените примерный пароль на надёжный секрет и интегрируйте систему с менеджером секретов и системой резервного копирования.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента