Гид по технологиям

Установка и настройка MongoDB 4.4 на CentOS 8

• 6 min read • Базы данных • Обновлено 27 Nov 2025
Установка и настройка MongoDB 4.4 на CentOS 8
Установка и настройка 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

Добавление репозитория MongoDB для CentOS 8

Результат подтверждает успешное добавление репозитория.

Шаг 2 — Установка сервера MongoDB

Установите пакет mongodb-org:

sudo dnf install -y mongodb-org

Запустите сервис и добавьте его в автозагрузку:

systemctl start mongod
systemctl enable mongod

Проверьте состояние службы и открытые порты:

ss -plnt
systemctl status mongod

Проверка статуса службы MongoDB

По умолчанию 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]”.

Отключение THP с помощью tuned на CentOS 8

Настройка 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

Настройка ulimit и отключение мониторинга MongoDB

Шаг 4 — Создание администратора MongoDB

Подключитесь к mongo shell и создайте пользователя с ролью userAdminAnyDatabase в базе admin.

mongo
use admin

db.createUser(
  {
    user: "admin",
    pwd: "hakasepasswordformongodbadmin",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

Проверьте созданных пользователей:

show users

Создание пользователя admin в MongoDB

Важно: замените пароль на надёжный секрет в реальной среде; рассмотрите использование менеджера секретов.

Шаг 5 — Включение аутентификации

Отредактируйте /etc/mongod.conf и включите секцию security с авторизацией:

vim /etc/mongod.conf

Найдите или добавьте:

security
    authorization: "enabled"

Перезапустите службу:

systemctl restart mongod

Проверьте, что ошибок нет и служба активна.

Включение аутентификации MongoDB

Шаг 6 — Тестирование аутентификации

Проверим, что без аутентификации доступ к администраторам ограничен.

mongo
use admin
show users

Если пользователь не авторизован, вы увидите ошибку доступа.

Авторизуйтесь:

db.auth('admin', 'hakasepasswordformongodbadmin')

Ожидаемый ответ: 1 (успешная аутентификация).

После входа можно снова выполнить

show users

Тест аутентификации MongoDB

Полезные команды и краткая шпаргалка

  • Запустить/остановить/перезапустить службу:
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
    • Настроил мониторинг и бэкапы
    • Ограничил сетевые правила
  • Разработчик базы данных:

    • Создал необходимые роли и пользователей
    • Проверил права доступа на коллекции

Минимальная методология развертывания

  1. Подготовка сервера и обновление пакетов
  2. Добавление репозитория и установка mongodb-org
  3. Применение настроек производительности (THP, ulimit)
  4. Создание admin-пользователя
  5. Включение авторизации
  6. Тестирование и мониторинг

Короткий список файлом для копирования (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

Краткое напоминание: замените примерный пароль на надёжный секрет и интегрируйте систему с менеджером секретов и системой резервного копирования.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро