keepalived+redis+sentinel部署一主多从热备

Keepalived-一主多备原理及实践 Keepalived 原理 keepalived虚拟IP切换的原理如下: 1、正常情况下,用户通过虚拟IP是直接访问到Keepalived-Master的(没有成为Master的就是Backup); 2、成为Master的Keepalived,会每秒向所有的Backup发送VRRP包,通告自己是主,且运行正常; 3、当Master因为网络原因或者是别的原因导致与集群断开之后,Backup会在3.6秒左右(以优先级100为例,计算公式为3 × 1 + 256 × (256 - 100))认定Master宕机; 阅读详情
部署环境
3.127.33.159redis,keepalived
3.127.33.158redis,sentinel,keepalived
3.127.33.172redis,sentinel,keepalived
3.127.33.174sentinel
一、redis主从搭建

目前环境部署为三台redis,一主两从
修改redis.conf

# redis官网下载二进制包并上传到服务器
tar xzf redis-6.2.6.tar.gz -C /home/install/
mv redis-6.2.6 redis
cd redis
make

# 在解压目录下找到redis.conf下进行如下修改
# 注释掉bind,不注释只能本机访问,bind绑定本机的某个网卡,只要通过这个网卡地址来的redis请求都可以访问redis
# bind 127.0.0.1 
# 开启后台启动,默认为no 
daemonize yes 
# 新增密码,此处设置123456 
requirepass 123456

# 现在来安装和后台启动redis
cd src
make install  #安装到指定目录 make install PREFIX=/home/install/redis/bin
# 通过配置文件启动redis,因为我们配置了后台启动,所以本次启动为后台启动
redis-server ../redis.conf
# 根据提示修改内存参数后再启动
sysctl vm.overcommit_memory=1
0,:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2: 表示内核允许分配超过所有物理内存和交换空间总和的内存。

# 配置主从复制
# 注意:老版本使用slaveof指定主机的IP和端口,新版本使用replicaof指定主机的IP和端口
# 在从redis配置文件末尾加上一下信息,使其成为主redis的slave,会自动保持和master的数据保持一致
replicaof 3.127.33.159 6379
# 为了保证数据的一致性,从节点不提供写功能,配置文件中要添加一项`slave-read-only yes`,一般默认配置项会有,不需要更改
slave-read-only yes
# 如果设置了密码的话,需要进行主节点密码认证
#主节点跟从节点都要设置,否则主从切换的时候会提示身份验证错误
masterauth 123456

# 登录redis进行主从数据验证
./src/redis-cli -a 123456 //登录成功

# 或者
./src/redis-cli
# 进入后输入
auth 123456 //登录成功
 
# 验证数据
set master master //主
get master //从,查看数据是否复制过来

protected-mode是redis本身的一个安全层,这个安全层的作用:就是只有【本机】可以访问redis,其他任何都不可以访问redis。这个安全层开启必须满足三个条件,不然安全层处于关闭状态:

(1)protected-mode yes(处于开启)

(2)没有bind指令。原文:The server is not binding explicitly to a set of addresses using the “bind” directive.

(3)没有设置密码。原文:No password is configured。密码的优先级高。

这时redis的保护机制就会开启。开启之后,只有本机才可以访问redis。 如果上面三个条件任何一个不满足,就不会开启保护机制

二、哨兵配置

修改sentinel.conf

# 检查主redis节点的地址和端口信息,2代表至少两个个sentinel节点认 为主节点宕机才算宕机 
sentinel monitor mymaster 3.127.33.159 6379 2 
# 主节点失联30秒后,认为主节点不可达,默认30s 
sentinel down-after-milliseconds mymaster 30000 
# 主节点的密码,如有的话 
sentinel auth-pass mymaster 123456 
# sentinel后台运行 
daemonize yes 
# 解决哨兵之间不能通信,不能进行主结节客观下线的判断,以及failover 它启用的条件,有两个:
# 1) 没有bind IP
# 2) 没有设置访问密码
# 如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis cache,如果从外网访问,则会返回相应的错误信息:
protected-mode no 
# sentinel的端口,默认26379 
port 26379 
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
# sentinel集群都修改完成后启动
./src/redis-sentinel sentinel.conf

