mongodb replica set集群部署

mongodb replica set集群部署

简介:

mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica set应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。本文我们来看下Replica Set模式的搭建方法。

Mongodb的Replica Set即副本集方式主要有两个目的,一个是数据冗余做故障恢复使用,当发生硬件故障或者其它原因造成的宕机时,可以使用副本进行恢复。另一个是做读写分离,读的请求分流到副本上,减轻主(Primary)的读压力。

Replica Set是mongod的实例集合,它们有着同样的数据内容。包含三类角色:
(1)主节点(Primary)
接收所有的写请求,然后把修改同步到所有Secondary。一个Replica Set只能有一个Primary节点,当Primary挂掉后,其他Secondary或者Arbiter节点会重新选举出来一个主节点。默认读请求也是发到Primary节点处理的,需要转发到Secondary需要客户端修改一下连接配置。

(2)副本节点(Secondary)
与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。

(3)仲裁者(Arbiter)
不保有数据,不参与选主,只进行选主投票。使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。
注意,一个自动failover的Replica Set节点数必须为奇数,目的是选主投票的时候要有一个大多数才能进行选主决策。

(4)选主过程

其中Secondary宕机,不受影响,若Primary宕机,会进行重新选主:

部署:

前言:本次安装使用admin用户,三台机器部署(192.168.75.129,192.168.75.130,192.168.75.131)

1、首先,安装包上传到每台机器机器/home/admin目录,解压缩文件(下载地址:https://www.mongodb.com/download-center/community/releases/archive

tar -xzvf /home/admin/mongodb-linux-x86_64-4.0.3.tgz

2、在3台机器上初始化⽇志和数据⽬录

sudo mkdir -p /data/db
sudo mkdir -p /data/log/mongo/
sudo chown admin:admin /data -R

3、在随便一个节点⽣成⼀个添加keyFile⽂件并拷贝到其他节点----->⽤于认证使⽤,所有节点须保持一致

openssl rand -base64 512 > /home/admin/keyfile
chmod 600 /home/admin/keyfile

4、创建mongod配置文件vi /home/admin/mongodb-linux-x86_64-4.0.3/mongodb.conf

# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
 destination: file
 logAppend: true
 path: /data/log/mongo/mongod.log # ⽇志存放⽬录 需提前创建好
# Where and how to store data.
storage:
 dbPath: /data/db # 数据存储⽬录 需提前创建好
 journal:
  enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
# network interfaces
net:
 port: 27017
 bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
# keyFile: /opt/mongodb/keyfile 
# 需提前创建好在3台机器上启动mongodb登录mongo配置集群信息
#authorization: enabled
#operationProfiling:
replication:
 replSetName: pvtcim
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:

5、每台机器上启动mongodb

/home/admin/mongodb-linux-x86_64-4.0.3/bin/mongod --config /home/admin/mongodb-linux-x86_64-4.0.3/mongodb.conf --fork

6、登入随便一个mongo数据库
切换到admin库

use admin

初始化集群

rs.initiate(
 {
"_id": "pvtcim", // replicaSet name
"members": [
 {"_id": 0, "host": "192.168.75.129:27017"}, // 将localhost替换成机器的hostname
 {"_id": 1, "host": "192.168.75.130:27017"},
 {"_id": 2, "host": "192.168.75.131:27017",arbiterOnly:true}
 ]
 }
)

创建用户

db.createUser({user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}]})
db.createUser({user:"oss", pwd:"oss123", roles:[{role:"readWrite",db:"pvtcim"}]})

停掉所有mongod进程

kill -2 `ps -ef | grep mongo| grep -v grep |awk '{ print $2 }'`

修改mongo config⽂件,开启认证

security:
 keyFile: /home/admin/keyfile # 需提前创建好
  authorization: enabled

重启集群

/home/admin/mongodb-linux-x86_64-4.0.3/bin/mongod --config /home/admin/mongodb-linux-x86_64-4.0.3/mongodb.conf --auth --fork

连接数据库:

/home/admin/mongodb-linux-x86_64-4.0.3/bin/mongo mongodb://oss:oss123@192.168.75.129,192.168.75.130,192.168.75.131:27017/pvtcim?replicaSet=pvtcim
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值