1、安装准备:
1.1 、系统为redhat7.0,MongoDB版本为3.6.3
MongoDB包下载地址:http://www.mongodb.org/downloads
mongodb-linux-x86_64-enterprise-rhel70-3.6.3
1.2补包
配置本地源:(系统光盘复制到/tools/rhel_dvd下)
[root@localhost ~]# vim /etc/yum.repos.d/rhel_dvd.repo
[rhel_dvd]
name=rhel_dvd
baseurl=file:///tools/rhel_dvd/
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# yum install cyrus-sasl-gssapi
[root@localhost yum.repos.d]# yum install net-snmp
1.3 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭SElinux 编辑配置文件
setenforce 0
[root@localhost yum.repos.d]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive #修改此参数
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2、安装MongoDB
1.1 上传mongodb包至linux服务器
具体放置到目录:/tools
1.2新建 /mongodb目录

新建数据文件存放目录与log存放目录/conf文件
[root@localhost /]# mkdir /mongodb/data
[root@localhost /]# mkdir /mongodb/logs
[root@localhost /]# mkdir /mongodb/conf

新建mongodb.log文件
[root@localhost logs]# touch mongodb.log
[root@localhost tools]# cp mongodb-linux-x86_64-enterprise-rhel70-3.6.3.tgz /mongodb/
[root@localhost mongodb]# cd /mongodb/
[root@localhost mongodb]# tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-3.6.3.tgz
[root@localhost mongodb-linux-x86_64-enterprise-rhel70-3.6.3]# mv * /mongodb/
配置环境变量
[root@localhost mongodb]# vim /etc/profile
在文件最后添加:
export MONGODB_HOME=/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
使配置生效:
source /etc/profile
配置mongodb.conf文件
[root@localhost conf]# vim /mongodb/conf/mongodb.conf
dbpath = /mongodb/data #数据文件存放目录
logpath = /mongodb/logs/mongodb.log #日志文件存放目录
port = 27017 #端口
fork = true #以守护程序的方式启用,即在后台运行
bind_ip=127.0.0.1,10.91.250.132 #局域远程访问本机IP
配置文件主要包括以下配置项:
dbpath = \ 指定数据的存放位置,必需项
logpath = \ 指定日志的存放位置
logappend = \ 日志以追加方式写入
pidfilepath = \ 存放启动mongod是分配的进程号
bind_ip = \ mongod监听的ip,可以不设置,不设置时,通过机器的ip访问
port = \监听的端口号,务必设置,默认的端口不安全
directoryperdb = \为每个数据库的数据分配一个存储目录,建议设置,数据更好管理
journal=\ 启用恢复日志,如果mongod意外退出,下一次启动时会根据恢复日志进行恢复,但恢复日志所占空间比较大。建议设置true
keyFile = \指定使用的key的路径,集群中的所有节点都要使用相同的key才能相互连接。(在集群搭建完成之前,不应当使用keyFile,否则在部署副本集和分片时会出现没有权限操作的情况)
auth = \ 是否使用授权认证机制,集群使用时,应当使用auth=true,但在集群部署时不应该使用auth=true
noprealloc = \ 是否预分配空间,预分配空间比较占空间;不预分配空间可能对性能有影响。
replSet = \节点所属副本集的名称
fork 务必将fork选项设置为true,否则当启动节点的终端意外退出时,节点的运行进程会被杀掉
启动mongoDB
[root@localhost conf]# mongod --config /mongodb/conf/mongodb.conf
MongoDB设置为系统服务
[root@localhost /]# vim /etc/rc.d/init.d/mongod
ulimit -SHn 655350
#!/bin/sh
## chkconfig: - 64 36
## description:mongod
case $1 in
start)
mongodb/bin/mongod --config /mongodb/conf/mongodb.conf
;;
stop)
mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
;;
status)
mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
;;
esac
添加脚本执行权限:
[root@localhost /]# chmod +x /etc/rc.d/init.d/mongod
二、redhat7.0 中MongoDB3.6.3 集群搭建
1、以上为模板建三台mongoDB主机2、三台机器IP分别是:10.91.250.141、10.91.250.142、10.91.250.143
3、编辑/mongodb/conf/mongodb.conf,加各节点IP
bind_ip=127.0.0.1,10.91.250.141 #节点本机IP
4、分别在三台机器上启动mongodb
其中–replSet表示副本集群参数 ,mongoTest是副本集名称,这里的名字可以任意取,另外两台机也要和这个一样
mongod -f /mongodb/conf/mongodb.conf --replSet repset
如果启动成功会看到类似下面的提示
[root@localhost ~]# mongod -f /mongodb/conf/mongodb.conf --replSet mongotest
about to fork child process, waiting until server is ready for connections.
forked process: 2641
child process started successfully, parent exiting
三、配置mongodb副本集
1、初始化副本集
进入其中一台机器的mongo shell操作
[root@localhost ~]# mongo -port 27017
2、使用admin库
MongoDB Enterprise > use admin
switched to db admin
3、mongo副本配置
MongoDB Enterprise repset:PRIMARY> config={_id:"repset",members:[{_id:0,host:"10.91.250.141:27017"},{_id:1,host:"10.91.250.142:27017"},{_id:2,host:"10.91.250.143:27017"}]}

MongoDB Enterprise > rs.initiate(config)
上图表示初始化完毕
4、查看replica sets状态
MongoDB Enterprise repset:OTHER> rs.status()
{
"set" : "repset",
"date" : ISODate("2018-04-19T00:50:57.540Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "10.91.250.141:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 802,
"optime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-04-19T00:50:55Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1524099024, 1),
"electionDate" : ISODate("2018-04-19T00:50:24Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "10.91.250.142:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 44,
"optime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-04-19T00:50:55Z"),
"optimeDurableDate" : ISODate("2018-04-19T00:50:55Z"),
"lastHeartbeat" : ISODate("2018-04-19T00:50:56.062Z"),
"lastHeartbeatRecv" : ISODate("2018-04-19T00:50:56.790Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "10.91.250.141:27017",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "10.91.250.143:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 44,
"optime" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1524099055, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-04-19T00:50:55Z"),
"optimeDurableDate" : ISODate("2018-04-19T00:50:55Z"),
"lastHeartbeat" : ISODate("2018-04-19T00:50:56.060Z"),
"lastHeartbeatRecv" : ISODate("2018-04-19T00:50:56.789Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "10.91.250.141:27017",
"configVersion" : 1
}
],
"ok" : 1,
"operationTime" : Timestamp(1524099055, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1524099055, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
5、验证replica sets 数据一致性

在主共同点增加一个库,新建一条数据


刷新后节点二和三数据与节点一同步。

本文介绍在 RedHat 7.0 系统上安装 MongoDB 3.6.3 的步骤,并详细阐述如何搭建三节点 MongoDB 集群,包括配置副本集及验证数据一致性。

1823

被折叠的 条评论
为什么被折叠?



