整理:redis一主多从+Sentinel哨兵高可用配置
Posted 阿征new
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整理:redis一主多从+Sentinel哨兵高可用配置相关的知识,希望对你有一定的参考价值。
目录
Redis一主多从+Sentinel哨兵高可用方案
一、简介
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案。实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署。
二、主要功能
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
Sentinel的主从原理:
三、环境搭建
三台服务器: 分别部署3台哨兵+Redis
172.16.63.130(master+哨兵A)
172.16.63.136(slaver+哨兵B)
172.16.63.135(slaver+哨兵C)
主从复制 - 读写分离
Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),
主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,
而从数据库一般是只读的,并接收主数据库同步过来的数据,
一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。 通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
四、主从复制过程
1:当一个从数据库启动时,会向主数据库发送sync命令
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
注意:redis2.8之前的版本:当主从数据库同步的时候从数据库因为网络原因断开重连后会重新执行上述操作,不支持断点续传。redis2.8之后支持断点续传。
五、安装过程:
1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.11.tar.gztar -xzf redis-4.0.11.tar.gzcd redis-4.0.11
2.编译 yum y install gcc gccc++ kernel-develmake MALLOC=libc 等待编译完成
3.安装 make PREFIX=/usr/local/redis installmkdir /usr/local/redis/conf/cp redis.conf sentinel.conf /usr/local/redis/conf/
六、配置主从读写
A)172.16.63.130(master)
编辑配置文件 vim /usr/local/redis/conf/redis.conf
使用yes启用守护进程 daemonize yes
设置端口 port 6379
配置redis访问密码的参数 requirepass "tst_redis"
主从同步密码 masterauth "tst_redis"
关闭保护模式(重要,经测试采用默认值会导致从服务无法连接) protected-mode no
B)172.16.63.136(slaver)
编辑配置文件 vim /usr/local/redis/conf/redis.conf
使用yes启用守护进程 daemonize yes
设置端口
port 6379
配置redis访问密码的参数
requirepass "tst_redis"
主从同步密码 masterauth "tst_redis"
备机设置为只读
slave-read-only yes
设置主备同步
关闭保护模式(重要,经测试采用默认值会导致从服务无法连接)
protected-mode no
C)172.16.63.135(slaver)
编辑配置文件 vim /usr/local/redis/conf/redis.conf
使用yes启用守护进程 daemonize yes
设置端口
port 6379
配置redis访问密码的参数
requirepass "tst_redis"
主从同步密码 masterauth "tst_redis"
备机设置为只读
slave-read-only yes
设置主备同步
关闭保护模式(重要,经测试采用默认值会导致从服务无法连接)
protected-mode no
验证主从读写
连接masterA
写入key值
连接slaverB 获取key值
连接slaverC 获取key值
配置哨兵 A)172.16.63.130(哨兵A) 端口
访问密码
设置master地址
关闭保护模式
哨兵B/C采用同样的方式进行配置。
验证哨兵
默认130A为master
kill 掉130的master
经过三个哨兵投票选择135为新的master
以上是关于整理:redis一主多从+Sentinel哨兵高可用配置的主要内容,如果未能解决你的问题,请参考以下文章