单台CentOS 7上安装MongoDB集群

本文详细介绍了在CentOS 7环境下搭建MongoDB集群的全过程,包括软件包检查与安装、防火墙配置、服务文件修改、集群认证设置及用户权限管理,最后通过robo3t客户端验证连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

检查软件包

在开始安装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安装成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值