搭建步骤

  • 1.准备三台虚拟机服务器
  • 2.添加replSet配置
  • 修改`mongodb.conf`文件
  • 然后分别启动三台服务器
  • 3.初始化复制集
  • 4.查看集群状态
  • 5.测试
  • 6.关闭数据库
  • 7. 主复制集添加仲裁者(arbiter)



1.准备三台虚拟机服务器

各自安装好mongoDB
—>技巧:可先准备配置好一台,进行克隆

注:为了保证复制集中三个服务器之间正常连接,请保证三个服务器的防火墙都已关闭

192.168.130:27017 
192.168.131:27017 
192.168.132:27017

为操作方便,可更改主机名和ip地址

#更改主机名
vim /etc/sysconfig/network
#更改ip
setup

2.添加replSet配置

修改mongodb.conf文件

添加replSet配置(三台都需要修改成同一个名称)

#复制集名称 replSet=rep1

此时三台mongodb的mongodb.conf的配置文件如下所示:

#数据库路径
dbpath = /home/admin/myapps/mongodb/mongodb_data
#日志路径
logpath = /home/admin/myapps/mongodb/logs/mongodb.log
#端口号
port = 27017
fork = true
#修改:保证外机可以访问
bind_ip=0.0.0.0
#复制集名称
replSet=rep1
然后分别启动三台服务器
[root@xj0927 bin]# ./mongod -f mongodb.conf 
[root@xj0928 bin]# ./mongod -f mongodb.conf 
[root@xj0929 bin]# ./mongod -f mongodb.conf

3.初始化复制集

登录任意一台执行初始化操作:

rs.initiate({_id:'rep1',members:[{_id:1,host:'192.168.77.130:27017'}, {_id:2,host:'192.168.77.131:27017'},{_id:3,host:'192.168.77.132:27017'}]})

说明: _id 指复制集名称,members指复制集服务器列表,数组中的_id是服务器唯一的id,host服务器主机ip

4.查看集群状态

rs.status()

5.测试

#添加数据
db.users.insert({"name":"lisi","age":11}) 

#查询数据 
db.users.find() 

#切换到从数据库查询数据
如果不允许查询,是因为默认情况下从数据库是不允许读写操作的,需要设置。 
>rs.slaveOK() 执行该命令后可以查询数据

6.关闭数据库

先切换到admin数据库: use admin

#关闭主数据库,注意从数据库的变化 
>db.shutdownServer()

7. 主复制集添加仲裁者(arbiter)

现在我们的环境是一主两从,仲裁者对偶数集群有效。需要停止一个从机,在主服务器中运行下面命令

#删除从节点
rs.remove("ip:端口号")

在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即

#添加仲裁者节点
rs.addArb("ip:端口号")

rs.addArb("192.168.77.132:27017")

此时,查看集群状态:一主一从一仲裁

mongodb搭建分布式集群 mongodb集群搭建详细_mongodb搭建分布式集群

mongodb搭建分布式集群 mongodb集群搭建详细_mongodb搭建分布式集群_02

mongodb搭建分布式集群 mongodb集群搭建详细_服务器_03