redis搭建主从

Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。

注意:从服务器不能写数据,只能读取数据,只有主服务器才能写入数据

1、这里用一台服务器开启两个redis服务作为演示,用不同的配置文件启动redis,一个主,一个从。搭建主从最好使用相同版本的reids。

复制一份配置作为从服务器配置

sudo cp /etc/redis/redis.conf /etc/redis/redis_slave.conf 

2、主服务器绑定ip,端口6378

修改主服务器配置

sudo vim /etc/redis/redis.conf
bind 192.168.20.82
port 6378

3、修改从服务器配置

sudo vim /etc/redis/redis_slave.conf
bind 192.168.20.82
slaveof 192.168.20.82 6378   #指定主服务器

密码处理

如果master端配置了密码,slave端需要配置对应的认证,如果需要做主从切换,两端密码配置成一样。

master 配置密码

requirepass myRedis 
masterauth   myRedis 

slave端配置:
requirepass myRedis  
masterauth   myRedis

分别启动两台redis服务器

sudo redis-server /etc/redis/redis.conf
sudo redis-server /etc/redis/redis_slave.conf

绑定ip后连接终端需要指定ip,端口连接

redis-cli -h 192.168.20.82 -p 6379

测试数据是否同步:

在主服务器中添加数据,在从服务器中get数据。

在主服务器添加数据:

set test backup

从服务器查看是否同步过来

get test 

直接查看keys * redis的key都已经主从同步。

在从服务器添加数据:

主从切换

问题:主从配置,其中一台宕机了,咋办?

redis提供了一个工具sentinel(哨兵),可以监控主从redis的运行状态,并且故障自动迁移。

sentinel的概念:

用户管理多个redis服务器(instance),该系统执行以下3个任务: 

监控(Monitoring):不断的检查你的主服务器和从服务器是否运行正常;

通知(Notification):当被监控的某个redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知; 

自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,sentinel会开始一次自动故障迁移操作,它会将失效的主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器为复制新的主服务器。当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器地址,使得集群可以使用新主服务器代替失效服务器。

sentinel的配置:

配置文件:

/usr/local/redis/sentinel.conf

基本配置项说明:

port xxxooo //端口 

sentinel monitor master 127.0.0.1 6379 2

sentinel down-after-milliseconds master 30000 

sentinel failover-timeout master 180000 

sentinel parallel-syncs master 

sentinel notification-script 

第二行:指定要检测的实例,别名+iP地址+端口。2表示至少2个sentinel实例同时检测到redis server异常,才判断为宕机

第三行:指定某个sentinel实例监控到某个redis实例持续异常多少时间(毫秒),才判断状态为down。

第四行:若sentinel在该配置内未能完成failover操作(故障时master/slave自动切换),则认为本次failover失败。

第五行:指定failover过程中,同时被sentinel reconfigure的最大slave实例数,由于reconfigure过冲中,对应的slave会中断响应客户端请求,故为了避免所有slave同时不可用,该值需适当配小。

第六行:指定sentinel检测到master-name指向的实例异常时,调用的报警脚本。该配置项目可选,但生成环境建议配置。

修改sentinel.conf 配置文件。

daemonize yes   # 守护进程的方式启动
sentinel monitor mymaster 127.0.0.1 6378 1   # master主机地址

sentinel down-after-milliseconds mymaster 1000   # redis实例持续异常1000ms,判断状态为down。
sentinel failover-timeout mymaster 1500    #  1500ms内主从切换
#sentinel auth-pass mymaster myredis       # 如果redis配置了密码   
sentinel config-epoch mymaster 73

配置好之后启动 sentinel

redis-sentinel sentinel.conf

测试

手动关闭master模拟master故障看主从是否自动切换。

数据库基础 all right reserved,powered by Gitbook文件修订时间: 2018-04-19 17:55:34