Redis主从复制及Sentinel机制

配置Redis实现主从复制

环境配置:rhel7.3

Server1:172.25.81.1 Master

Server2:172.25.81.2 Slave

1.Redis的源码编译安装

Master、Slave主机安装Redis:从网站下载redis源码包,解压后进入redis目录,进行如下操作:

[root@server1 ~]# tar zxf redis-4.0.13.tar.gz

[root@server1 ~]# cd redis-4.0.13

[root@server1 redis-4.0.13]# yum install -y gcc  ##安装编译需要的gcc

[root@server1 redis-4.0.13]# make && make install

2.Redis启动脚本

[root@server1 redis-4.0.13]# cd utils/

[root@server1 utils]# ./install_server.sh

3.Master端配置

[root@server1 utils]# cd /etc/redis/
[root@server1 redis]# ls
6379.conf
[root@server1 redis]# vim 6379.conf

bind 0.0.0.0

min-replicas-to-write 1           ##一个master必须有slave回应,当一个redis是master时,如果它不能向至少1个slave写数据(上面的min-slaves-to-write指定了slave的数量),它将会拒绝接受客户端的写请求。防止用户数据在往以前的master数据写入时的丢失

 min-replicas-max-lag 10       ##slave回应时间

[root@server1 redis]# /etc/init.d/redis_6379 restart

4.Slave端配置:

[root@server2 utils]# cd /etc/redis/

[root@server2 redis]# vim 6379.conf  #设置server2是server1的slave

[root@server2 redis]# /etc/init.d/redis_6379 restart

5.测试:

Master上进行写操作,Master和Slave读端都可进行读操作

Master写入操作:

Slave读操作:

Master删除操作:

Slave读操作:

Slave不断给Master发送ping包

使用redis-cli的info命令也可以查看redis节点的相关信息。

 

Redis节点选举—Sentinel哨兵机制

哨兵机制:Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

<1>监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

<2>提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

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

 哨兵(sentinel) 是一个分布式系统,可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。

哨兵模式的部署配置

环境配置:rhel6.5
Server1:172.25.81.1 Master
Server2:172.25.81.2 Slave
Server3:172.25.81.3 Slave

其中,Server1、Server2和Server3均安装redis,且两个slave(Server2和Server3)的配置文件相同.

server1上配置哨兵机制:

1.配置sentine:

[root@server1 ~]# cd redis-4.0.13

[root@server1 redis-4.0.13]# cp sentinel.conf /etc/redis/

[root@server1 redis-4.0.13]# vim /etc/redis/sentinel.conf

 17   protected-mode no

 69  sentinel monitor mymaster 172.25.81.1 6379 2       #三个节点中两个确认master宕掉后,该master主观下线

 98  sentinel down-after-milliseconds mymaster 5000    ## sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了

[root@server1 redis-4.0.13]# cp /etc/redis/sentinel.conf   /mnt         ##备份该配置文件

将该配置文件拷贝到两个slave机上。

[root@server1 redis-4.0.13]# cd /etc/redis/

[root@server1 redis]# scp sentinel.conf server2:/etc/redis/

[root@server1 redis]# scp sentinel.conf server3:/etc/redis/

2. Redis 服务器运行sentinel

[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel

[root@server2 redis]# redis-server /etc/redis/sentinel.conf --sentinel

[root@server3 redis]# redis-server /etc/redis/sentinel.conf --sentinel

可以看出server2、server3为server1的slave

查看server1的状态

查看server1的进程

3.选举测试:

server1另外开启一个shell, master(server1)执行shutdown

重新查看sentinel的状态:server2被选举为master

 

注意: 选举后,非原master节点的配置文件 /etc/redis/sentinel.conf 自动修改

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值