环境信息
服务器列表 | Value |
---|---|
172.21.42.180:27017 | arbiter |
172.21.42.181:27017 | master |
172.21.42.246:27017 | slave |
版本信息
MongoDB 3.2.22
集群部署
下载安装包
需要下载以下三个rpm:
mongodb-org-server: 其中包含了守护进程、关联配置和初始化脚本
mongodb-org-mongos: 包含了mongoDB的守护进程
mongodb-org-shell: 主要是和mongoDB交互的接口
单机安装
//创建目录存放rpm包,上传至该目录
mkdir -p /apprun/mongo
//目录文件内容
ls
//openssl098e-0.9.8e-29.el7.centos.3.x86_64.rpm
//mongodb-org-mongos-3.2.22-1.el5.x86_64.rpm
//mongodb-org-server-3.2.22-1.el5.x86_64.rpm
//mongodb-org-shell-3.2.22-1.el5.x86_64.rpm
安装依赖
sudo rpm -ivh openssl098e-0.9.8e-29.el7.centos.3.x86_64.rpm
安装MongoDB
sudo rpm -ivh --replacepkgs mongodb-org-mongos-3.2.22-1.el5.x86_64.rpm
sudo rpm -ivh --replacepkgs mongodb-org-shell-3.2.22-1.el5.x86_64.rpm
sudo rpm -ivh --replacepkgs mongodb-org-server-3.2.22-1.el5.x86_64.rpm
//启动MongoDB
sudo systemctl start mongod
//查看状态
sudo systemctl status mongod
//连接测试
mongo
配置集群
配置修改
//默认路径
sudo vim /etc/mongod.conf
//修改配置
bindIp: 0.0.0.0
//末尾追加如下配置
replication:
replSetName: xjz
oplogSizeMB: 512
//启动各个节点Mongo服务
sudo systemctl start mongod
//添加副本配置
cfg = { _id: "uis", members: [ { _id: 0, host: "172.21.42.181:27017",priority: 10, votes: 1 }, { _id: 1, host: "172.21.42.180:27017", priority: 1, votes: 1}, { _id: 2, host: "172.21.42.246:27017", priority: 1, votes: 1 ,arbiterOnly:true} ] };
//初始化副本配置
rs.initiate(cfg);
创建用户
//创建root用户
use admin
db.createUser({user:"username",pwd:"password",roles:[{ role:"root",db:"admin"}]});
//创建应用程序用户
use xjz
db.createUser({user:"username",pwd:"password",roles:[{role:"readWrite",db:"xjz"}]});
开启认证
//先停止其他节点,再停止主节点。三台分别执行如下脚本
mongo
db.shutdownServer()
//创建keyfile验证文件
sudo openssl rand -base64 756 > /apprun/mongo/keyfile
//如没有权限执行以下操作 (400权限不能多赋)
sudo chmod 400 /apprun/mongo/keyfile
sudo chown apprun:apprun /apprun/mongo/keyfile
//拷贝至其他节点
scp ./keyfile root@172.21.42.180:/apprun/mongo
scp ./keyfile root@172.21.42.246:/apprun/mongo
//修改配置
vim /etc/mongod.conf
security:
keyFile: /apprun/mongo/keyfile
authorization: enabled
//先启动主节点,再启动其他节点。三台分别执行如下脚本
sudo systemctl start mongod
或
sudo -u mongod /usr/bin/mongod -f /etc/mongod.conf
验证
如下操作失败,会提示需要认证才能执行
mongo
use admin
rs.status()