你必须会的LVS高可用负载均衡方案

news/2025/1/12 0:39:56/文章来源:https://www.cnblogs.com/o-O-oO/p/18666417

前言

在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服务自身也可能出现故障,因此需要引入其他的软件来实现负载均衡服务的高可用。本文就介绍了一种基于 LVS+Keepalived 的方式,来实现高可用 Web 集群。

LVS 与 Keepalived

LVS 是一种预装在 Linux 系统中,基于四层、具有强大性能的反向代理服务器。ipvsadm 是 LVS 的命令行管理工具。

LVS 特点是:

1、首先它是基于 4 层的网络协议的,抗负载能力强,对于服务器的硬件要求除了网卡外,其他没有太多要求;

2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,大大减少了人为出错的几率;

3、应用范围比较广,不仅仅对 web 服务做负载均衡,还可以对其他应用(mysql)做负载均衡;

4、LVS 架构中存在一个虚拟 IP 的概念,需要向 IDC 多申请一个 IP 来做虚拟 IP。

Keepalived 是一个基于 VRRP 协议来实现的服务高可用方案,可以利用其来避免 IP 单点故障,一般与其它负载均衡技术(如 LVS 、HAProxy 、Nginx)一起工作来达到集群的高可用。Keepalived 是 LVS 的扩展项目, 因此它们之间具备良好的兼容性,可直接通过 Keepalived 的配置文件来配置 LVS。

LVS 的工作原理可见参考文献

关于 LVS 和 Keepalived 详细的结构和原理,以及 LVS 和我们常用的 LB 软件 Nginx 的异同,可以阅读末尾提供的参考文献。接下来将介绍如何部署一个高可用的负载均衡集群。

相关术语

    LB (Load Balancer 负载均衡)HA (High Available 高可用)Failover (失败切换)Cluster (集群)LVS (Linux Virtual Server Linux 虚拟服务器)DS (Director Server),指的是前端负载均衡器节点RS (Real Server),后端真实的工作服务器VIP (Virtual IP),虚拟的 IP 地址,向外部直接面向用户请求,作为用户请求的目标的 IP 地址DIP (Director IP),主要用于和内部主机通讯的 IP 地址RIP (Real Server IP),后端服务器的 IP 地址CIP (Client IP),访问客户端的 IP 地址

测试环境

软件环境:CentOS7、Keepalived1.3.5、ipvsadm1.27

DS1(MASTER):172.17.13.120

DS1(BACKUP):172.17.13.123

RS1:172.17.13.142:80 Nginx

RS1:172.17.13.173:80 Nginx

VIP:172.17.13.252

|+----------------+-----------------+| |
172.17.13.120|---- VIP:172.17.13.252 ----|172.17.13.123+-------+--------+ +--------+-------+| DS1 | | DS2 || LVS+Keepalived | | LVS+Keepalived |+-------+--------+ +--------+-------+| |+----------------+-----------------+|+------------+ | +------------+| RS1 |172.17.13.142 |172.17.13.173| RS2 || Web Server +--------------+---------------+ Web Server |+------------+ +------------+

集群的架构图如上图所示。DS1、DS2 为两个 LB 节点,RS1、RS2 为两个真实的服务节点,通过一个虚拟的 IP 地址对外提供服务。

最终我们要达到的目标为:

Client 通过 VIP 访问服务能够将请求根据配置的规则进行分发(LB)当 MATSER 的 LB 节点故障时,自动切换到 BACKUP 的 LB 节点上,保证服务正常访问;MASTER 恢复后,再次作为主 LB 负载节点当某个 RS 节点故障时,自动剔除该节点;恢复后,再次加入集群

详细配置流程

安装相关软件

[root@localhost ~]# yum install ipvsadm keepalived -y

配置 Keepalived

1、 DS1(MASTER) 节点

