mongodb
Требования к установке mongodb
- Каталог, указанный в параметре
storage.dbPath(обычно /var/lib/mongo) должен размещаться на отдельном raid1 устройстве и доступен для записи пользовательюmongod - Во избежание остановки службы в случае переполнения памяти памяти рекомендуется установить для него oomscore
Установка Mongodb в Centos 7
Подготовка к установке.
- Каталог по умолчанию mongodb
/var/lib/mongoдолжен быть на отдельном разделе - Подключение репозитория
Установка:
sudo yum install mongodb-org –y
Перед запуском предоставить права на /var/lib/mongo:
sudo chown -R mongod: /var/lib/mongo
Запуск службы
sudo systemctl enable --now mongod
Настройка firewalld (опционально для сетей, отличных от госпитальной)
sudo firewall-cmd --zone=public --permanent --add-port=27017/tcp
sudo firewall-cmd –reload
Настройка пользователя и БД:
mongo
## insert data
> use admin
> db.createUser( { user: "<admin>", pwd: passwordPrompt(), roles: [ { role: "userAdminAnyDatabase", db: "<databaseName>" }, "readWriteAnyDatabase" ]})
> db.createUser( { user: "<user>", pwd: "<password>", roles: [ { role: "readWrite", db: "<databaseName>" } ] } )
> db.createUser( { user: "<user-audit>", pwd: "<password>", roles: [ { role: "readWrite", db: "<databaseName-audit>" } ] } )
> exit
Включение авторизации:
vim /etc/mongod.conf
...
security:
authorization: "enabled"
...
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,<hp network ip addr>
## Restart
systemctl restart mongod
Можно указать bindIp 0.0.0.0, но необходимо убедиться, что со стороны внешней сети порт прикрыт firewall.
Проверка:
mongo --host 127.0.0.1 \
--port 27017 \
--username <user> \
--password
...
> use <databaseName>
switched to db <databaseName>
> db.getCollectionNames()
[ ]
Настройка ротации логов mongod:
- Установить logrotate:
sudo yum install -y logrotate
- Привести секцию
systemLogв файле/etc/mongod.confк виду:
systemLog:
destination: file
logAppend: true
logRotate: reopen
path: /var/log/mongodb/mongod.log
- Убедиться, что в секции
processManagementзадан параметрpidFilePath(если параметр не задан, pid файл не создается)
processManagement:
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
- Рестартовать сервис
systemctl restart mongod
- Настроить logrotate: Файл /etc/logrotate.d/mongo
/var/log/mongodb/*.log {
daily
rotate 30
size 512M
compress
dateext
missingok
create 0600 mongod mongod
notifempty
sharedscripts
postrotate
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
endscript
}
Проверка:
ls -l /var/log/mongodb
...
sudo logrotate --force --debug /etc/logrotate.d/mongo
...
ls -l /var/log/mongodb
Настройка OOMScore для mongodb.service
- Выполнить systemctl edit mongod.service, дополнить секцию Service:
[Service]
OOMScoreAdjust=-1000
- Рестартовать службу
sudo systemctl daemon-reload
sudo systemctl restart mongod