Redis(五)主从复制以及哨兵模式、集群详解

主从复制

特点:
   主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库

   从数据库一般都是只读的,并且接收主数据库同步过来的数据

   一个master可以拥有多个slave,但是一个slave只能对应一个master

   slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来

   master挂了以后,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务

   master挂了以后,不会在slave节点中重新选一个master
缺点:
   master节点在主从模式中唯一,若master挂掉,则redis无法对外提供写服务。
配置方式
    3台机器 IP1、IP2、IP3
	
	IP1默认配置(主 master)
	
	bind IP1               #监听ip,多个ip用空格分隔
    daemonize yes               #允许后台启动
    logfile "/usr/local/redis/redis.log"                #日志路径
    dir /data/redis                 #数据库备份文件存放目录
    requirepass 123456              #设置master连接密码
	masterauth 123456 #设置连接master密码
    appendonly yes   #在/data/redis/目录生成appendonly.aof文件,将每一次写操作请求都追加到
    #appendonly.aof 文件中
    
	
	IP2(从 slave)
	bind IP2
	daemonize yes
	logfile "/usr/local/redis/redis.log"
	dir /data/redis
	#replicaof IP1 6379
	slaveof  IP1 6379
	requirepass 123456          #设置master连接密码
	masterauth 123456 #设置连接master密码
	appendonly yes
	
	IP3(从 slave)
	bind IP3
	daemonize yes
	logfile "/usr/local/redis/redis.log"
	dir /data/redis
	#replicaof IP1 6379
	slaveof  IP1 6379
	requirepass 123456           #设置master连接密码
	masterauth 123456 #设置连接master密码
	appendonly yes
启动服务  redis-server redis.conf
 验证是否成功如下图

在这里插入图片描述
Sentinel模式

介绍
     sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义

    当master挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的
    配置文件也会被修改,比如slaveof属性会指向新的master

    当master重新启动后,它将不再是master而是做为slave接收新的master的同步数据

    sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群

    多sentinel配置的时候,sentinel之间也会自动监控

    当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中,不需要担心

    一个sentinel或sentinel集群可以管理多个主从Redis,多个sentinel也可以监控同一个redis

    sentinel最好不要和Redis部署在同一台机器,不然Redis的服务器挂了以后,sentinel也挂了
当使用sentinel模式的时候,客户端就不要直接连接Redis,而是连接sentinel的ip和port,由sentinel来提供具体的可提
供服务的Redis实现,这样当master节点挂掉以后,sentinel就会感知并将新的master节点提供给使用者。
新增sentinel.conf文件(配置文件只需要配置master的信息就好了,不用配置slave的信息,
因为slave能够被自动检测到(master节点中有关于slave的消息)。
	--------------------------------------------------------------------------
	# 这个是Redis6379配置内容,其他文件同理新增然后改一下端口即可,26380,和 26381。
	#当前Sentinel服务运行的端口
	port 26379  
	# 哨兵监听的主服务器 
	sentinel monitor mymaster 127.0.0.1 6379 2
	# 3s内mymaster无响应,则认为mymaster宕机了
	sentinel down-after-milliseconds mymaster 3000
	#如果10秒后,mysater仍没启动过来,则启动failover  
	sentinel failover-timeout mymaster 10000  
	# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步
	sentinel parallel-syncs mymaster 1
	-----------------------------------------------------------------------------
	
	# 哨兵监听的主服务器 (详解)
	sentinel monitor [master-group-name] [ip] [port] [quorum]
	master-group-name:master名称(可以自定义)
    ip port : IP地址和端口号
    quorun:票数 几个Sentinel同意master就是挂掉了

通过redis-trib.rb可创建redis集群,然后通过–replicas后面接的数字,表示1个主节点对应几个从节点,那么我就做了如下的测试,想要达到的效果就是有6个节点,然后2个master节点,每个master节点对应2个slave节点,不就正好是6个节点了吗,但是在执行的时候报错:

[aiprd@hadoop2 src]$ ./redis-trib.rb create --replicas 2 192.168.30.10:7000 192.168.30.11:7003 192.168.30.10:7002 192.168.30.10:7001 192.168.30.11:7004 192.168.30.11:7005

Creating cluster
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least 3 master nodes.
*** This is not possible with 6 nodes and 2 replicas per node. #解释了,对于6个节点,不可能是3个master,每个有2个副本节点。因为,那样的结构需要9个节点。
*** At least 9 nodes are required. #至少需要9个节点。
以上信息的意思是:Redis集群至少需要3个master节点,所以现在总共有6个节点,就只能是1master对应1slave这种方式。

所以:
1master-1slave,redis集群需要6个节点
1master-2slave,redis集群需要9个节点,以此类推。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值