[root@localhost ~]# vi /etc/keepalived/keepalived.conf! Configuration Filefor keepalived
global_defs {router_id LVS_DEVEL
}vrrp_instance VI_1 {state MASTER# 两个 DS,一个为 MASTER 一个为 BACKUPinterface enp1s0# 当前 IP 对应的网络接口,通过 ifconfig 查询virtual_router_id 62# 虚拟路由 ID(0-255),在一个 VRRP 实例中主备服务器 ID 必须一样priority 200# 优先级值设定:MASTER 要比 BACKUP 的值大advert_int 1# 通告时间间隔:单位秒,主备要一致authentication {# 认证机制,主从节点保持一致即可auth_type PASSauth_pass 1111}virtual_ipaddress {172.17.13.252# VIP,可配置多个}
}# LB 配置
virtual_server 172.17.13.252 80 {delay_loop 3# 设置健康状态检查时间lb_algo rr# 调度算法,这里用了 rr 轮询算法lb_kind DR# 这里测试用了 Direct Route 模式persistence_timeout 50# 持久连接超时时间protocol TCPreal_server 172.17.13.173 80 {weight 1TCP_CHECK {connect_timeout 10   retry 3      # 旧版本为 nb_get_retrydelay_before_retry 3   connect_port 80}}real_server 172.17.13.142 80 {weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 3connect_port 80}}
}

2、 DS2(BACKUP) 节点

复制之前的配置文件,修改 vrrp_instance VI_1 中的 state 为 BACKUP。

配置完成后,分别重启 Keepalived 服务。

[root@localhost ~]# systemctl restart keepalived

配置 RS

RS 配置主要分两部分,一部分是 web 服务,另一部分是网络转发配置。

web 服务部署不多展开了,根据实际情况来,可以是 Tomcat 也可以是 Nginx,只要能通过 ip:port 能访问到即可。

在网络转发配置上,LVS 支持多种通信模型(NAT、DR、TUN),本文采用 DR 模型来进行通信,大致的流程如下图所示。请求数据包从到达 LB 后,LVS 会将这个数据包的 MAC 地址改成轮询到的 RS 的 MAC 地址,并丢给交换机;RS 收到后进行处理并从网卡的 lo 端口发送出去,响应报文到达交换机后直接转发给 Client。

因此,我们需要在 RS 的网卡上配置 lo 为 VIP。配置脚本如下

#!/bin/bash
SNS_VIP=172.17.13.252
case "$1" in
start)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;
stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;
*)echo "Usage: $0 {start|stop}"exit 1
esac
exit 0

本地创建完后,并执行。

[root@localhost ~]# chmod a+x lvs-web.sh
[root@localhost ~]# ./lvs-web.sh start

配置完成后,通过 VIP 就可以访问到 RS 上的服务了。

HA 测试

配置完双机热备后,我们就可以测试下,节点发生故障后以及 LB 切换失败后,能否保证服务的 HA。

在 LB 的主节点上输入 ip a,可以看到 VIP 目前已经正确配置在网卡上。

输入 watch ipvsadm -Ln --stats 可实时看到负载均衡的结果,正常。

接下面我们试着访问一下 VIP。


[root@localhost ~]# while true ; do curl 172.17.13.252; sleep 1;done

看到服务可正常轮询。

此时手动停止一个 RS,再次访问 VIP,LVS 会自动剔除无法访问的服务,重启后,服务会被自动添加。

如果此时,手动停止 MASTER 上的 Keepalived,模拟 LB MASTER 节点挂了,VIP 会自动飘到 BACKUP LB 上。

此时,如果重启 MASTER 后,VIP 又会飘回去。MASTER 的优先级高于 BACKUP,从而实现 HA。

总结

本文介绍了使用 LVS+Keepalived 来实现高可用负载均衡,这能使得我们的服务能够更加的稳定。Keepalived 默认是运行在 LVS 之上的,有较好的兼容性,当然我们也可以使用户 Nginx 作为 LB 的软件,可根据业务和两者的异同进行选择。

链接:https://www.cnblogs.com/Sinte-Beuve/p/13392747.html

(版权归原作者所有,侵删)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【搭建监控系统】搭建prometheus+grafana监控系统抓取Linux主机系统资源数据

Prometheus 和 Grafana 是两个非常流行的开源工具,通常结合使用来实现监控、可视化和告警功能。 它们在现代 DevOps 和云原生环境中被广泛使用。 1、Prometheus 定义: Prometheus 是一个开源的系统监控和告警工具包,最初由 SoundCloud 开发,现在是 CNCF(云原生计算基金会)…

基于AI大模型,搭建一个私有知识数据问答微信公众号。

