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