部署LVS+Keepalived高可用集群

news2024/9/22 3:47:21

目录

一、keepalived概述

1.1管理LVS负载均衡软件

1.2VRRP(Virtual Router Redundancy Protocol) 原理

二、keepalived服务的重要功能

2.1自动切换(failover)

2.2健康检查(health checking)

2.3高可用(HA)

三、L4和L7负载均衡的区别

四、keepalive故障自动切换

4.1抢占与非抢占

五、keeplived体系主要模块及作用

5.1core模块

5.2check模块

5.3VRRP模块

六、Keepalived工作原理

6.1工作原理

6.2工作原理图

七、部署LVS+Keepalived高可用集群

7. 1.配置负载调度器(主、备相同) (192.168.14.101、192.168.14.102)

5.2.配置节点服务器

 5.3测试验证

5.3.1在客户端访问http://192.168.14.180

5.3.2 模拟破坏master服务器


一、keepalived概述

keepalived是一个基于VRRP(Virtual Router Redundancy Protocol)协议的守护程序,用于实现高可用性的服务和故障转移。它可用于在一组服务器中选择一个主服务器来处理客户端请求,并在主服务器发生故障时自动将工作切换到备用服务器。

1.1管理LVS负载均衡软件

keepalived可以通过读取自身的配置文件,实现通过更高层次的接口,直接管理LVS配置以及服务的启动、停止功能,这会使LVS应用更简单。

1.2VRRP(Virtual Router Redundancy Protocol) 原理

VRRP  是一种网络协议,它提供了虚拟路由器冗余机制,使得在一组路由器中的一个可以作为主要路由器,而其他路由器则处于备份状态。

二、keepalived服务的重要功能

2.1自动切换(failover)

keepalived可以根据事先设定好的优先级规则和负载均衡规则,在主备服务器之间进行IP地址的漂移,实现自动切换和高可用性。

2.2健康检查(health checking)

keepalived可以定时对服务器进行健康检查,包括检测服务器的存活状态、服务的响应时间等,同时也可以自定义检测规则并进行报警。

2.3高可用(HA)

keepalived可以监测系统资源的可用性,如网络连接、服务器负载等,并根据事先设置的规则进行故障转移,确保服务的高可用性。

三、L4和L7负载均衡的区别

L4通过TCP协议建立连接之后的IP:port接收请求和基于IP:port端口进行转发

L7通过TCP协议建立三次握手,通过HTTP协议传输数据,七层负载均衡器,需要根据HTTP协议传输过来的请求,进行对应的跳转,这个跳转是先基于TCP协议的传输(IP:port)+ HTTP的传输。

如果是四层,协议只有TCP就是IP:port的转发

如果是七层,TCP和三次握手,长连接 + HTTP规范的传输数据

四、keepalive故障自动切换

① 两台同时安装好keepalived并且启动服务

当启动的时候master主机获得所有资源并且对用户提供服务(请求)当角色Backup的主机作为master热备,当master出现故障,Backup主机自动接管master主机所有工作

② 当master主机故障修复后,就会自动接管回它原来的所有工作,同时Backup主机则释放原master主机的所有工作,此时两台主机恢复到初始角色以及工作状态

4.1抢占与非抢占

抢占:master恢复后,将VIP从Backup节点中抢占过来,回复自己master工作

非抢占:master恢复后,不抢占Backup目前的状态,Backup升级为master继续工作

五、keeplived体系主要模块及作用

5.1core模块

为keepalived的核心,负责进程启动,维护全局配置文件,加载和解析

5.2check模块

负责健康检查,常见的检查方式,比如端口URL

5.3VRRP模块

实现VRRP协议

六、Keepalived工作原理

6.1工作原理

1. keepalived在每台服务器上运行,每个服务器都有一个虚拟IP地址。
2. 在服务器集群中,keepalived通过VRRP协议通信并选举出一个主服务器和若干备用服务器。
3. 主服务器接收并处理来自客户端的请求,备用服务器处于待命状态。
4. keepalived通过检测主服务器的健康状态(如ping测试、端口检测等),可以快速发现主服务器的故障。
5. 一旦主服务器故障,keepalived会自动将工作切换到备用服务器,备用服务器接管主服务器的虚拟IP地址。
6. 备用服务器成为新的主服务器,继续处理客户端请求。
7. 当主服务器恢复正常时,keepalived会将工作切换回主服务器,原主服务器变成备用服务器。

