In the past couple of days. I have change my job started working on server less model.so all of there data they don't store in the traditional way in RDBMS in fact thay store all of there application logs in the DB.
So We have started using MongoDB As a document database few of the advantages of mongodb.
mongo0
192.168.56.131
mongo1
192.168.56.132
mongo2
192.168.56.133
1
Windows Host for testing using studio 3T
Login
on all 3 vms,
Disable
the firewalld service
#
systemctl disable firewalld
Stop
the firewalld service
#
systemctl stop firewalld
Disable
SeLinux
To
permanently disable SELinux, use your favorite
text editor to open the file /etc/sysconfig/selinux
Then
change the directive SELinux=enforcing to SELinux=disabled
Update
the all packages and Install EPEL release repo
#
yum update -y && yum insall epel-release
Edit
hostname file and change the hostname mongo0,mongo1,mongo2…
/etc/hostanme
Add
the below entry in the /etc/hosts
mongo0
192.168.56.131
mongo1
192.168.56.132
mongo2
192.168.56.133
reboot
the system
#
reboot now
Configure
the package management system (yum).
Create
a /etc/yum.repos.d/mongodb-org-4.2.repo file
so that you can install MongoDB directly using yum:
[mongodb-org-4.2]
name=MongoDB
Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
Install
the MongoDB packages.
To
install the latest stable version of MongoDB, issue the following
command:
sudo
yum install -y mongodb-org
Alternatively,
to install a specific release of MongoDB, specify each component
package individually and append the version number to the package
name, as in the following example:
sudo
yum install -y mongodb-org-4.2.0 mongodb-org-server-4.2.0
mongodb-org-shell-4.2.0 mongodb-org-mongos-4.2.0
mongodb-org-tools-4.2.0
You
can specify any available version of MongoDB. However yum upgrades
the packages when a newer version becomes available. To prevent
unintended upgrades, pin the package. To pin a package, add the
following exclude directive
to your /etc/yum.conf file:
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
Start one
member (master) of the replica set.
Create
administrative users.
The
following operations will create two users: a user administrator that
will be able to create and modify users (siteUserAdmin),
and a root user
(siteRootAdmin)
that you will use to complete the remainder of the tutorial:
use
admin
db.createuser(
{
user:
"siteUserAdmin",
roles:
[
"userAdminAnyDatabase"
]
});
db.createuser(
{
user:
"siteRootAdmin",
roles:
[
"userAdminAnyDatabase",
"readWriteAnyDatabase",
"dbAdminAnyDatabase",
"clusterAdmin"
]
});
Stop
the mongod instance.
Create the key
file to be used by each member of the replica set.
Create
the key file your deployment will use to authenticate servers to each
other.
To
generate pseudo-random data to use for a keyfile,
issue the following openssl command:
mkdir
-p /etc/mongod
openssl
rand -base64 741 > /etc/mongod/mongodb-keyfile
chown
-R mongod:mongod /etc/mongod
chmod
600 /etc/mongod/mongodb-keyfile
You
may generate a key file using any method you choose. Always ensure
that the password stored in the key file is both long and contains a
high amount of entropy. Using openssl in
this manner helps generate such a key.
Copy the key file
to each member of the replica set.
Copy
the mongodb-keyfile to
all hosts where components of a MongoDB deployment run. Set the
permissions of these files to 600 so
that only the owner of
the file can read or write this file to prevent other users on the
system from accessing the shared secret.
mkdir
-p /etc/mongod
chown
-R mongod:mongod /etc/mongod
chmod
600 /etc/mongod/mongodb-keyfile
on
master
Execute
the scp command for all the slaves one by one.
scp
/etc/mongod/mongodb-keyfile user@slave: /etc/mongod/mongodb-keyfile
Sample
mongod.conf file is looks something like this
#
mongod.conf
#
for documentation of all options, see:
#
http://docs.mongodb.org/manual/reference/configuration-options/
#
where to write logging data.
systemLog:
destination:
file
logAppend:
true
path:
/var/log/mongodb/mongod.log
#
Where and how to store data.
storage:
dbPath:
/var/lib/mongo
journal:
enabled:
true
#
engine:
#
wiredTiger:
#
how the process runs
processManagement:
fork:
true # fork and run in background
pidFilePath:
/var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo:
/usr/share/zoneinfo
#
network interfaces
net:
port:
27017
bindIp:
0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses
or, alternatively, use the net.bindIpAll setting.
replication:
replSetName:
"rs0"
security:
keyFile:
/etc/mongod/mongodb-keyfile
#operationProfiling:
#replication:
#sharding:
##
Enterprise-Only Options
#auditLog:
#snmp:
Make sure the
changes highlighted in yellow are available in your conf file
Connect to the
member of the replica set where you created the administrative users.
Connect
to the replica set member you started and authenticate as
the siteRootAdmin user.
From the mongo shell,
use the following operation to authenticate:
use
admin
db.auth("siteRootAdmin",
"");
Initiate the
replica set.
rs.initiate()
MongoDB
initiates a set that consists of the current member and that uses the
default replica set configuration.
Verify the
initial replica set configuration.
rs.conf()
The
replica set configuration object resembles the following:
{
"_id"
:
"rs0",
"version"
:
1,
"members"
:
[
{
"_id"
:
1,
"host"
:
"mongo0:27017"
}
]
}
Add the remaining
members to the replica set.
Add
the remaining members with the rs.add() method.
The
following example adds two members:
rs.add("mongo1")
rs.addArb("mongo2")
When
complete, you have a fully functional replica set. The new replica
set will elect a primary.
Check the status
of the replica set.
rs.status()
On
secondary (slave) execute
rs.slaveOk()