主从切换演示
关闭主节点redis-cli stop
两台redis从节点查看redis-cli info replication看是否提升为主节点,继续去重启刚刚停掉的节点
查看从节点配置文件发现其中一台的replicaof配置已经被删除 查看哨兵日志
在这里插入图片描述主从已经切换完毕

部署keepalived

因为主从切换后ip地址也会改变,所以需要个keepalived绑定一个vip来解决ip地址变动的问题
该环境为离线环境,keepalived所需依赖包也较多,所以通过在能联网的服务器上提前下载好各种依赖包然后上传到内网服务器上

yum install --downloadonly --downloaddir=/home/ gcc openssl-devel libnl3-devel net-snmp-devel libmnl libnfnetlink-devel ipvsadm

# 上传至内网服务器中
rpm -Uvh *.rpm --nodeps --force 

cd /home/upload/keepalived
./configure --prefix=/home/utry/utry_workspace/keepalived
make && make install

使用systemctl管理

[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target
Wants=network-online.target
Documentation=man:keepalived(8)
Documentation=man:keepalived.conf(5)
Documentation=man:genhash(1)
Documentation=https://keepalived.org

[Service]
Type=forking
PIDFile=/run/keepalived.pid
KillMode=process
EnvironmentFile=-/home/utry/utry_workspace/keepalived/etc/sysconfig/keepalived
ExecStart=/home/utry/utry_workspace/keepalived/sbin/keepalived  $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

修改配置文件及日志路径
keepalived日志会默认输出到/var/log/messages中,不方便查看
在/home/install/keepalived/etc/sysconfig/keepalived中的KEEPALIVED_OPTIONS修改为:
KEEPALIVED_OPTIONS="-f [配置文件路径] -D -S 2"
修改/etc/rsyslog.conf文件
在这里插入图片描述在下面加上一行
local2.* /home/utry/utry_workspace/keepalived/logs/keepalived.log

重启日志服务
systemctl restart rsyslog
启动keepalived
systemctl start keepalived
systemctl enable keepalived

keepalived主从配置
主配置

! Configuration File for keepalived

global_defs {
   router_id redis-159

# 添加如下内容
   script_user root
   enable_script_security
}

# 检测脚本
vrrp_script check_redis {
    script "/home/install/redis/src/redis-cli -a 123456 -p 6379 info | grep role:master >/dev/null 2>&1"         # 检测脚本
    interval 3
    fall 3
    rise 1
}

vrrp_instance VI_1 {
    state BACKUP            # MASTER
    interface eth0         # 本机网卡名
    virtual_router_id 76   //虚拟路由id  要保持一致
    priority 100             # 权重100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 3.127.33.xxx (本地ip)
    unicast_peer {
        #对象IP  发送vrrp包给备服务器
        3.127.33.xxx
        3.127.33.xxx
    }
    virtual_ipaddress {
        3.127.33.244/24      # 虚拟IP
    }
    # 脚本
    track_script {
        check_redis       # 模块
    }
}

从配置(两台从节点除了ip需要改变其他一致)

! Configuration File for keepalived

global_defs {
   router_id redis-80

# 添加如下内容
   script_user root
   enable_script_security
}

# 检测脚本
vrrp_script check_redis {
    script "/home/install/redis/src/redis-cli -a 123456 -p 6379 info | grep role:master >/dev/null 2>&1"         # 检测脚本
    interval 3
    fall 3
    rise 1
}

vrrp_instance VI_1 {
    state BACKUP            # MASTER
    interface eth0         # 本机网卡名
    virtual_router_id 76   //虚拟路由id  要保持一致
    priority 100             # 权重100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 3.127.33.xxx (本地ip)
    unicast_peer {
        #对象IP  发送vrrp包给备服务器
        3.127.33.xxx
        3.127.33.xxx
    }
    virtual_ipaddress {
        3.127.33.244/24      # 虚拟IP
    }
    # 脚本
    track_script {
        check_redis       # 模块
    }
}

没错,主从权重一样的,实际上不分主从全是BACKUP,并且权重不会改变,让他们通过检测redis的主从状态来进行vip的漂移
注:

  • fall:定义检测失败的最大次数,如设置为3表示当请求失败两次时就认为节点资源故障
  • rise:定义请求成功的次数,如设置为1表示当进行一次请求成功后就认为节点资源恢复正常
  • 检测脚本那里是通过返回一个0或者非0的值来判断进程是否为master节点,为master节点则返回0,非0则判断该节点master已经不在运行,vip漂移到检测master运行的redis主节点上

vip漂移验证
关闭redis的主节点,在从节点提升为主节点后,查看该节点的keepalived日志
在这里插入图片描述检测脚本执行成功,vip成功漂移到该节点,查看原本节点会发现vip已经移除

Spring Cloud 项目部署笔记(MySQL + Keepalived 双主热备 + Redis 主从 Sentinel 模式 + 单节点 Elasticsearch + Logstash) Spring Cloud 项目部署1 部署规划2 部署方案2.1 MySQL 高可用双主热备2.1.1 Master 设置2.1.1.1 配置 server id2.1.1.2 创建同步复制用户2.1.1.3 获取 master binary log 同步复制坐标2.1.1.4 初始数据快照同步2.1.2 Slave 设置2.1.2.1 设置 server id2.1.2.2 设置 slave 的 master 信息2.1.2.3 设置同步复制2.2 Redis 一主一从 + Sentinal2.3 单机 阅读详情

相关推荐

综合项目:Keepalived+Redis+Haproxy 实现主从热备、负载均衡、秒级切换

Keepalived+Redis+Haproxy 群集一、部署 Redis 群集1.编译安装 Redis1)创建群集目录2)编辑配置文件3)复制配置文件到每个实例4)启动 Redis 实例2.配置 Ruby 环境1)安装 Ruby 工具2)使用脚本安装 Redis 群集3)查看群集状态二、部署 Keepalived 实现主从热备、秒级切换1.主调度器配置2.备调度器配置3.编写 Haproxy 状态检测脚本4.开启服务,验证 VIP三、部署 Haproxy 实现负载均衡1.编译安装 Haproxy2.配置

