mongodb副本集部署

225 阅读6分钟

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