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

聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客
2018年9月10日 上午10:57 沙发
不错,很细
2018年9月18日 上午10:45 板凳
不错的文章
2018年9月20日 下午10:57 地板
文章不错非常喜欢
2018年9月25日 上午10:51 4楼
写的不错,谢谢分享
2018年10月2日 上午8:44 5楼
精益求精,继续加油!
2018年11月6日 上午8:07 6楼
朋友 交换链接吗
2018年11月9日 上午11:01 1层
@搬瓦工 加好告诉我下
2018年12月20日 下午12:49 7楼
学习了,半懂不懂中,有时间细看