Centos7上安装分布式集群mongodb的方法

mongodb的集群搭建方式主要有三种:
(1) Replica set模式,
(2) sharding模式,
(3)主从模式,

三种模式各有优劣,适用于不同的场合,
属Replica set应用最为广泛,
主从模式现在用的较少官方不推荐用,
sharding模式最为完备,但配置维护较为复杂。
本文我们来看下Replica Set模式的搭建方法。
Replica Set是mongod的实例集合,它们有着同样的数据内容。包含三类角色:
(1)主节点(Primary) 接收所有的写请求,只能有一个Primary节点
(2)副本节点
(3)仲裁者(Arbiter) 不保有数据,不参与选主,只进行选主投票。

(1)下载mongodb安装程序
下载地址:https://www.mongodb.com/download-center/community 我下载的这个版本:mongodb-linux-x86_64-4.0.9.tgz
搭建集群
主机 用途
192.168.30.113 node113 主节点+仲裁点(master+arbiter)
192.168.30.112 node112 备节点(slaver)
192.168.30.111 node111 备节点(slaver)

mongodb-linux-x86_64-4.0.9.tgz拷贝到/usr/cwgis/app/目录下
安装程序目录结构如下:
/usr/cwgis/app/mongodb/
bin
log
conf
keyfile

创建数据目录结构如下:
/usr/cwgis/data/mongodb/
master
slave
arbiter

(2)解压mongodb

cd  /usr/cwgis/app/
tar -zxvf mongodb-linux-x86_64-4.0.9.tgz
mv mongodb-linux-x86_64-4.0.9   mongodb

生成密钥文件mongo.key
mongo.key 采用随机算法生成,用作节点内部通讯的密钥文件

cd /usr/cwgis/app/mongodb
mkdir keyfile
openssl rand -base64 756 > mongo.key
chmod 400 mongo.key

(3)创建配置文件
/usr/cwgis/app/mongodb/conf/
master.conf

#master.conf
dbpath=/usr/cwgis/data/mongodb/master
logpath=/usr/cwgis/app/mongodb/log/master.log
pidfilepath=/usr/cwgis/app/mongodb/master.pid
#keyFile=/usr/cwgis/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.30.113
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

slave.conf

#slave.conf
dbpath=/usr/cwgis/data/mongodb/slave
logpath=/usr/cwgis/app/mongodb/log/slave.log
pidfilepath=/usr/cwgis/app/mongodb/slave.pid
#keyFile=/usr/cwgis/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.30.112
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

arbiter.conf

#arbiter.conf
dbpath=/usr/cwgis/data/mongodb/arbiter
logpath=/usr/cwgis/app/mongodb/log/arbiter.log
pidfilepath=/usr/cwgis/app/mongodb/arbiter.pid
#keyFile=/usr/cwgis/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.30.113
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

分发安装目录和数据目录到机群中(这里是node111,node112,node113)
cc.sh /usr/cwgis/app/mongodb /usr/cwgis/app/ mongodb
cc.sh /usr/cwgis/data/mongodb /usr/cwgis/data/ mongodb
(4) 启动mongodb

ssh node113
cd /usr/cwgis/app/mongodb/bin
./mongod -f /usr/cwgis/app/mongodb/conf/master.conf
./mongod -f /usr/cwgis/app/mongodb/conf/arbiter.conf
ssh node112
./mongod -f /usr/cwgis/app/mongodb/conf/slave.conf

.在浏览器中输入网址:http://192.168.30.113:27017/ 。
如果服务启动成功会看到以下一段话:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
(5)在主节点进行配置
连接mongoDB

ssh node113
cd /usr/cwgis/app/mongodb/bin
./mongo 192.168.30.113

配置集群(在主节点node113上进行配置)

./mongo 192.168.30.113
> use admin
switched to db admin
>
cfg={ _id:"testdb", members:[ {_id:0,host:'192.168.30.113:27017',priority:2}, {_id:1,host:'192.168.30.112:27017',priority:1}, {_id:2,host:'192.168.30.113:27019',arbiterOnly:true}] };
rs.initiate(cfg)
testdb:PRIMARY> rs.status()
testdb:PRIMARY>exit
bye

cfg配置集群参数说明:

cfg名字可选,只要跟mongodb参数不冲突,
_id为Replica Set名字,members里面的优先级priority值高的为主节点,
对于仲裁点一定要加上arbiterOnly:true,否则主备模式不生效
priority表示优先级别,数值越大,表示是主节点
arbiterOnly:true表示仲裁节点
使集群cfg配置生效rs.initiate(cfg)
查看是否生效rs.status()
“stateStr” : "PRIMARY"表示主节点, “stateStr” : "SECONDARY"表示从节点, “stateStr” : “ARBITER”,表示仲裁节点
添加节点命令
添加secondary:rs.add({host: "192.168.30.111:27017", priority: 1 })
添加仲裁点:rs.addArb("192.168.30.113:27019")
移除节点:rs.remove({host: "192.168.30.111:27017"})

(6)命令行执行操作
由于它是一个JavaScript shell,
您可以运行一些简单的算术运算和
插入一些简单的数据,并对插入的数据进行检索

testdb:PRIMARY> 2+2
4
testdb:PRIMARY> 3+6
9
testdb:PRIMARY> db.testdb.insert({x:10})
WriteResult({ "nInserted" : 1 })
testdb:PRIMARY> db.testdb.find()
{ "_id" : ObjectId("5ced16441832945466d10db4"), "x" : 10 }
testdb:PRIMARY>
testdb:PRIMARY> db.version()
4.0.9
testdb:PRIMARY> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB

备注:
keyFile和auth选项要在集群配置好后,并且添加了验证用户后在启用
参数说明:
dbpath:存放数据目录
logpath:日志数据目录
pidfilepath:pid文件
keyFile:节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
directoryperdb:数据库是否分目录存放
logappend:日志追加方式存放
replSet:Replica Set的名字
bind_ip:mongodb绑定的ip地址
port:端口
auth:是否开启验证
oplogSize:设置oplog的大小(MB)
fork:守护进程运行,创建进程
moprealloc:是否禁用数据文件预分配(往往影响性能)
maxConns:最大连接数,默认2000

robomongo客户端工具windows版本免费版 Robo 3T 1.3版
https://robomongo.org/download

mongodb docker 集群搭建 mongodb集群搭建的三种方式_数据目录

mongodb sharding模式分片分布式集群安装方法

—the—end—