愿许浪尽天涯的博客 5132

基于keepalived+sentinel+redis主从的redis高可用性架构方案

基于keepalived+sentinel+redis主从的redis高可用性架构方案 环境说明 在一般小项目中的我们常用redis主从模式,redis数据库是单进程单线程的架构,使用单机或简单的主从模式,来尽量保证缓存数据库的可持久化,当单节点出问题时,我们可以从节点来获取数据。 而当在规模大的项目或生产环境要求高的时,一般redis高可用性架构。 一般来说,redis高可用性架构有在致三类高可...

Martin201609的博客 931

基于Keepalived实现Redis集群高可用自动故障切换方案

在分布式系统架构中,Redis作为高性能的内存数据库,其高可用性设计至关重要。高可用系统的核心需求在于保障服务的持续稳定运行,即使在节点故障、网络异常等场景下,也能实现无缝切换与数据一致性。Redis在这一背景下,提供了多种高可用架构方案,包括主从复制(Master-Slave)、哨兵机制(Sentinel)以及集群模式(Cluster)。主从复制通过数据同步机制实现读写分离,为高并发场景提供扩展能力;Sentinel机制在此基础上引入自动故障转移能力,提升系统鲁棒性;

weixin_42602368的博客 1142

Redis一主一从Docker方式部署通过keepalived和 sentinel哨兵模式实现高可用

有两台服务器一台是主,master : 172.24.69.180另外一台是从, slave :172.24.69.181vip 地址: 172.24.69.185。

javascript_good的博客 1040

构建Keepalived与Redis&MySQL高可用系统的配置指南

Keepalived是一种类似于layer3/4 swiching的软件,主要用来进行系统HA(High Availability, 高可用)设计。通过虚拟路由器冗余协议(Virtual Router Redundancy Protocol,VRRP)来实现高可用性。它工作在传输层,通过其内置的VRRP协议,可以实现服务的高可用,并且能够进行健康检查和负载均衡等功能。MySQL复制是一种异步数据复制机制,用于实现数据库的主从架构。

