检查软件包
在开始安装MongoDB之前,请确认已经获得以下软件包,若没有,下载地址为:https://github.com/houwanle/blog-file/tree/master/csdn-blog/mongodb/CentOS7%E7%89%88%E5%AE%89%E8%A3%85%E5%8C%85
- mongodb-org-server-3.6.10-1.el7.x86_64.rpm
- mongodb-org-mongos-3.6.10-1.el7.x86_64.rpm
- mongodb-org-shell-3.6.10-1.el7.x86_64.rpm
- mongodb-org-tools-3.6.10-1.el7.x86_64.rpm
查看防火墙状态
运行命令:
/bin/systemctl status firewalld.service
查看防火墙是否关闭,如下图所示(白色为关闭,绿色为打开):
或
注:如果为启动状态,需要配置防火墙,打开端口:27001、27002、27003,否则无法连接MongoDB;
或者关闭防火墙,并把 /etc/sysconfig/selinux
中的 SELINUX 设置为 disabled 然后重启虚拟机(注意重启后firewalld也会重启),关闭防火墙就可以了。
安装MongoDB
将MongoDB安装包通过WinSCP上传到 /usr/local 目录下,并且检查SELINUX是否已经开启,如果开启则需要关闭。
进入安装包所在的目录:
cd /usr/local
执行命令安装mongodb:
rpm -Uvh mongodb-org-server-3.6.10-1.el7.x86_64.rpm
rpm -Uvh mongodb-org-mongos-3.6.10-1.el7.x86_64.rpm
rpm -Uvh mongodb-org-shell-3.6.10-1.el7.x86_64.rpm
rpm -Uvh mongodb-org-tools-3.6.10-1.el7.x86_64.rpm
修改配置文件 /etc/mongod.conf
(可直接复制):
# 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/mongod1.log
quiet: true
# Where and how to store data.
storage:
dbPath: /var/lib/mongo/mongo1
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongodb1/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27001
bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
#security:
#operationProfiling:
replication:
replSetName: mongodbSet
oplogSizeMB: 1024
enableMajorityReadConcern: false
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
修改服务文件/lib/systemd/system/mongod.service
(可直接复制):
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=root
Group=root
Environment="OPTIONS=-f /etc/mongod.conf --keyFile=/var/lib/mongo/keyFile"
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb/mongodb1
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb/mongodb1
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb/mongodb1
ExecStartPre=/usr/bin/mkdir -p /var/lib/mongo/mongo1
ExecStartPre=/usr/bin/chown mongod:mongod /var/lib/mongo/mongo1
ExecStartPre=/usr/bin/chmod 0755 /var/lib/mongo/mongo1
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongodb1/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
执行下列命令重新加载服务配置文件:
systemctl daemon-reload
依次运行下列命令(先启动服务然后再停掉服务,用于创建相关目录):
service mongod start
service mongod stop
开机自动启动配置:
# 开启开机自启
chkconfig mongod on
# 关闭开机自启
chkconfig mongod off
安装第二个mongodb
复制/etc/mongod.conf文件为/etc/mongod2.conf,修改相关内容为(可直接复制):
# 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/mongod2.log
quiet: true
# Where and how to store data.
storage:
dbPath: /var/lib/mongo/mongo2
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongodb2/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27002
bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
#security:
#operationProfiling:
replication:
replSetName: mongodbSet
oplogSizeMB: 1024
enableMajorityReadConcern: false
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
复制/usr/lib/systemd/system/mongod.service文件为/usr/lib/systemd/system/mongod2.service,修改相关内容为:
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=root
Group=root
Environment="OPTIONS=-f /etc/mongod2.conf --keyFile=/var/lib/mongo/keyFile"
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb/mongodb2
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb/mongodb2
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb/mongodb2
ExecStartPre=/usr/bin/mkdir -p /var/lib/mongo/mongo2
ExecStartPre=/usr/bin/chown mongod:mongod /var/lib/mongo/mongo2
ExecStartPre=/usr/bin/chmod 0755 /var/lib/mongo/mongo2
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongodb2/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
执行下列命令重新加载服务配置文件:
systemctl daemon-reload
service mongod2 start
service mongod2 stop
开机自启配置:
# 开启
chkconfig mongod2 on
# 关闭
chkconfig mongod2 off
安装第三个mongodb(重复上面步骤,将其中的mongo2、mongod2、mongodb2对应修改为mongo3、mongod3、mongodb3)
mongo3.conf:
# 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/mongod3.log
quiet: true
# Where and how to store data.
storage:
dbPath: /var/lib/mongo/mongo3
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongodb3/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27003
bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
#security:
#operationProfiling:
replication:
replSetName: mongodbSet
oplogSizeMB: 1024
enableMajorityReadConcern: false
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
mongo3.service
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=root
Group=root
Environment="OPTIONS=-f /etc/mongod3.conf --keyFile=/var/lib/mongo/keyFile"
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb/mongodb3
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb/mongodb3
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb/mongodb3
ExecStartPre=/usr/bin/mkdir -p /var/lib/mongo/mongo3
ExecStartPre=/usr/bin/chown mongod:mongod /var/lib/mongo/mongo3
ExecStartPre=/usr/bin/chmod 0755 /var/lib/mongo/mongo3
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongodb3/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
执行下列命令增加mongodb集群认证文件keyFile:
openssl rand -base64 745 > /var/lib/mongo/keyFile
chmod 600 /var/lib/mongo/keyFile
执行下列命令以无需认证的方式启动集群:
mongod -f /etc/mongod.conf
mongod -f /etc/mongod2.conf
mongod -f /etc/mongod3.conf
执行下列命令连接到mongodb数据库:
mongo --port=27001
如图所示:
依次执行下列内容进行初始化(分两步执行):
# 注意:需要将其中的192.166.66.195修改为实际部署的IP地址
config = {
_id : "mongodbSet",
members : [
{_id : 0, host : "192.166.66.195:27001" , priority : 2},
{_id : 1, host : "192.166.66.195:27002" },
{_id : 2, host : "192.166.66.195:27003" , arbiterOnly: true }
]
}
rs.initiate(config)
然后执行命令查看设置:
rs.status()
如图
创建管理员账号admin,普通账号omcUser和数据库meta_admin_config
依次执行下面命令创建管理员
管理员登录:
use admin
创建用户:
db.createUser(
{
user:"admin",
pwd:"admin",
roles:[{role:"userAdminAnyDatabase",db:"admin"},
{role:"clusterAdmin",db:"admin"}
]
}
);
用户授权:
db.auth("admin","admin");
创建 meta_admin_config 数据库,并创建用户omcUser,操作如下:
进入 meta_admin_config库:
use meta_admin_config;
创建用户:
db.createUser(
{
user:"omcUser",
pwd:"123456",
roles:[{role:"readWrite",db:"meta_admin_config"}]
}
);
授权:
db.auth("omcUser","123456");
退出:
exit;
依次执行下面命令停止服务:
mongod -f /etc/mongod.conf --shutdown
mongod -f /etc/mongod2.conf --shutdown
mongod -f /etc/mongod3.conf --shutdown
依次执行下面命令重新启动服务:
service mongod start
service mongod2 start
service mongod3 start
至此安装和配置完毕。
使用robo3t(下载地址:https://github.com/houwanle/blog-file/tree/master/csdn-blog/mongodb/%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B7%A5%E5%85%B7)远程连接,连接成功后,mongo安装完毕。如图所示:
连接成功,mongodb安装成功。