数据库----redis群集之主从复制+哨兵模式部署

前言:

redis集群基础理论知识见我之前博客

一、redis集群----主从复制
1.1 实验环境
  • 在主从模式的redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用

  • 节点部署

    master IP地址:192.168.226.128

    • 功能:提供读、写

    slave1 IP地址:192.168.226.132

    • 功能:只读

    slave2 IP地址:192.168.226.133

    • 功能:只读
1.2 实验过程
  • ① 所有节点安装redis

    此处只演示master节点

[root@master ~]# yum install -y gcc gcc-c++ make


#可以选择直接下载压缩包,本次实验已将压缩包下好,所以直接挂载使用就好了
#在线下载命令:
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
#挂载使用
[root@master ~]# mount.cifs //192.168.226.1/LAMP-C7 /mnt
Password for root@//192.168.226.1/LAMP-C7: 
[root@master ~]# cd /mnt
[root@master mnt]# tar zxvf redis-5.0.7.tar.gz -C /usr/local

#编译安装
[root@master mnt]# cd /usr/local
[root@master local]# mv redis-5.0.7 redis
[root@master redis]# cd redis
[root@master redis]# make
[root@master src]# cd src
[root@master src]# make install
.......省略部分内容
  • ② 修改主配置文件
#master节点
[root@master src]# vim /usr/local/redis/redis.conf
#69行 修改监听地址为0.0.0.0(在实验环境使用),现网环境建议绑定从服务器IP地址

#136行 开启守护进程
daemonize yes

#171行 修改日志文件目录
logfile /usr/local/redis/redis.log

#263行 修改工作目录
dir /usr/local/redis

#699行 开启AOF持久化功能
appendonly yes

#slave节点
#与master节点修改一直,多修改一个同步master节点IP和端口
replicaof 192.168.226.128 6379
  • ③ 所有节点设置防火墙规则、放通6379端口的信息流通
[root@master src]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
success
[root@master src]# firewall-cmd --reload
success
  • ④ 设置内存分配策略
[root@master src]# vim /etc/sysctl.conf
#在行尾添加以下内容
vm.overcommit_memory = 1
----》wq

#刷新生效
[root@master src]# sysctl -p
  • 内核参数overcommit_memory

    overcommit_memory是内核分配策略

    可选值:0、1、2

    • 0 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
    • 1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
    • 2 表示内核允许分配超过所有物理内存和交换空间总和的内存
  • ⑤ 启动redis服务,先启动master节点、再启动slave节点

[root@master src]# /usr/local/redis/src/redis-server /usr/local/redis/redis.conf
[root@master src]# netstat -natp | grep redis
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      93265/redis-server 
  • 此时查看日志可看到两个slave节点已成功连接
[root@master src]# tail -f /usr/local/redis/redis.log 
93265:M 26 Mar 2020 20:43:21.781 * Background saving terminated with success
93265:M 26 Mar 2020 20:43:21.781 * Synchronization with replica 192.168.226.132:6379 succeeded
93265:M 26 Mar 2020 20:43:24.224 * Replica 192.168.226.133:6379 asks for synchronization
93265:M 26 Mar 2020 20:43:24.224 * Full resync requested by replica 192.168.226.133:6379
93265:M 26 Mar 2020 20:43:24.224 * Starting BGSAVE for SYNC with target: disk
93265:M 26 Mar 2020 20:43:24.224 * Background saving started by pid 94625
94625:C 26 Mar 2020 20:43:24.225 * DB saved on disk
94625:C 26 Mar 2020 20:43:24.225 * RDB: 2 MB of memory used by copy-on-write
93265:M 26 Mar 2020 20:43:24.299 * Background saving terminated with success
93265:M 26 Mar 2020 20:43:24.300 * Synchronization with replica 192.168.226.133:6379 succeeded
  • 可通过登录数据库查看master信息
