Redis主从、哨兵

之前安装了redis,但是单节点redis不可靠,现在搭建redis主从,提高可用性。

一、搭建一主二从

  redis主从其实是读写分离,主节点写数据,从节点读数据。

  1、准备三台redis机器。redis的密码需要一致,否则主从切换时会有问题。

  2、选择两台,作为从机,编辑redis核心配置文件。

vim /usr/local/redis/redis.config

  3、修改配置(从机)

#主节点ip和端口
replicaof <master-ip> <master-port>
#主节点redis密码
masterauth <master-password>
replica-read-only yes

  4、删除工作空间之前的rdb和aof文件,工作空间位置在安装redis时是自己定义的,我的是/usr/local/redis/working

  5、重启redis

/etc/init.d/redis_init_script stop
/etc/init.d/redis_init_script start

  6、进入/usr/local/redis/working,发现rdb和aof又出现了,这个是同步的主节点的。

  7、启动redis客户端,查看从节点状态,如图第一张从节点,第二张主节点

redis-cli -a <password>
info replication

      

  8、测试读写数据有没有问题

  9、至此,一主二从搭建完成,但是还有一个问题,主节点挂掉之后从节点不会自动选举出新的主节点,下边我们加入哨兵,解决这个问题

二、哨兵(三台redis都要做如下配置)

  1、进入/usr/local/redis,创建并且配置sentinel.conf

port 26379 
pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
dir "/usr/local/redis/sentinel"
daemonize yes
protected-mode no
logfile "/usr/local/redis/sentinel/redis-sentinel.log"


# 配置哨兵
sentinel monitor mymaster 127.0.0.1 6379 2
# 密码
sentinel auth-pass <master-name> <password>
# master被sentinel认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 30000
# 剩余的slaves重新和新的master做同步的并行个数
sentinel parallel-syncs mymaster 1
# 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
sentinel failover-timeout mymaster 180000

  2、启动3台哨兵

redis-sentinel sentinel.conf

  3、测试

    1. master挂了,看slave是否成为master
    2. master恢复,观察slave状态

  4、结论

    master挂了以后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。

   5、补充:

    当主节点挂掉,变为从节点后,查看这台redis的信息(info replication),发现master_link_status:down。表示同步有问题。这是因为之前主节点没有配置

masterauth <master-password>属性,他作为主节点时用不到这个,所以当时没问题,当作为从节点,因为没有主节点的密码,所以就同步不了数据了。

                                          整理自慕课网《java架构师体系课》

猜你喜欢

转载自www.cnblogs.com/hmxs/p/12101900.html