mongodb集群部署 【 三台 】 指导手册****
一、三种模式 主从模式、【Replica set副本集模式】 sharding分片模式 主从使用少,分片最完备但是配置维护复杂。 二、【Replica set副本模式】 优点:数据冗余 可供恢复。读写分离。读分流到副本,减轻主节点读压力
1、主节点(Primary) 接收所有写请求。然后把修改同步到所有Secondary。只有一个主节点。当主节点挂掉 2、副本节点(Secondary) 3、仲裁者(Arbiter) 4、选主过程
## 一、**root权限登陆之后创建wdxf用户和用户组** **【** **三台服务器都要操作** **】******
#增加用户组
groupadd wdxf
#添加用户
useradd -g wdxf wdxf
#设置用户密码 输入两遍密码
passwd wdxf
#验证创建是否成功
cd /home
ls
![]()
看到wdxf文件夹说明创建用户成功。
## 二、**文件上传** **【** **三台服务器都要执行** **】******
3.1、打开![]() 输入步骤二创建的用户名和密码
![]()
| | |
| - | ----- |
| | ![]() |
3.2、选择上传
3.3、选择本地文件mongodb-linux-x86_64-rhel70-5.0.4.tgz
| | |
| - | ----- |
| | ![]() |
上传后如图:
3.4、解压安装包
tar -xzvf mongodb-linux-x86_64-rhel70-5.0.4.tgz
3.5、重命名
mv mongodb-linux-x86_64-rhel70-5.0.4 ~/mongodb
##查看如下图
ls
![]()
注意:三台服务器都上传之后才能执行第四步。
## 三、**主节点文件夹创建以及配置** **【** **在主节点服务器本文是** **xx.xx.47.103** **】******
4.1、文件夹创建
cd ~/mongodb
mkdir -p data/master
mkdir -p etc logs/master pid/master
![]()
4.2主节点配置文件创建。
cd ~/mongodb/etc
#新建配置文件mongodb_master.conf
vim mongodb_master.conf
#编辑
i
#增加如下配置
#############主节点配置######
####mongodb_master.conf keyFile和auth 要在集群初始化后并且添加了验证用户后再启用
###存放数据目录
dbpath=/home/wdxf/mongodb/data/master
##日志数据目录
logpath=/home/wdxf/mongodb/logs/master/mongodb.log
###pid文件
pidfilepath=/home/wdxf/mongodb/pid/master/mongodb.pid
###节点之间验证文件 内容必须保持一致 权限600 仅副本集有效
#keyFile=/home/wdxf/mongodb/data/master/keyfile
##数据是否分目录存放
directoryperdb=true
logappend=true
#副本集名字
replSet=wdxfdb
# 允许所有IP连接
bind_ip=0.0.0.0
port=27017
#是否授权连接
#auth=false
#设置大小
oplogSize=100
# 后台运行
fork=true
#禁用数据文件预期、分配 影响性能
#moprealloc=true
#最大连接数 默认2000
#maxConns=4000
#退出编辑
:
#保存退出
wq!
![]()
## 四、**副本节点文件夹创建以及配置【副本节点服务器本文是** **xx.xx.47.104** **】******
5.1、文件夹创建
cd ~/mongodb
mkdir -p data/slave
mkdir -p etc logs/slave pid/slave
5.2主节点配置文件创建。
cd ~/mongodb/etc
#新建配置文件mongodb_slave.conf
vim mongodb_slave.conf
#编辑
i
#增加如下配置
#############副本节点配置######
####mongodb_master.conf keyFile和auth 要在集群初始化后并且添加了验证用户后再启用
###存放数据目录
dbpath=/home/wdxf/mongodb/data/slave
##日志数据目录
logpath=/home/wdxf/mongodb/logs/slave/mongodb.log
###pid文件
pidfilepath=/home/wdxf/mongodb/pid/slave/mongodb.pid
###节点之间验证文件 内容必须保持一致 权限600 仅副本集有效
#keyFile=/home/wdxf/mongodb/data/slave/keyfile
##数据是否分目录存放
directoryperdb=true
logappend=true
#副本集名字
replSet=wdxfdb
# 允许所有IP连接
bind_ip=0.0.0.0
port=27017
#是否授权连接
#auth=false
#设置大小
oplogSize=100
# 后台运行
fork=true
#禁用数据文件预期、分配 影响性能
#moprealloc=true
#最大连接数 默认2000
#maxConns=4000
#退出编辑
:
#保存退出
wq!![]()
## 五、**仲裁者节点文件夹创建以及配置【在主节点服务器本文是** **xx.xx.47.105** **】******
6.1、文件夹创建
cd ~/mongodb
mkdir -p data/arbiter
mkdir -p etc logs/arbiterpid/arbiter
6.2主节点配置文件创建。
cd ~/mongodb/etc
#新建配置文件mongodb_arbiter.conf
vim mongodb_arbiter.conf
#编辑
i
#增加如下配置
#############仲裁者节点配置######
####mongodb_arbiter.conf keyFile和auth 要在集群初始化后并且添加了验证用户后再启用
###存放数据目录
dbpath=/home/wdxf/mongodb/data/arbiter
##日志数据目录
logpath=/home/wdxf/mongodb/logs/arbiter/mongodb.log
###pid文件
pidfilepath=/home/wdxf/mongodb/pid/arbiter/mongodb.pid
###节点之间验证文件 内容必须保持一致 权限600 仅副本集有效
#keyFile=/home/wdxf/mongodb/data/arbiter/keyfile
##数据是否分目录存放
directoryperdb=true
logappend=true
#副本集名字
replSet=wdxfdb
# 允许所有IP连接
bind_ip=0.0.0.0
port=27017
#是否授权连接
#auth=false
#设置大小
oplogSize=100
# 后台运行
fork=true
#禁用数据文件预期、分配 影响性能
#moprealloc=true
#最大连接数 默认2000
#maxConns=4000
#退出编辑 输入:
:
#保存退出
wq!
![]()
## 六、**启动******
7.1、启动主节点
/home/wdxf/mongodb/bin/mongod -f /home/wdxf/mongodb/etc/mongodb_master.conf
![]()
7.2、启动副本节点
/home/wdxf/mongodb/bin/mongod -f /home/wdxf/mongodb/etc/mongodb_slave.conf
![]()
7.3、启动仲裁者节点
/home/wdxf/mongodb/bin/mongod -f /home/wdxf/mongodb/etc/mongodb_arbiter.conf
![]()
## 七、**配置集群******
8.1、在【主节点服务器】链接mongo
cd /home/wdxf/mongodb/bin
./mongo
![]()
#配置集群
cfg={_id:"wdxfdb",members:[{_id:0,host:'xx.xx.47.103:27017',priority:2}, {_id:1,host:'xx.xx.47.103:27017',priority:1}, {_id:2,host:'xx.xx.47.103:27017',arbiterOnly:true}] };
![]()
配置成功
![]()
rs.initiate(cfg);
![]()
#查看状态
rs.status();
正常可以返回集群信息。
![]()
## 八、**创建** **用户并且配置集群权限******
9.1、在主节点链接mongo
cd /home/wdxf/mongodb/bin
./mongo
#选择admin库
use admin
9.2、创建用户、设置密码&授权
db.createUser({user:"wdxf",pwd:"wdxf",roles:[ { role: "dbOwner", db: "admin" },{ "role": "clusterAdmin", "db": "admin" },{ "role": "userAdminAnyDatabase", "db": "admin" },{ "role": "dbAdminAnyDatabase", "db": "admin" },{ role: "root", db: "admin" } ]});
![]()
9.3、//验证创建用户密码是否成功 返回1,认证成功。
#在主节点链接mongo
cd /home/wdxf/mongodb/bin
./mongo
use admin
db.auth("wdxf","wdxf")
![]()
## 九、**停止** **mongodb** **集群******
10.1、先停止仲裁者
ps -ef |grep mongo
kill -9 pid
![]()
10.2、依次停止主节点和副本节点
ps -ef |grep mongo
kill -9 pid
![]()
![]()
## 十、**生成keyfile** ******密钥文件******
11.1、在主节点所在服务器进入mongodb根目录
cd ~/mongodb
11.2、执行命令生成到指定目录
openssl rand -base64 90 -out /home/wdxf/mongodb/data/master/keyfile
![]()
![]()
11.3、将生成的keyfile文件拷贝到其余2个节点
使用![]()download到本地之后上传到副本节点和仲裁者节点。
副本节点放在/home/wdxf/mongodb/data/slave目录下
仲裁改者节点放在/home/wdxf/mongodb/data/arbiter目录下
11.4 赋权 三个节点都需要赋权
11.4.1主节点
cd /home/wdxf/mongodb/data/master
chmod 600 ./keyfile
![]()
11.4.2副本节点
cd /home/wdxf/mongodb/data/slave
chmod 600 ./keyfile
![]()
11.4.3仲裁者节点
cd /home/wdxf/mongodb/data/arbiter
chmod 600 ./keyfile
![]()
## 十一、**修改配置** **文件** **开放keyfile及授权配置** **。******
12.1、主节点配置修改
命令如下:
vim ~/mongodb/etc/mongodb_master.conf
![]()
#进入编辑
i
#将#keyfile=/home/wdxf/mongodb/data/master/keyfile前面的#去掉改为
keyfile=/home/wdxf/mongodb/data/master/keyfile
#将#auth=false改为
auth=true
#退出编辑
:
#保存修改并且退出
wq!
##改完如下:
![]()
12.2、副本节点配置修改
命令如下:
vim ~/mongodb/etc/mongodb_slave.conf
![]()
#进入编辑
i
#将#keyfile=/home/wdxf/mongodb/data/slave/keyfile前面的#去掉改为
keyfile=/home/wdxf/mongodb/data/slave/keyfile
#将#auth=false改为
auth=true
#退出编辑
:
#保存修改并且退出
wq!
##改完如下:
![]()
12.3、仲裁点配置修改
命令如下:
vim ~/mongodb/etc/mongodb_arbiter.conf
![]()
#进入编辑
i
#将#keyfile=/home/wdxf/mongodb/data/arbiter/keyfile前面的#去掉改为
keyfile=/home/wdxf/mongodb/data/arbiter/keyfile
#将#auth=false改为
auth=true
#退出编辑
:
#保存修改并且退出
wq!
##改完如下:
![]()
## 十二、**启动集群** **。******
13.1、启动主节点
/home/wdxf/mongodb/bin/mongod -f /home/wdxf/mongodb/etc/mongodb_master.conf --auth
![]()
13.2、启动副本节点
/home/wdxf/mongodb/bin/mongod -f /home/wdxf/mongodb/etc/mongodb_slave.conf --auth
![]()
13.3、启动仲裁者节点
/home/wdxf/mongodb/bin/mongod -f /home/wdxf/mongodb/etc/mongodb_arbiter.conf --auth
![]()
## 十三、**命令** **验证** **插入数据******
14.1、主节点
cd ~/mongodb/bin
./mongo --host xx.xx.47.103 --port 27017 -u “wdxf” -p “wdxf”
##成功如下图
![]()
#故意输错密码失败如下图
![]()
##验证授权和测试插入数据如下:
![]()
## 十四、**项目** **配置******
###replicaSet=wdxfdb 和配置文件和cfg保持一致
uri: mongodb://wdxf:wdxf@xx.xx.47.103:27017,xx.xx.47.104:27017,xx.xx.47.104:27017/admin?replicaSet=wdxfdb&readPreference=secondaryPreferred&connectTimeoutMS=300000