整理:redis一主多从+Sentinel哨兵高可用配置

目录

 

Redis一主多从+Sentinel哨兵高可用方案

一、简介

二、主要功能

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值