源码包redis5.0哨兵模式+vip安装、cluster模式集群模式

源码包redis5.0哨兵模式+vip安装、cluster模式集群模式

哨兵模式+vip

特点

  • 当master挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置 文件,其他slave的配置文件也会被修改,比如replicaof属性会指向新的master
  • 当master重新启动后,它将不再是master而是做为slave接收新的master的同步数 据
  • sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个 sentinel集群
  • 多sentinel配置的时候,sentinel之间也会自动监控
  • 当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中

工作机制

  • 每个sentinel以每秒钟一次的频率向它所知的master,slave以及其他sentinel实例发 送一个 PING 命令
  • 如果一个实例距离最后一次有效回复 PING 命令的时间超过
    down-after-milliseconds 选项所指定的值,则这个实例会被sentinel标记为主观下 线。
  • 如果一个master被标记为主观下线,则正在监视这个master的所有sentinel要以每 秒一次的频率确认master的确进入了主观下线状态
  • 当有足够数量的sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 master的确进入了主观下线状态, 则master会被标记为客观下线
  • 在一般情况下, 每个sentinel会以每 10 秒一次的频率向它已知的所有master,slave 发送 INFO 命令
  • 当master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送 INFO 命令的频率会从 10 秒一次改为 1 秒一次
  • 若没有足够数量的sentinel同意master已经下线,master的客观下线状态就会被移 除;若master重新向sentinel的 PING 命令返回有效回复,master的主观下线状态就会被移除

主从从搭建(请看上一篇文章)

修改sentinel配置文件

vim /data/redis-5.0.12/sentinel.conf
port 26379 
# 保护模式修改为否,允许远程连接
protected-mode no
#设置为后台启动。 
daemonize yes
#日志文件。 
logfile "/data/redis-5.0.12/logs/sentinel.log"
#数据路径
dir /data/redis-5.0.12/data/sentinel
# 设定监控地址,为对应的主redis库的内网地址
sentinel monitor mymaster 192.168.66.21 6379 2
#主数据库密码
sentinel auth-pass mymaster 123456
# 设定5秒内没有响应,说明服务器挂了
sentinel down-after-milliseconds mymaster 5000
# 设定15秒内master没有活起来,就重新选举主
sentinel failover-timeout mymaster 15000
#主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1 
sentinel parallel-syncs mymaster 1
#故障转移的超时时间,这里设置为三分钟
sentinel failover-timeout mymaster 180000
#设置vip漂移脚本
sentinel client-reconfig-script mymaster    /data/redis-5.0.12/notify_master6800.sh

创建相关目录

mkdir /data/redis-5.0.12/data/sentinel

编写脚本

vim /data/redis-5.0.12/notify_master6800.sh
#!/bin/bash
#第六个参数是新主redis的ip地址
MASTER_IP=$6
#其他两个服务器上为192.168.56.102,192.168.56.103
LOCAL_IP='192.168.66.21'
VIP='192.168.66.100'
NETMASK='24'
INTERFACE='ens33:1'
if [ ${MASTER_IP} = ${LOCAL_IP} ];then   
	#将VIP绑定到该服务器上
    /sbin/ip  addr  add ${VIP}/${NETMASK}  dev ${INTERFACE}
    /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
    exit 0
else 
#将VIP从该服务器上删除
   /sbin/ip  addr del  ${VIP}/${NETMASK}  dev ${INTERFACE}
   exit 0
fi
#如果返回1,sentinel会一直执行这个脚本
exit 1
chmod +x /data/redis-5.0.12/notify_master6800.sh

手动绑定VIP到主服务器上

/sbin/ip  addr add 192.168.66.100/24 dev ens33:1
/sbin/arping -q   -c 3 -A 192.168.66.100 -I ens33:1

启动三个哨兵

redis-sentinel /data/redis-5.0.12/sentinel.conf
netstat -tunpl | grep 26379

查看哨兵信息

redis-cli -p 26379 
	>info sentinel 

故障演练

  1. 停止master

    systemctl stop redis6379.service
    
  2. 从节点查看vip

    ip addr | grep  100
    
  3. 查看每个节点状态

    redis-cli -h 192.168.66.20 -p 6379 -a 123456
    	>info replication
    
  4. 查看每个节点配置文件

    cat /data/redis-5.0.12/conf/6379.conf | grep replicaof
    cat /data/redis-5.0.12/sentinel.conf | grep 'sentinel monitor mymaster'
    
  5. 以vip连接

    redis-cli -h 192.168.66.100 -p 6379 -a 123456
    Vip完成漂移成功
    
  6. 启动刚停止的master

  7. 查看每个节点状态

    redis-cli -h 192.168.66.20 -p 6379 -a 123456
    	>info replication
    
  8. 查看每个节点配置文件

    cat /data/redis-5.0.12/conf/6379.conf | grep replicaof
    cat /data/redis-5.0.12/sentinel.conf | grep 'sentinel monitor mymaster'
    
  9. 故障的集群重启了加入了集群,变成node了

