最近开始接触了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() 查看集群