6.2工作原理图

七、部署LVS+Keepalived高可用集群

主DR 服务器:ens33(192.168.14.101) ipvsadm 、keepalived(热备) 虚拟IP:192.168.14.180 网卡 ens33:0

备DR 服务器:ens33(192.168.14.102) ipvsadm 、keepalived 虚拟IP:192.168.14.180网卡 ens33:0

Web 服务器1:ens33 192.168.14.103 lo:0(VIP)192.168.14.180

Web 服务器2:ens33 192.168.14.17 lo:0(VIP)192.168.14.180

vip:192.168.14.188

客户端:192.168.14.100

7. 1.配置负载调度器(主、备相同) (192.168.14.101、192.168.14.102)

systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
	#vrrp_strict
}

vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
	#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.14.180
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.14.180 80 {
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 50			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.14.103 80 {
        weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}

	real_server 192.168.14.104 80 {		#添加第二个 Web节点的地址、端口
	    weight 1
	    TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}

##删除后面多余的配置##
}


192.168.14.101和192.168.105都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255

重启网卡 systemctl restart network
ifup  ens33:0 


systemctl start keepalived
ip addr						#查看虚拟网卡vip


(2)启动 ipvsadm 服务
--192.168.14.101---

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.14.180:80 -s rr
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.103:80 -g
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.104:80 -g


ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.14.102---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.14.180:80 -s rr
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.103:80 -g
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.104:80 -g


ipvsadm -ln

(3)调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

5.2.配置节点服务器

systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

--192.168.14.103---
echo 'this is zkr web!' > /var/www/html/index.html

--192.168.14.104---
echo 'this is benet web!' > /var/www/html/index.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.14.180
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.14.180 dev lo:0

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p

 5.3测试验证

5.3.1在客户端访问http://192.168.14.180

5.3.2 模拟破坏master服务器

 这时,虚拟ip会漂移到backup服务器,使服务正常运行

主服务器

 backup服务器

 主服务器修好后,虚拟ip会再漂移到master服务器

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度神经网络剪枝算法基础理论

非结构化剪枝可获得更高的剪枝率与精度,但是其非结构化特征带来的随机连接使得往往需要专门的软、硬件设计来支持其推理加速,而在现有的边缘硬件上难以满足其应用条件。鉴于此,目前在剪枝领域的研究多集中在结构化剪枝上,如图1.11…

RabbitMQ系列(22)--RabbitMQ优先级队列

前言:在购物系统中有一个订单催付的场景,如果客户在购物系统下单后在设定的时间内未付款那么就会给客户推送一条短信提醒,这是一个比较简单的功能,但是,商家对我们来说,肯定是要区分大客户和小客户的&#…

Xshell7/Xftp7 解决强制更新问题:要继续使用此程序,您必须应用最新的更新或使用最新版本

文章目录 一、背景二、解决方案方案一:重新安装(推荐)方案二:修改nslicense.dll文件(不推荐)方案三:修改系统时间(可选)Xshell.batXftp.bat 三、总结 一、背景 Xshell7/…

音频编码流程 ----- PCM编码为AAC格式

文章目录 1.音频编码流程2.编码函数API含义解释3.音频编码实战Demo PCM转AAC格式 1.音频编码流程 2.编码函数API含义解释 av_frame_make_writable 确保帧数据可写,尽可能避免数据复制.如果帧可写,则不执行任何操作,如果不可写,则…

ssm整合shiro安全框架 前后端分离项目

上一篇文章我们使用ssm整合了shiro安全框架前后端没有进行分离 本篇文章在上一章的项目基础上进行前后端代码分离操作 一、根据账号和密码登录后前后端代码分离🍉 (1)定义一个统一的json类 统一返回的格式🥝 package com.lzq.vo;import lombok.AllArg…

免费开源 | 基于SpringBoot的博客系统

介绍 基于springboot后端架构,websocket实现私信,前端采用thymeleafbootstraplayuiRedis 注册使用邮箱验证注册,且验证码存在redis中,所以需要有redis环境 软件架构 springbootwebsocketthymeleafbootstraplayuiRedismysql 8.…

设计模式--代理设计模式

🎉🎉🎉写在前面: 博主主页:🌹🌹🌹戳一戳,欢迎大佬指点! 目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个…