cluster模式

特点

  • 多个redis节点网络互联,数据共享
  • 所有的节点都是一主一从(也可以是一主多从),其中从不提供服务,仅作为备用
  • 不支持同时处理多个key(如MSET/MGET),因为redis需要把key均匀分布在各个 节点上,并发量很高的情况下同时创建key-value会降低性能并导致不可预测的行 为
  • 支持在线增加、删除节点
  • 客户端可以连接任何一个主节点进行读写

工作机制:

  • 每个sentinel以每秒钟一次的频率向它所知的master,slave以及其他sentinel实例发 送一个 PING 命令
  • 如果一个实例距离最后一次有效回复 PING 命令的时间超过
    down-after-milliseconds 选项所指定的值,则这个实例会被sentinel标记为主观下 线。
  • 如果一个master被标记为主观下线,则正在监视这个master的所有sentinel要以每 秒一次的频率确认master的确进入了主观下线状态
  • 当有足够数量的sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 master的确进入了主观下线状态, 则master会被标记为客观下线
  • 在一般情况下, 每个sentinel会以每 10 秒一次的频率向它已知的所有master,slave 发送 INFO 命令
  • 当master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送 INFO 命令的频率会从 10 秒一次改为 1 秒一次
  • 若没有足够数量的sentinel同意master已经下线,master的客观下线状态就会被移除;若master重新向sentinel的 PING 命令返回有效回复,master的主观下线状就会被移除

节点

  1. 编译安装(请看上一篇文章)

  2. 修改配置文件

    vim /data/redis-5.0.12/conf/6379.conf
    
    port 6379
    bind 0.0.0.0
    protected-mode yes
    daemonize yes
    databases 16
    logfile "/data/redis-5.0.12/logs/redis_6379.log"
    dir /data/redis-5.0.12/data/6379
    #在redis目录生成appendonly.aof文件,将每一次写操作请求都追加到appendonly.aof 文件中
    appendonly yes
    #开启集群
    cluster-enabled  yes
    #集群的配置文件 nodes_{port}.conf的形式
    cluster-config-file  nodes_6379.conf 
    #超时时间 5s够了
    cluster-node-timeout  5000
    requirepass 123456
    masterauth 123456
    maxclients 10000
    maxmemory <bytes>
    maxmemory-samples 5
    maxmemory-policy 策略
    
  3. 配置服务启动文件

    vim /usr/lib/systemd/system/redis6379.service
    
    [Unit]
    Description=redis
    After=network.target
    [Service]
    ExecStart=/etc/init.d/redis_6379 start
    ExecStop=/etc/init.d/redis_6379 stop
    Type=forking
    
    [Install]
    WantedBy=multi-user.target
    
    vim /etc/init.d/redis_6379
    
    $CLIEXEC -h IP地址 -p 端口 -a 密码  shutdown	
    
    systemctl daemon-reload
    ps -ef | grep  redis
    kill -9 21739
    rm -rf /var/run/redis_6379.pid
    systemctl restart redis6379.service
    systemctl enable redis6379.service
    
  4. 查看服务状态

    /etc/init.d/redis_6379 status
    netstat -antupl |grep :6379
    ps  -C redis-server
    
  5. 访问服务

    redis-cli -h 192.168.66.20 -p 6379 -a 123456
    

创建集群

redis-cli -a 123456 --cluster create 192.168.66.24:6379 192.168.66.25:6379 192.168.66.26:6379 192.168.66.27:6379 192.168.66.28:6379 192.168.66.29:6379 --cluster-replicas 1

redis-cli -c -h 192.168.66.24 -p 6379 -a 123456	#-c使用集群的方式登入

检查集群信息

> CLUSTER INFO
#列出节点信息
> CLUSTER NODES

操作

  1. 增加节点

    >CLUSTER MEET ip 6379 (新增的节点会以master加入)
    

    将新增的从节点身份改为新主的slave

    redis-cli -c -h 从ip -p 6379  -a 123456 cluster replicate 主id
    

    列出节点信息

    >CLUSTER NODES
    
  2. 删除节点

    >CLUSTER FORGET节点id
    

    保存配置

    >CLUSTER SAVECONFIG
    
  3. 列出节点信息

    >CLUSTER NODES
    

喜欢的亲可以关注点赞评论哦!以后每天都会更新的哦!本文为小编原创文章;
文章中用到的文件、安装包等可以加小编联系方式获得;
欢迎来交流小编联系方式VX:CXKLittleBrother
进入运维交流群

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

含义小哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值