redis学习三,Redis主从复制和哨兵模式

Redis主从复制

1.Master能够拥有多个slave
2.多个slave能够链接同一个Master外,还能够链接到其余的slave
3.主从复制不会阻塞Master在主从复制时,Master能够处理client请求。
4.提供系统的伸缩性。

主从复制的过程

1.slave与Master创建链接,发送sync同步命令。
也就是说当用户在Master写入一条命令后,他们之间会经过一些算法把数据同步到每个slave上。
2.Msater会开启一个后台进程,将数据库快照保存到文件中。同时Master主进程会开始收集新的写命令并缓存。
3.后台完成保存后,就将文件发送给slave
4.slave将此文件保存在硬盘上。

主从复制的配置

咱们建立三台linux服务器,一台做为主服务器Master,ip为192.168.1.10另外两台做为slave,ip分别为192.168.1.11和192.168.1.12.
三台服务器分别安装redis,固然这里咱们要确保三台服务器之间是能进行互相通讯的,即互相能够ping通。而后Master服务器不须要作什么配置,将11和12两台服务器的redis.conf配置文件进行修改以后,redis就会自动的为咱们实现主从复制。
 
修改两台slave的redis.conf这个配置文件。
若是主服务器没有设置密码,那么咱们只要找到slaveof <masterip> <masterport>,这里咱们的主服务器ip是192.168.1.10,redis端口是6379,那么咱们只须要在redis.conf配置文件中加入slaveof 192.168.1.10 6379,而后保存便可。
若是主服务器设置了密码,咱们还须要修改masterauth <master-password>(主服务器的密码)这个配置项。
 
而后同时启动三台服务器 进入到redis-cli客户端用info命令进行查看状态(此处个人Master的ip是192.168.1.231,slave的ip分别为229和230)
咱们看到上面的role显示此台机器是master,有两个slave,还能够看到对应的ip和端口。
 
此时咱们在slave只能进行读操做,只能经过master进行写操做。而且咱们每次的写操做会发如今每一台服务器上面都是同步的。
 
简单的说Redis主从复制,假设咱们有三台Redis服务器,一台主服务器Master,两台从服务器slave,slave中只能作读操做。Master可作读写操做,每次对Master进行写操做以后,首先Master会将数据存储在硬盘中,而后经过sync同步命令将每个slave的数据进行更新,而后每个slave都将更新的数据写在本身的硬盘中,这样就保证了数据的一致性。

Redis哨兵模式

若是咱们在使用主从复制的状况下,Master服务器进行了down机的状况,咱们的系统就不能再进行写的操做,因此此时redis在2.6版本引入了哨兵模式,可是并不稳定,2.8版本以后哨兵模式才稳定了起来。
顾名思义Redis的哨兵模式就是对redis系统进行实时的监控,其主要功能有下面两点
1.监测主数据库和从数据库是否正常运行。
2.当咱们的主数据库出现故障的时候,能够自动将从数据库转换为主数据库,实现自动的切换。


实现步骤

这里咱们仍是使用上面的redis服务器的ip,Master的ip为192.168.1.229,slave1为:192.168.1.230,slave2为:192.168.1.231
在其中一台服务器配置sentinel.conf(好比192.168.1.230)
1.进入解压的redis文件夹中使用cp命令将sentinel.conf文件copy到你的redis中的etc文件夹。
2.修改sentinel.conf这个配置文件
打开这个文件 咱们注意到哨兵使用的端口号是26379.
 
dir "/usr/local/redis/etc"这个dir至关于哨兵的一些日志,咱们修改他的路径,让他存放在咱们想要保存的目录中。
 
sentinel monitor mymaster 192.168.1.229 6379 1 对应的分别是 名称,ip,端口,投票选举的次数(那么咱们哨兵监听的确定是master的ip而后端口是6379,1说明当master主服务器down机以后,剩下的服务器要进行一个投票选举出一个主服务器)
 
sentinel down-after-milliseconds mymaster 5000 这个配置表明哨兵0.5ms进行一次检查这个集群。
 
sentinel parallel-syncs mymaster 2这个配置表明你的几个从节点将支持转换为主服务器的这个事情。
 
须要修改的几乎就这几个配置。
而后 咱们分别启动三台redis服务器
输入bin/redis-server etc/sentinel.conf --sentinel &这个命令启动哨兵
/usr/local/redis/bin/redis-cli -h 192.168.1.230 -p 26379 info sentinel这个命令是查看哨兵的状态
咱们看到个人主服务器如今是229如今有两个slave
 
这样咱们的哨兵模式就已经开启了,此时咱们能够试图关闭229的redis,而后看哨兵会不会去从两个从服务器中选举一台充当主服务器。
 
相关文章
相关标签/搜索