redis 主从模式和配置哨兵

要求:有四台redis服务器,让你使用哨兵模式实现redis服务器的高可用
服务器id1:192.168.106.160
服务器id2:192.168.106.170
服务器id3:192.168.106.180
服务器id4:192.168.106.190

一.主从模式

1.安装环境

yum -y install gcc gcc-c++ make
cd /opt
tar zxvf squid-3.5.23.tar.gz
cd squid-3.5.23
make
make PREFIX=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/local/bin/ ##指令优化
cd utils/   
./install_server.sh  ##初始化squid (根据提示选择安装)
netstat -anpt | grep redis  ##查看squid启动状态

2.修改配置

[root@master src]# vim /etc/squid
#master、slave节点都需要修改
#70行 修改监听地址为0.0.0.0(在实验环境使用),现网环境建议绑定从服务器IP地址
#137行 开启守护进程
daemonize yes
#172行 修改日志文件目录
logfile /var/log/redis_6379.log
#264行 修改工作目录
dir /var/lib/redis/6379
#700行 开启AOF持久化功能
appendonly yes

#slave节点
#与master节点修改一直,多修改一个同步master节点IP和端口
replicaof 192.168.106.190 6379
服务重启
/etc/init.d/redis_6379 restart

登录redis查看状态
[root@server1 ~]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=192.168.106.160,port=6379,state=online,offset=733925,lag=1
slave1:ip=192.168.106.170,port=6379,state=online,offset=734070,lag=1
slave2:ip=192.168.106.180,port=6379,state=online,offset=734070,lag=1
master_replid:13ed166862b66cc742752c4e7b17ead33ec177c2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:734215
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:734215

二.哨兵原理和配置哨兵

1.哨兵模式原理

哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集群的数量不得少于3个节点。
哨兵模式的作用
① 监控
不断的检查master和slave是否正常运行。
master存活检测、master与slave运行情况检测

② 通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。

③ 自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址
PS:哨兵也是一台redis服务器,只是不提供数据服务
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常,当master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个master的确出现问题,然后会通知哨兵间,然后从slaves中选取一个作为新的master
配置哨兵

2.哨兵模式的配置

##哨兵模式的配置文件的修改###(所有节点都需要修改)
vi redis-5.0.4/sentinel.conf
17/protected-mode no  #关闭保护模式
26/daemonize yes #指定sentinel为后台启动
36/logfile "/var/log/sentinel.log" #指定日志存放路径
65/dir "/var/lib/redis/6379" #指定数据库存放路径
84/sentinel monitor mymaster 20.0.0.11 6379 2  #至少几个哨兵检测到主服务器故障了,才会进行故障迁移
113/sentinel down-after-milliseconds mymaster 3000 #判定服务器down掉的时间周期,默认30000毫秒(30秒)
146/sentinel failover-timeout mymaster 100000 #故障节的的最大超时时间为180000(180秒)
####启动哨兵模式#######
先启master,再启slave
redis-sentinel redis-5.0.4/sentinel.conf &
####查看哨兵信息#######
redis-cli -h 192.168.106.190 -p 26379 info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.106.190:6379,slaves=3,sentinels=4 ##sentinels 哨兵数量  slaves 从服务器数量

三.故障模拟

查看redis-server进程号
ps -ef | grep redis
root       8218      1  0 16:27 ?        00:00:31 redis-sentinel *:26379 [sentinel]
root       9673      1  0 18:38 ?        00:00:05 /usr/local/bin/redis-server 0.0.0.0:6379
root      10328   2466  0 19:25 pts/0    00:00:00 grep --color=auto redis
杀死master上redis-server的进程号
 kill -9 9673 #master上redis-server的进程号
验证结果
tail -f /var/log/sentinel.log
8218:X 17 Nov 2020 19:25:25.944 # +vote-for-leader 937f8cdda600dd40b3507e57e352c6329b35a859 9
8218:X 17 Nov 2020 19:25:26.964 # +odown master mymaster 192.168.106.190 6379 #quorum 3/2  ##投票
8218:X 17 Nov 2020 19:25:26.964 # Next failover delay: I will not start a failover before Tue Nov 17 19:26:02 2020
8218:X 17 Nov 2020 19:25:27.042 # +config-update-from sentinel 937f8cdda600dd40b3507e57e352c6329b35a859 192.168.106.180 26379 @ mymaster 192.168.106.190 6379 
8218:X 17 Nov 2020 19:25:27.042 # +switch-master mymaster 192.168.106.190 6379 192.168.106.180 6379  ##master转移成180
8218:X 17 Nov 2020 19:25:27.042 * +slave slave 192.168.106.170:6379 192.168.106.170 6379 @ mymaster 192.168.106.180 6379
8218:X 17 Nov 2020 19:25:27.042 * +slave slave 192.168.106.160:6379 192.168.106.160 6379 @ mymaster 192.168.106.180 6379
8218:X 17 Nov 2020 19:25:27.042 * +slave slave 192.168.106.190:6379 192.168.106.190 6379 @ mymaster 192.168.106.180 6379
8218:X 17 Nov 2020 19:25:30.054 # +sdown slave 192.168.106.170:6379 192.168.106.170 6379 @ mymaster 192.168.106.180 6379
8218:X 17 Nov 2020 19:25:30.054 # +sdown slave 192.168.106.190:6379 192.168.106.190 6379 @ mymaster 192.168.106.180 6379


redis-cli -p 26379 INFO Sentinel ##进入查看
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.106.180:6379,slaves=3,sentinels=4 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值