MongoDB-副本集PSA架构搭建配置手册
1 安装配置
------------------------------------------------------------------------------------
机器准备:
• 系统:Red Hat Enterprise Linux Server release 7.3 (Maipo)
• MongoDB版本:mongodb-linux-x86_64-rhel70-3.4.16
• 下载地址: http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.16.tgz
• 副本集模式:PSA
• 设备3台:
192.168.137.91(27020端口, primary)
192.168.137.92(27020端口, secondary)
192.168.137.93(27020端口, arbiter)
1.1 安装前准备
在三台机器上进行下面操作:
1.将安装包mongodb-linux-x86_64-rhel70-3.4.16.tgz解压到/usr/local/mongodb
2.在/usr/local/mongodb下创建conf和logs文件夹,用来稍后放置MongoDB的配置文件和运行日志
3.执行mkdir /data 创建数据目录
4.将/usr/local/mongodb/bin加入到环境变量.bash_profile方便日后使用
1.2 主节点安装
1) 在/usr/local/mongodb/conf新增下面配置文件mongodb.conf
systemLog: |
配置解释:
2)启动MongoDB服务
linux shell > mongod -f /usr/local/mongodb/conf/mongodb.conf &
3)连接MongoDB,必须指定端口号,因为默认的端口为27017
linux shell > mongo 127.0.0.1:27020
4)
在MongoDB shell创建管理员帐号
use admin; |
5)关闭MongoDB服务
mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown
6)生成keyfile文件
openssl rand -base64 741 > /usr/local/mongodb/mongodb.keyfile
chmod 600 mongodb.keyfile #权限必须为600
7)在MongoDB的配置文件mongodb.conf新增配置项
security: |
配置解释:
1.3 配置从节点、仲裁节点
1)将主节点mongodb.conf和mongodb.keyfile拷贝到从节点和仲裁节点的相应目录。
2)需修改仲裁节点mongod.conf。
3)启动所有节点MongoDB
1.4 配置主节点、从节点、仲裁节点
1) 在主节点登录MongoDB
mongo 127.0.0.1:27020/admin -uadmin -p
2)在主节点MongoDB shell执行下面命令,初始化副本集配置。确认返回的是{ “ok” : 1 }
use admin;
config={_id:"mongodb_set",members:[{_id:0,host:" 192.168.137.91:27020","priority":1}]};
rs.initiate(config);
3) 在主节点MongoDB shell执行下面命令,添加从节点
rs.add("192.168.137.92:27020");
4) 在主节点MongoDB shell执行下面命令,添加仲裁节点
rs.addArb("192.168.137.93:27020");
5) 在主节点执行rs.config();查看集群配置。
2 测试验证
2.1 插入数据测试
一、在主节点执行下面语句插入数据。
use test;
db.use.insert({username: "visionwang", age: 26})
二、在从节点依次执行下面三条语句测试验证。
rs.slaveOk(); #从节点默认不可读写,明确从节点参数,暂时设置为可读
show collections; #查看当前集合
use test #切换到test库
db.use.find(); #查看数据
三、在从节点尝试插入数据。因从节点是不能写的,所以会报no-master.
2.2 故障转移测试
一、强行停止主节点的MongoDB。
二、查看从节点和仲裁节点的日志。可以发现显示检测不到主节点的心跳
三、可以发现从节点的输入栏从SECONDARY变为PRIMARY
四、再次起来原本的主节点,发现会变成SECONDARY。