Red Hat does not offer an up-to-date version of MongoDB on RHEL 7, but MongoDB, Inc. offers its own set of repositories from which the most current version can be installed.
mongo
shell client application. In each section below, instructions are provided to indicate on which server(s) that step should be performed.Install the MongoDB repository
As of this writing the latest, stable version of MongoDB is 3.6, originally released in December 2017. To install MongoDB 3.6 with yum
, create the file /etc/yum.repos.d/mongodb-org-3.6.repo
on the master build server (casdev-master) with the following contents:
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
Then copy the new file to each of the CAS servers by running the commands
casdev-master# for i in 01 02 03
> do
> scp -p /etc/yum.repos.d/mongodb-org-3.6.repo casdev-srv${i}:/etc/yum.repos.d/mongodb-org-3.6.repo
> done
mongodb-org-3.6.repo 100% 200 273.9KB/s 00:00
mongodb-org-3.6.repo 100% 200 251.1KB/s 00:00
mongodb-org-3.6.repo 100% 200 255.4KB/s 00:00
casdev-master#
Install MongoDB
Run the command
# yum -y install mongodb-org
on the master build server (casdev-master) and each of the CAS servers (casdev-srv01, casdev-srv02, and casdev-srv03) to install MongoDB.
Correct directory permissions
The default MongoDB installation creates the MongoDB data directory and MongoDB log directory with permissions that allow all users on the system to access them. However, only the mongod
user and mongod
group actually need access to these directories, so access for other users should be removed. Run the command
# chmod -R o= /var/lib/mongo /var/log/mongodb
on the master build server (casdev-master) and each of the CAS servers (casdev-srv01, casdev-srv02, and casdev-srv03) to correct the directory permissions.
Configure logrotate
By default, mongod
will keep writing to the same log file until it is told not to; there is no pre-configured scheme for rotating logs. To correct this, configure the logroate
program, which is probably already being used to rotate various system log files, to rotate /var/log/mongodb/mongod.log
as well.
Create the file /etc/logrotate.d/mongod
on the master build server (casdev-master) with the following contents:
/var/log/mongodb/mongod.log
{
daily
dateext
dateformat -%Y-%m-%d
dateyesterday
extension .log
missingok
notifempty
rotate 30
create 0640 mongod mongod
sharedscripts
postrotate
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
endscript
}
This will rotate mongod.log
every day, moving the current log file to mongod-YYYY-MM-DD.log
. Since logrotate
typically runs in the wee hours of the morning, the dateyesterday
directive tells it to use yesterday’s date for the file name, since that’s when most of the log entries will come from. The last 30 days’ worth of log files will be kept; older files will be deleted automatically. Once the file has been rotated, logrotate
will signal mongod
to switch to the new log file.
Run the command
casdev-master# logrotate -df /etc/logrotate.d/mongod
reading config file /etc/logrotate.d/mongod
extension is now .log
Allocating hash table for state file, size 15360 B
Handling 1 logs
rotating pattern: /var/log/mongodb/mongod.log
forced from command line (30 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mongodb/mongod.log
log needs rotating
rotating log /var/log/mongodb/mongod.log, log->rotateCount is 30
Converted ' -%Y-%m-%d' -> '-%Y-%m-%d'
dateext suffix '-2018-04-29'
glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
glob finding old rotated logs failed
fscreate context set to system_u:object_r:mongod_log_t:s0
renaming /var/log/mongodb/mongod.log to /var/log/mongodb/mongod-2018-04-29.log
creating new /var/log/mongodb/mongod.log mode = 0640 uid = 994 gid = 992
running postrotate script
running script with arg /var/log/mongodb/mongod.log
: "
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
"
casdev-master#
to check the syntax of the file and confirm that it will do what you expect. Then copy the new file to each of the CAS servers by running the commands
casdev-master# for i in 01 02 03
> do
> scp -p /etc/logrotate.d/mongod casdev-srv${i}:/etc/logrotate.d/mongod
> done
mongod 100% 293 400.8KB/s 00:00
mongod 100% 293 363.6KB/s 00:00
mongod 100% 293 397.7KB/s 00:00
casdev-master#
Disable the mongod
service on the master build server
Since the master build server will not be part of the replica set, it does not need to run the MongoDB server (mongod
). Run the command
casdev-master# systemctl disable mongod
Removed symlink /etc/systemd/system/multi-user.target.wants/mongod.service.
casdev-master#
on the master build server (casdev-master) to prevent mongod
from being started when the system boots.
References
MongoDB: Install MongoDB Community Edition on Red Hat Enterprise or CentOS Linux