Linux下MongoDB装置及副本集装备

最近开端触摸了MongoDB的装置装备,易布置、易运用,存储数据非常便利是它的特色。

 

0x00  副本集原理

MongDB副本集故障转移功能得益于它的推举机制。推举机制采用了Bully算法,能够很便利从分布式节点中选出主节点。

主要思维是集群的每个成员都能够声明它是主节点并通知其他节点。其他节点能够选择承受这个声称或是拒绝并进入主节点竞争。被其他一切节点承受的节点才能成为主节点。 MongoDB副本集的成员数量最好为奇数,集群最多答应12个副本集节点,其间最多7个节点参与推举。

 

0x01  源码下载解压

$ cd /usr/local/src/
$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.0.tgz
$ tar xvzf mongodb-linux-x86_64-rhel70-4.0.0.tgz
$ mv /usr/local/src/mongodb-linux-x86_64-rhel70-4.0.0 /cache1/mongodb
$ cd /cache1/mongodb
$ mkdir -p data/log && mkdir -p data/db
$ chown runner.runner /cache1/mongodb -R    ##运用非root账号,账号自己创建
$ chmod 760 /cache1/mongodb

 

0x02  修正装备文件

systemLog:
destination: file
path: \"/cache1/mongodb/data/log/mongodb.log\"  #依据实际情况修正
logAppend: true
storage:
journal:
enabled: true
dbPath: \"/cache1/mongodb/data/db\"  #依据实际情况修正
directoryPerDB: false
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 10
directoryForIndexes: false
journalCompressor: zlib
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
net:
bindIp: 192.168.10.1 #依据实际情况修正,4.0不装备默许绑定localhost,会导致无法访问
port: 27017 #27017为默许端口,主张修正
processManagement:
fork: true
replication:
replSetName: mongo #副本集称号,依据实际情况修正
security:
authorization: disabled

 

0x03  启动集群

在一切MongoDB机器都装备好后,启动集群

$ su - runner
$ /cache1/mongodb/bin/mongod -f /cache1/mongodb/mongodb.conf

 

0x04  装备副本集

登录其间一台MongoDB

$ su - runner
$ /cache1/mongodb/bin/mongo -host 192.168.10.1 -port 28017
> config={\"_id\": \"mongo\", \"members\": [{\"_id\":0, \"host\": \"192.168.10.1:27017\"},{\"_id\":1, \"host\": \"192.168.10.2:27017\"},{\"_id\":2, \"host\": \"192.168.10.3:27017\"}]}
> rs.initiate(config)
> rs.status() ##验证集群状况

其间mongo为装备文件中的replSetName,有多少台集群就增加多少个members

 

0x05  启用认证

1、生产秘钥

$ openssl rand -base64 756 > /cache1/mongodb/secret_key.crt
$ chmod 400 /cache1/mongodb/secret_key.crt
$ scp /cache1/mongodb/secret_key.crt root@xxxx:/cache1/mongodb/

2、增加用户

$ su - runner
$ /cache1/mongodb/bin/mongo -host 192.168.10.1 -port 27017
> use admin
> db.createUser({user:\"aaa\",pwd:\"aaaaaaaa\",roles:[{role:\"root\",db:\"admin\"}]})

3、修正装备

修正装备mongodb.conf,增加如下内容

security:
keyFile: /cache1/mongodb/secret_key.crt
authorization: enabled

4、重启MongoDB

$ killall mongod
$ /cache1/mongodb/bin/mongod -f /cache1/mongodb/mongodb.conf

5、集群验证

use admin
db.auth(\"账号\",\"暗码\")
> rs.status()

 

0x06 增加副本集

增加副本集,在需要增加的主机装备好mongodb,并启动
在PRIMARY节点操作
>use admin
>db.auth(\"账号\",\"暗码\")
>rs.add(\"192.168.10.4:27017\")
>rs.status() 查看集群