背景: 很多人找我朋友要店铺的资料(比如手机号,地址,店长名字等),每次打电话过来,企业微信发消息过来问,太头疼了。自己根本有没有休息时间。所以找我问问要怎么弄一个机器人。那么需求就变成:需要一个ai机器人,能回答平常的问题,并且能把店铺资料的excel表内容也能…

《CPython Internals》阅读笔记:p96-p96

《CPython Internals》学习第 6 天,p96-p96 总结,总计 1 页。 一、技术总结 1.parser-tokenizer p92, Creating a concrete syntax tree using a parser-tokenizer, or lexer. p96, CPython has a parser-tokenizer module, written in C. 当做这在 92 页提到 parser-token…

数字孪生可视化在各个行业的应用场景

数字孪生技术,作为新一代信息技术的集大成者,正在深刻改变着我们对物理世界的认知和管理方式。本文将探讨数字孪生可视化在不同行业的应用场景,以及它们如何赋能行业数字化转型。 1. 智慧城市与交通在智慧城市领域,数字孪生技术通过整合城市全要素数据,实现城市全状态的可…

【WSL使用】遇到问题:\\wsl.localhost无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查 明你是否有访问权限。 系统资源不足,无法完成请求的服务。

目录📝问题描述🎯解决方案🔎原理分析1. 问题本质分析2. 技术原理解析3. 解决方案工作原理4. 深层技术说明5. 最佳实践建议总结参考文章 📝问题描述 文件资源管理器中点击「Linux」快捷方式报错: \\wsl.localhost无法访问。你可能没有权限使用网络资源。请与这台服务器…

【企业邮箱】教你免费搭建企业邮箱(Gmail+Resend+Cloudflare)

本文介绍如何使用Gmail+Resend+Cloudflare搭建免费的企业邮箱,不仅支持接收企业域名邮件,同时支持发送企业域名邮件。 Gmail是Google提供的免费邮件服务;Resend是一个为开发者提供邮件服务的平台,专注于提高邮件送达率和开发者体验,它的免费计划每天可以免费发送100封邮件…

EverEdit扩展脚本 :在当前文件目录下新建同类型文件

1 扩展脚本:在当前文件目录下新建同类型文件 1.1 应用场景用户在进行编程语言学习时,经常做完一个小练习后,又需要新建一个文件,在新建文件的时候,不但要选择文件类型,还要在保存时逐级寻找保存目录,不胜其烦!  有没有一种新建文件方式,直接在正在编辑的文件所在目录…

《安全测试指南》——身份管理测试【学习笔记】

【身份管理测试】 1. 角色定义测试(OTG-IDENT-001) 测试方法:即纵向越权。 2.用户注册流程测试(OTG-IDENT-002)(括号内容为个人理解) 测试方法: 1)验证用户注册的身份要求与业务和安全要求一致 是否任何人都能注册访问?(是否需要内部人员或是特定证件才可注册)是否…

【pcap文件】TCP重传与重叠碎片

#pcap文件 网络流量数据包捕获是网络安全领域的重要部分,而pcap文件则是这一过程的常见载体。为了深入解析pcap文件中潜在的可疑网络流量,我们需要运用强大的网络安全威胁评估与审计工具。这些工具能够帮助我们捕捉、记录、检测和诊断网络中的数据传输问题,及时发现异常活动…

【pcap文件】ARP中毒

#pcap文件 网络流量数据包捕获是网络安全领域的重要部分,而pcap文件则是这一过程的常见载体。为了深入解析pcap文件中潜在的可疑网络流量,我们需要运用强大的网络安全威胁评估与审计工具。这些工具能够帮助我们捕捉、记录、检测和诊断网络中的数据传输问题,及时发现异常活动…

【pcap文件】TTL过期攻击

#pcap文件 网络流量数据包捕获是网络安全领域的重要部分,而pcap文件则是这一过程的常见载体。为了深入解析pcap文件中潜在的可疑网络流量,我们需要运用强大的网络安全威胁评估与审计工具。这些工具能够帮助我们捕捉、记录、检测和诊断网络中的数据传输问题,及时发现异常活动…

《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理

《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理@目录2.Docker安装2.1前提说明2.2Docker的基本组成2.3Docker平台架构图解(架构版)2.3.1Docker平台架构图解(入门版)2.3.2Do…