运维项目实训—redis主从复制及sentinel机制

一、配置Redis实现主从复制

实验环境:rhel6.5
Server1:172.25.51.1 Master
Server2:172.25.51.2 Slave
1.Redis的安装
Master、Slave主机安装Redis:从源端下载redis目录,进入redis目录,进行如下操作:
[root@server1 redis]# tar zxf redis-4.0.1.tar.gz 
[root@server1 redis]# cd redis-4.0.1
[root@server1 redis-4.0.1]# yum install -y gcc
[root@server1 redis-4.0.1]# make 
[root@server1 redis-4.0.1]# make install
2.Redis启动脚本
[root@server1 redis-4.0.1]# 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 
  70 bind 0.0.0.0
[root@server1 redis]# /etc/init.d/redis_6379 restart

这里写图片描述

4.slave端配置
[root@server2 redis]# vim 6379.conf 
 70 bind 0.0.0.0
 283 slaveof 172.25.51.1 6379         ##server2是server1的slave

[root@server2 redis]# /etc/init.d/redis_6379 restart
5.测试:
Master上进行写操作,Master和Slave读端都可进行读操作
Master操作:

这里写图片描述

Slave操作:

这里写图片描述

Master操作:

这里写图片描述

Slave操作:

这里写图片描述

Slave不断给Master发送ping包

这里写图片描述


注意:Master可执行读、写操作,Slave默认只能执行读操作,原因:

[root@server2 redis]# vim 6379.conf 

这里写图片描述


二、Redis节点选举—Sentinel哨兵机制

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

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

实验环境:rhel6.5
Server1:172.25.51.1 Master
Server2:172.25.51.2 Slave
Server3:172.25.51.3 Slave
其中,Server1、Server2和Server均安装redis,且Server2和Server3的配置文件的配置相同.
1.配置sentinel
[root@server1 redis-4.0.1]# cp sentinel.conf /etc/redis/
[root@server1 redis]# vim /etc/redis/sentinel.conf 
 17 protected-mode no
 69 sentinel monitor mymaster 172.25.51.1 6379 2
 98 sentinel down-after-milliseconds mymaster 5000
[root@server1 redis]# scp sentinel.conf server2:/etc/redis
[root@server1 redis]# scp sentinel.conf server3:/etc/redis
[root@server1 redis]# cp sentinel.conf /mnt         ##备份

这里写图片描述

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

示图:server1的进程(redis进程、sentinel进程)
这里写图片描述


sentinel两种运行方式:

第一种:

redis-server /etc/redis/sentinel.conf --sentinel

第二种:

redis-sentinel /etc/redis/sentinel.conf

示图:server2、server3为server1的slave

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

这里写图片描述

3.选举测试:

另外开启一个shell—>server1,master(server1)执行shutdown,查看原server1的sentinel状态:server2被选举为master
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/hannah_zh/article/details/81011500