C++之std::function和lambda表达式回调函数(一百五十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

新版本FasterTransformer的FUSED_MHA

关于 UNFUSED_PADDED_MHA VS FUSED_MHA FUSED_MHA用了另一种kernel的执行方法(和添加链接描述相同,将在下一个section说明)UNFUSED_PADDED 的 KERNELS执行代码在 src/fastertransformer/kernels/unfused_attention_kernels.cu enum class AttentionType {UNFUSED_MHA,UNFUSED…

C#,中国福利彩票《刮刮乐》的数学算法(01)——幸运123

彩票名称:幸运123面值:20元/张最高奖:100万(人民币)全套款式:2款玩法介绍: 一份好运,二倍快乐,三重惊喜。福彩刮刮乐新游戏“幸运123”,红色的票面上点缀着礼…

基于simulink使用同步图像跟踪白板上的标记(附源码)

一、前言 此示例演示如何使用Simulink基于图像跟踪白板上的标记。 二、模型 示例模型包含模型引用层次结构。每个模型都有助于图像处理算法。 ex_tracking_marker- 跟踪输入视频中的标记的顶级模型。此模型使用视频查看器块呈现输出视频,并将输出帧记录在工作区变…

Unity桌面弹球小游戏Finger Soccer Game Kit 1.1

按住鼠标左键发射打球 还可以开启双人模式来玩 地址:https://download.csdn.net/download/Highning0007/88020441

《分布式中间件技术实战:Java版》学习笔记(三):Redis实现点赞、取消赞功能

用户在发布内容(包括博客、想法、日记等等)时,后台数据入库后,要往Redis的有序集合添加一条分数为0的记录。这个有序集合是用来对内容点赞量做排序的。同时,可以记录用户操作日志。 Override public String insertArt…

C++常用库函数 4.数学函数

函数名&#xff1a;abs 函数原型&#xff1a;int abs(int n) ; 参数 in 需要求绝对值的整数。 所需头文件&#xff1a;<cstdlib>或<cmath> 功能和返回值&#xff1a;返回 n 的绝对值&#xff1b;没有错误返回函数名&#xff1a;acos 函数原型&#xff1a;doubl…

Cocos Creator 打包 Android 原生,如何配置构建环境?关键就一点

前段时间&#xff0c;有好几位老铁留言 Cocos Creator 打包 Android 原生出现问题&#xff1a;一种是构建失败&#xff0c;一种是运行起来报错&#xff01; 其实&#xff0c;我也是有好长一段时间没有碰过 Android 原生了&#xff0c;而且我这台电脑&#xff0c;环境都没有配置…

idea创建web项目没有jsp选项,不识别jsp,没有tomcat选项

如果你的idea的web项目中没有jsp选项 同时也不识别jsp 那么建议你检查一下你的idea是否为社区版 如果是社区版那么没有jsp的问题无法解决&#xff0c;这只是无法识别&#xff0c;但是语句对的可以正常运行 解决这个问题建议换个idea 至于tomcat&#xff0c; 在plugins中搜s…

axios的学习

axios是基于promise对ajax的一种封装 //将省份信息打印到网页上 <p class"my-p"></p> <script src"https://unpkg.com/axios/dist/axios.min.js"></script> <script>axios({url:http://hmajax.itheima.net/api/province}).…

【PCIE】hot-reset和link disable

Hot reset 规则 如果上游伪端口&#xff08;Pseudo Port&#xff09;的任何一个通道连续接收到两个带有热复位位设置为1b、禁用链路位和回环位设置为0b的TS1有序集合&#xff0c;并且两个伪端口上的任何一个通道&#xff08;接收到TS1有序集合&#xff09;要么收到EIOS&#xf…

java方法的覆盖(Overriding )和隐藏(Hiding)

Java方法的覆盖&#xff08;Overriding &#xff09;针对的是实例方法&#xff08;即非静态方法&#xff09;&#xff0c;而方法的隐藏&#xff08;Hiding&#xff09;针对的是类方法&#xff08;即静态方法&#xff09;。 方法的覆盖和隐藏指的是子类对从父类继承的方法进行重…

基于simulink基于颜色分割方法跟踪人员的面部和手部(附源码)

一、前言 此示例演示如何使用基于颜色的分割方法跟踪人员的面部和手部。 二、模型 下图显示了颜色分割示例模型&#xff1a; 三、颜色分割结果 为了为示例创建准确的颜色模型&#xff0c;处理了许多包含肤色样本的图像&#xff0c;以计算 Cb 和 Cr 颜色通道的均值 &#xf…