[root@master src]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2			#以下为已连接的从服务器信息
slave0:ip=192.168.226.132,port=6379,state=online,offset=168,lag=1
slave1:ip=192.168.226.133,port=6379,state=online,offset=168,lag=0
master_replid:c358000ba4eaaebd56176e3b273e7973bb5efa8b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:168
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:168
  • ⑤ 验证主从复制

    再主节点创建键值对,从服务也可查询到信息,但是不能创建新的键值对

#master节点
127.0.0.1:6379> set work money
OK
127.0.0.1:6379> keys *
1) "work"
127.0.0.1:6379> get work
"money"
127.0.0.1:6379> exit


#slave节点
[root@slave1 src]# redis-cli -h 192.168.226.132 -p 6379
192.168.226.132:6379> keys *
1) "work"
192.168.226.132:6379> get work
"money"
二、redis 群集----哨兵模式
2.1 哨兵模式原理
  • 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。
2.2 哨兵模式作用
  • ① 监控

    不断的检查master和slave是否正常运行。

    master存活检测、master与slave运行情况检测

  • ② 通知(提醒)

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

  • ③ 自动故障转移

    断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

    PS:哨兵也是一台redis服务器,只是不提供数据服务

    通常哨兵配置数量为单数(因为哨兵在监控时通常只要哨兵数量的一半加1认为master宕机了就认定master宕机了

    哨兵一般是与redis工作节点是分开设置的,服务启动顺序为:先启动主机、在启动从机、最后启动哨兵

2.3 哨兵配置项

在这里插入图片描述

2.4 哨兵工作原理
  • 主从切换

    哨兵在进行主从切换的过程中经历三个阶段

    • ① 监控:同步信息

    • ② 通知:保持连通

    • ③ 故障转移

      发现问题

      竞选负责人

      优先新master

      新master上任后,其他slave切换master,原master作为slave故障恢复后连接

  • 阶段一:监控阶段
    在这里插入图片描述
    在这里插入图片描述

  • 阶段二:通知阶段

在这里插入图片描述

  • 阶段三:故障转移阶段

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 实验过程
  • 修改哨兵模式的配置文件(所有节点)
[root@master src]# cd ..
[root@master redis]# vim sentinel.conf
#17行 开启:关闭保护模式
protected-mode no 

#26行 指定sentinel为后台启动
daemonize yes

#36行 指定日志存放路径
logfile /usr/local/redis/sentinel.log

#65行 指定数据库存放路径
dir /usr/local/redis


#84行 至少有几个哨兵检测到主服务器故障了,才进行故障迁移
sentinel monitor mymaster 192.168.226.128 6379 2

#113行 指定哨兵在监控Redis服务时,判定服务器挂掉的时间周期,默认30000毫秒(30秒)
#此处为了见效快,改为3秒
sentinel down-after-milliseconds mymaster 3000

#146行 指定出现故障后,故障切换的最大超时时间,超过该值,认定切换失败,默认为180000毫秒(3分钟)
sentinel failover-timeout mymaster 120000
  • 开启哨兵模式

    哨兵模式,现开启master节点的,再开启slave节点的

#后台运行
/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf &
  • 查看哨兵信息
[root@master redis]# redis-cli -h 192.168.226.128 -p 26379 info Sentinel
2.6 故障模拟
  • 查看redis-server进程号
[root@master redis]# ps -ef | grep redis
root      29568      1  0 21:39 ?        00:00:01 /usr/local/redis/src/redis-sentinel *:26379 [sentinel]
root      44714  12307  0 21:52 pts/0    00:00:00 grep --color=auto redis
root      93265      1  0 20:42 ?        00:00:04 /usr/local/redis/src/redis-server 0.0.0.0:6379
  • kill进程号模拟故障
[root@master redis]# kill -9

#查看日志
[root@master redis]# tail -f /usr/local/redis/sentinel.log
#以下为主节点故障,从节点顶替主节点
switch-master mymaster 192.168.226.128 6379 192.168.226.132 6379
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值