mongodb需要配置仲裁节点
2018-01-25 14:16
218 查看
记录一下,MongoDB的角色创建及配置,以便以后使用
经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据的仲裁节点
Replica Set,中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的。其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致
Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。
默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read
Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。
仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。我开始也不相信必须要有仲裁节点,但是自己也试过没仲裁节点的话,主节点挂了备节点还是备节点,所以咱们还是需要它的。
介绍完了集群方案,那么现在就开始搭建了。
1、准备配置文件
红色标示出副本集的名称,副本集以此名称来识别是否属于同一个集群中
2、启动准备好的一台Mongodb数据库
3、连接到Mongo的admin库
4、增加用户
5、生成keyFile文件
在服务器上执行
将keyFile配置到Mongo配置文件,同时开启验证
没有这个文件的机器就无法加入副本集,开启了keyFile,隐含就开启了auth,这个时候连接副本集就需要进行认证了
6、重启Mongo服务
7、拷贝到其他服务器,修改对应得目录
8、添加副本集配置
cfg:变量名,任意起
_id:”matchData1” 配置文件中配置的副本集名称
host:Mongodb的ip+端口
priority:优先级,数字越大优先级越高(0-100),优先级最高的会是初始的主节点,显示为PRIMARY。如果不想让某些成员在故障切换时成为primary,则将它们的优先级设为0(为0永不会成为主节点)
当副本集切换失败时,可用如下代码重新配置:
9、副本集状态
10、维护
前提是这个ip:port必须是使用了同一个relpSet名称的mongodb实例即可
添加副本,在登录到主节点下输入
删除副本
新增仲裁节点
经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据的仲裁节点
简介
Replica Set,中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的。其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。
默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read
Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。
仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。我开始也不相信必须要有仲裁节点,但是自己也试过没仲裁节点的话,主节点挂了备节点还是备节点,所以咱们还是需要它的。
介绍完了集群方案,那么现在就开始搭建了。
副本集搭建
1、准备配置文件# 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: /home/dd/mongodb/logs/mongod.log #日志文件存放目录 # Where and how to store data. storage: dbPath: /home/dd/mongodb/db #数据文件存放目录 journal: enabled: true # engine: # mmapv1: # wiredTiger: # how the process runs processManagement: fork: true #以守护程序的方式启用,即在后台运行 pidFilePath: /home/dd/mongodb/mongod.pid # location of pidfile # network interfaces net: port: 27017 #端口 bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces. #security: #authorization: enabled #operationProfiling: replication: replSetName: matchData1 #sharding: ## Enterprise-Only Options #auditLog: #snmp:
红色标示出副本集的名称,副本集以此名称来识别是否属于同一个集群中
2、启动准备好的一台Mongodb数据库
bin/mongod –f mongo.conf
3、连接到Mongo的admin库
bin/mongo ip:port/admin
4、增加用户
use admin db.createUser({user:"root",pwd:"root",roles:["root"]}) use ball db.createUser( { user: "basket", pwd: "basket", roles: [{role: "readWrite", db: "ballmatch"}] } )
5、生成keyFile文件
在服务器上执行
openssl rand –base64 753 > mongodb.keyfile chmod 600 keyFile
将keyFile配置到Mongo配置文件,同时开启验证
security: authorization: enabled keyFile:/home/dd/mongodb/mongodb.keyfile
没有这个文件的机器就无法加入副本集,开启了keyFile,隐含就开启了auth,这个时候连接副本集就需要进行认证了
6、重启Mongo服务
7、拷贝到其他服务器,修改对应得目录
8、添加副本集配置
cfg={_id:"matchData1", members:[{_id:0, host:'192.168.10.242:37017', priority:1},{_id:1, host:'192.168.10.242:37018', priority:2}, {_id:2, host:'192.168.10.242:37019', arbiterOnly:true}]}; rs.initiate(cfg);
cfg:变量名,任意起
_id:”matchData1” 配置文件中配置的副本集名称
host:Mongodb的ip+端口
priority:优先级,数字越大优先级越高(0-100),优先级最高的会是初始的主节点,显示为PRIMARY。如果不想让某些成员在故障切换时成为primary,则将它们的优先级设为0(为0永不会成为主节点)
当副本集切换失败时,可用如下代码重新配置:
rs.reconfig(cfg, {force:true});
9、副本集状态
rs.status() "health" : 1, #代表机器正常 "stateStr" : "PRIMARY", #代表是主节点,可读写,其中有以下几下状态 1. STARTUP:刚加入到复制集中,配置还未加载 2. STARTUP2:配置已加载完,初始化; 3. RECOVERING:正在恢复,不适用读 4. ARBITER: 仲裁者 5. DOWN:节点不可到达 6. UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构 7. REMOVED:移除复制集 8. ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态 9. FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步 10. PRIMARY:主节点 11. SECONDARY:备份节点
10、维护
前提是这个ip:port必须是使用了同一个relpSet名称的mongodb实例即可
添加副本,在登录到主节点下输入
rs.add("ip:port");
删除副本
rs.remove("ip:port");
新增仲裁节点
rs.addArb(“ip:port”);
相关文章推荐
- mongodb需要配置仲裁节点
- 学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点
- MongoDB 基础(八)复制Ⅱ—部署仲裁节点
- MongoDB仲裁节点的理解以及memcached,zookeeper,redis,故障恢复方案思考.
- MongoDB添加仲裁节点报错replica set IDs do not match办法
- mongodb集群安装及延迟节点配置
- MongoDB 复制集节点增加移除及节点属性配置
- mongodb节点配置指南
- Mongodb被动(passive)节点配置 推荐
- spring配置mongodb连接副本集多个节点
- MongoDB 3.0.6的主,从,仲裁节点搭建
- 一、mongodb之单个实例、主从配置、多个节点
- MONGODB 集群架构 调整,增加延迟备份节点服务器,删除仲裁节点
- mongodb仲裁节点
- SQL Server AlwaysOn配置两个节点加共享文件夹仲裁见证
- Mongodb 3节点 Rep set +sharding 配置
- 节点仲裁mongodb replica sets reconfig and conver a Secondary to an Arbiter
- Spark添加/更改集群节点需要修改的配置文件
- mongodb 三节点Shard Replica set 配置
- Mongodb延迟复制节点配置