weixin_35705784的博客 815

Redis哨兵主从模式+keepalived.docx

Redis哨兵主从模式+keepalived

Redis 高可用 基于Sentinel + keepalived 实现

1 概述redis作为缓存工具,如果仅仅单机,一旦挂掉,将对业务造成严重的影响,因此建议生产环境上部署redis高可用环境,本文将基于Sentinel + keepalived 实现redis的高可用。本文主要介绍实现的步骤和配置文件,不做原理上的介绍注意,redis的Sentinel高可用有一个很关键的点,只有master节点可以写入,其他节点都只能读,不能写,所以,vi...

weixin_34202952的博客 272

AltiumDesigner 09安装过程破解问题 .

首先分享一下破解文件,网上总是下载不到,好不容易下载到了,放在网盘上,有需要的自取。AltiumDesigner 09破解文件。链接:https://pan.baidu.com/s/1ZGvbR_6T51hpcaFbQiMX5w 密码:qwvaAltiumDesigner 09安装安装文件,比较大,包含破解文件:链接:https://pan.baidu.com/s/1mfgragB519jpGfR...

xiaoxiao_rabbit的博客 3万+

Mysql 主-主双机热备和keepalived服务高可用配置

Mysql 主-主双机热备和keepalived服务高可用配置

zhanghua0324的博客 819

绕过卡巴斯基通过RPC控制lsass注入DLL

参考国外的XPN以及3gstudent大佬的文章: https://blog.youkuaiyun.com/xiangshen1990/article/details/104872566 https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0 原理:正常的ssp扩展(dll)可以加载到lsass进程中去,比如kerberos验证都是通...

2ed 3524

内存|内存的概念、内存的作用、内存的物理结构及内存使用

内存是硬件,是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。内存是与CPU沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大。本文简单介绍了内存的概念、作用、物理结构以及使用,内存远不止如此,后续文章会逐步深入讲解。

qq_59938293的博客 2万+

Redis高可用方案(redis主从+keepalived+sentinel)

架构:redis主从+keepalived+sentinel三台机器,两台redis主从,一台配合选举sentinel leader机器。 Master: 192.168.100.135 controller 部署redis+keepalived+sentinel Slave: 192.168.100.136 ...

weixin_33969116的博客 228

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 429

Redis(带认证)+keepalived双机热备部署方案

1. 前言 目前Redis主流的高可用方案主要是Master+Slave+Sentinel(即主从+哨兵)的模式,主要原理是:通过Sentinel(哨兵)集群来检测集群各节点Redis服务的存活状态及完成Redis集群的主从切换。切换完成后,Sentinel调用notification-script参数指定的配置文件,通知DNS服务更改DNS配置,完成Redis master节点的切换。 然而我们现在的应用不支持Sentinel模式,并且代码改起来改动较大,风险也比较大。所以只好舍弃了Master+Slav

qq_36811981的博客 6万+

华为面试手撕真题【字符串压缩】

华为面试手撕真题【字符串压缩】

MISAYAONE的博客 1万+

【知识分享】什么是同轴传输线结构?

同轴传输线的几何形状由中心导体组,嵌在介电材料(Dielectric)中,并且,被连续的外导体所包围,也被称为屏蔽(Shield)。内外导体有相同的几何中心轴,因此得名同轴(Coaxial)。

一只豌豆象的博客 2372

centos7 安装redis_运维必备技能:keepalived+haproxy+redis+sentinel 哨兵高用集群

三台都是centos7.2系统关闭firewalld和selinux注意前端两个服务器的内网网卡都是同一个名称且关闭网卡NetworkManager服务。不然down掉keepalived里面配置的监听网卡,VIP不会漂移到备机上。Redis集群可以实现能实现高可用、读写分离、读负载均衡功能大致原理图如下:Haproxy监控图如下:需要三台服务器搭建此环境。详细信息如下:Keepalived和ha...

