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 [email protected]:/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() 查看集群

weinxin
聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:7   其中:访客  7   博主  0

  1. avatar 暮云 4

    不错,很细

  2. avatar 小云 4

    不错的文章

  3. avatar 头条 0

    文章不错非常喜欢

  4. avatar 广州网站建设 4

    写的不错,谢谢分享

  5. avatar 博客大全 0

    精益求精,继续加油!

  6. avatar 搬瓦工 0

    朋友 交换链接吗

    • avatar yangfannie 5

      @搬瓦工 加好告诉我下