复制是在多台服务器之间同步数据的过程,由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点
Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据
通过上述方式来保持复制集内所有成员存储相同的数据集,提供数据的高可用
Failover (故障转移,故障切换,故障恢复)
Redundancy(数据冗余)
避免单点,用于灾难时恢复,报表处理,提升数据可用性
读写分离,分担读压力
对用户透明的系统维护升级
主节点记录所有的变更到oplog日志
辅助节点(Secondary)复制主节点的oplog日志并且将这些日志在辅助节点进行重放(做)
各个节点之间会定期发送心跳信息,一旦主节点宕机,则触发选举一个新的主节点,剩余的辅助节点指向新的主
10s内各辅助节点无法感知主节点的存在,则开始触发选举
通常1分钟内完成主辅助节点切换,10-30s内感知主节点故障,10-30s内完成选举及切换
用户恢复数据,防止数据丢失,实现灾难恢复
人为误 *** 作导致数据删除,程序Bug导致数据损坏等
首要复制节点,由选举产生,提供读写服务的节点,产生oplog日志
备用(辅助)复制节点,Secondary可以提供读服务,增加Secondary节点可以提供复制集的读服务能力
在故障时,备用节点可以根据设定的优先级别提升为首要节点。提升了复制集的可用性
Arbiter节点只参与投票,不能被选为Primary,并且不从Primary同步数据
Arbiter本身不存储数据,是非常轻量级的服务。
当复制集成员为偶数时,最好加入一个Arbiter节点,以提升复制集可用性
Mongodb版本30以上, 三台服务器均为64位
三台服务器 -------- Primary(Centos7)、 Secondary(Centos7)、 Secondary(Debian8);架设IP分别为 19216811、12、 13
三台服务器关闭防火墙 -------- systemctl stop firewalldservice
三台服务器修改mongo配置文件 -------- vi /etc/mongodconf
侦听地址除了 localhost 外再加上服务器IP; 设置复制集名字(RepliSetName)。
开启mongod服务: mongod
三台服务器mongo各自初始化: rsinitiate()
Primary上副本集配置:
rsconf(配置名称,可随意取)={_id:"副本集名",member:[{_id:0,host:"IP:port",priority:2},{_id:1,host:"IP:port",priority:1},{_id:2,host:"IP:port",priority:1}]}
在初始化:rsinitiate(变量名,如下面的config)
Secondary上配置:
rsslaveOk() #承认自己是Secondary
三台服务器上互相添加副本集成员:
rsadd("IP:port"), 如在Primary上 rsadd("19216812:27017"), rsadd("19216813:27017")
查看状态
rsstatus()
3、rs(replication set) 常用命令:
初始化副本集 ---- rsinitiate()
mongo查看状态 ---- rsstatus()
初始化副本集配置
rsconf = {_id: "rs0",
members: [{
_id: 0,
host: ":27017"}]}
rsinitiate( rsconf )
验证副本集配置 ---- rsconfig()
增加副本集成员 ---- rsadd("Ip:port")
移除副本集成员 ---- rsremove("IP:port") #此步骤在Primary上 *** 作
改变成员变量的优先级
cfg = rsconf()
cfgmembers[0]priority = 3
cfgmembers[1]priority = 1
cfgmembers[2]priority = 2
rsreconfig(cfg)
配置延迟副本集
cfg = rsconf()
cfgmembers[0]priority = 0
cfgmembers[0]hidden = true
cfgmembers[0]slaveDelay = 3600
rsreconfig(cfg)
# 07/03/2017方法如下:
1、按WIN+Q组合键打开搜索框,输入"远程桌面连接",点击下方提示的远程桌面连接
2、在打开的连接窗口,输入远程机器的计算机名或IP地址,和端口
3、系统可能会有一些提示,点击确认。
4、登入远程主机后,输入远程主机的用户名和密码即可
Mongodb 部署信息 :
os: centos77 x64 配置好NTP,防火墙默认不做任何限制
mongos部署两个点,config3个点,和3个分片集群(每个分片一主一副一仲裁)
注意:因为判断逻辑的问题,不要在任何节点同时运行两种服务的主点
ansible的hosts文件配置:
环境变量全部都在这里设置,需要都写入到ansible的hosts文件里
变量中
server_1_ip 都设置为主点
server_2_ip 都设置为副点
server_3_ip 都设置为仲裁节点(config server没有仲裁节点,但是也要写,不然mongos的配置文件模板会报错)
这些IP的配置后面在初始化时会用到
ansible文件夹结构 :
首先是模板文件:
mongodconfmongosj2 mongos的配置文件模板
mongodconfnormalj2 shard server和config server的配置文件模板
mongodservicej2 service文件模板
mongokey 直接手动生成 ,用户MongoDB集群之间的加密连接,记得权限改为600
passwdj2 用于配置MongoDB的root用户名密码
执行:
按提示输入服务器密码
包含了系统优化相关设置,注意中间会重启一次让一些系统优化项生效
注意:因为判断逻辑的问题,不要在任何节点同时运行两种服务的主点
执行 :
如果执行有问题建议多检查变量配置
全部完成后可以验证一下集群环境:
登陆分片集群 :
分片的状态显示正常
登陆mongos
可以看到mongos的状态也正常,分片也全部都添加进去 全部安装至此完成
一键删除MongoDB安装及相关数据,方便重装
一键启动整个MongoDB集群
一键停止所有MongoDB集群
以上就是ansible在MongoDB的一键部署脚本,而且附带了对服务器的优化相关配置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)