weixin_28715081的博客 483

uniapp - 鸿蒙真机运行报错hvigor ERROR: Failed :entry:default@CompileArkTS...,hvigor ERROR: default@CompileAr

uniapp鸿蒙报错> hvigor ERROR: Failed :entry:default@CompileArkTS... hvigor ERROR: default@CompileArkTS watch work[0] failed. 【HarmonyOS】工程编译后报错hvigor ERROR: Failed :entry:default@CompileArkTS,uniAPP鸿蒙开发无法编译运行启动报错,工程编译后报错,运行不起来,删除掉项目entry下的build和.preview缓存文件后重新

🏆 前端领域优质创作者 4790

suse12 redis-sensienl-keepalived双击热备部署

1.     部署环境本次部署环境为suse12,部署方式为离线部署2.     软件版本软件版本为redis-3.0.5,keepalived-1.3.6,依赖包有libopenssl-devel-1.0.1i-18.1.x86_64.rpm,zlib-devel-1.2.8-8.1.x86_64.rpm3.     部署过程部署过程参考,《利用redis-sentinel+keepalived...

zilong230905的专栏 2157

23种设计模式-代理(Proxy)设计模式

软考中级-软件设计师 代理设计模式

片言可决讼,半纸能缚龙 1783

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Redis中sentinel集群的搭建和Jedis测试 图文教程[三]

在前两篇Redis中sentinel集群的搭建和Jedis测试 图文教程[一] 和Redis中sentinel集群的搭建和Jedis测试 图文教程[二] 中分别简述了Redis中sentinel集群的搭建和Java代码的Jedis测试。      这篇主要来简单分析一下Redis-sentinel集群的原理,根据追踪sentinel信息来完成Redis-sentinel集群测试中的详细的原理分析

小地盘的诺克萨斯 3064

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

redis sentinel &集群+haproxy+keepalived

为什么使用nosql?

m0_37749659的博客 1217

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Redis哨兵+keepalived高可用自动部署脚本实战

说明 这是redis sentinel加keepalived的自动部署脚本,redis sentinel负责redis的主从关系切换,keepalived负责整个redis sentinel中master的VIP提供 gitee项目链接:https://gitee.com/jiayu997/Redis-sentinel-autodeployment 支持yum在线安装与rpm包离线安装 支持操作系统 Centos7 64位 安装方法 准备好至少三台服务器, 三台服务器的配置文件一样, 设置好第一台后可以

jiayu的博客 511

基于keepalived、redis sentinel的高可用redis集群

硬件 机器名 IP 作用 master 192.168.0.2 redis的master服务器 slave1 192.168.0.3 redis的slave服务器 slave2 192.168.0.4 redis的slave服务器 route1 192.168.0.5【虚拟IP:192.168.0.7】 keepal

无人境域 5617

利用redis-sentinel+keepalived实现redis高可用

目标、需求: 为上层应用提供高可靠、低延迟、低(无限接近0)数据损失的Redis缓存服务 方案概述: 采用同一网络内的三台主机(可以是物理主机、虚拟机或docker容器),要求三台主机之间都能相互访问,每一台主机上都安装redis-server、redis-sentinel和keepalived。 redis-server负责提供Redis缓存服务,三台主机间的关系是mas

huangyimo的专栏 2730

redis Sentinel 部署以及spring boot集成

Sentinel sentinel(哨兵) 是一种redis的解决方案,可以由多个Sentinel实例组成的Sentinel系统可以监视多个主服务器,以及这些主服务器之下的从服务器,同时如果主服务器下线之后,就会通过推举将从服务器升级为主服务器。 这里不推荐在一个机器上使用docker来搭建一个redis Sentinel系统,只要是考虑到使用docker之后,之后集成到spring boot之后,sentinel得到了一个内网地址,spring boot无法连接 redis 主从 修改主配置文件 po

xichen97的博客 1000
上一篇: 关于nginx的失败重试proxy_next_upstream
下一篇: k8s部署ingress-traefik插件并使用ingressroute配置域名
filtercomp
博客等级 码龄5年 33粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值