LVS+Keepalived:实现高效软负载均衡的利器

news2024/10/6 0:28:40

一、概念

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,它可以通过不同的调度算法和工作模式,将客户端的请求转发给后端的真实服务器。

Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,一般与其他负载均衡技术(如LVS、HAProxy、Nginx)一起工作来达到集群的高可用

二、环境准备

两台 CentOS 7 机器,IP 地址分别为 10.9.2.121和 10.9.2.122。

vip

10.9.2.120

虚拟出来的IP

master

10.9.2.121

master主机IP

backup

10.9.2.122

backup主机IP

三、安装

1、安装 ipvsadm keepalived

在两台机器上,执行以下命令,安装 ipvsadm keepalived 软件包:

yum install -y ipvsadm  keepalived

2、配置keepalived

在master机器上,执行以下命令,配置 Keepalived:

vim /etc/keepalived/keepalived.conf

添加以下内容:

global_defs {
   router_id 1
}
vrrp_instance VI_1 {
    state MASTER
    interface enp0s3
    virtual_router_id 1
    mcast_src_ip 10.9.2.121
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        10.9.2.120
    }
}

在 backup机器上,执行以下命令,配置 Keepalived:

vim /etc/keepalived/keepalived.conf

添加以下内容:

global_defs {
   router_id 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3
    virtual_router_id 1
    mcast_src_ip 10.9.2.122
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        10.9.2.120
    }
}

保存并退出。

参数说明:

global_defs {
     router_id 1  # 定义 VRRP 组的 ID,主备服务器必须相同
 }
  authentication {   # 定义 VRRP 认证类型和密码,主备服务器必须相同
        auth_type PASS
      auth_pass 123456
  }
vrrp_instance VI_1 {
  state MASTER    # 指定该节点的状态,主节点为 MASTER,备节点为 BACKUP
  interface eth0    # 指定VRRP使用的网卡,换成master机器的网卡名称
    virtual_router_id 1  
    mcast_src_ip 10.9.2.121 # 指定 VRRP 使用的组播源 IP 地址
    priority 100  # 指定 VRRP 优先级,优先级越高,该节点成为主节点的概率越大
    advert_int 1  # 指定 VRRP 通告间隔,单位为秒
  virtual_ipaddress {    # 指定 VRRP 虚拟 IP 地址
      10.9.2.120
  }
}

3、启动

在两台机器上,执行以下命令,启动 LVS 和 Keepalived:

systemctl start keepalived
systemctl start ipvsadm

如果systemctl start ipvsadm异常

Active: failed (Result: exit-code) since Fri 2023-09-01 14:31:28 CST; 5min ago

Process: 3618 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=1/FAILURE)

systemctl status ipvsadm.service

journalctl -xe

可以看到/bin/bash: /etc/sysconfig/ipvsadm: No such file or directory

ipvsadm   --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl status ipvsadm.service

4、测试

看看是否能ping通

ping 10.9.2.120

再在master和backup机器上都安装一个nginx或apache httpd

#master
yum install -y httpd
echo "Master" > /var/www/html/index.html
systemctl start httpd

#backup
yum install -y httpd
echo "Backup" > /var/www/html/index.html
systemctl start httpd

在浏览器访问:http://10.9.2.120

master优先级高,10.9.2.120显示的是master。

再来模拟一下故障转移测试

在 10.9.2.121 机器上,执行以下命令,停掉 LVS:

systemctl stop keepalived

如果 LVS 配置正确,Keepalived 会自动将 VIP 切换到 10.9.2.122。

再在浏览器访问:http://10.9.2.120

注意事项

  • LVS 和 Keepalived 的配置文件中,virtual_ipaddress 配置的 IP 地址必须是同一网段的。
  • LVS 和 Keepalived 的配置文件中,priority 配置的值越高,该节点的优先级越高。
  • Keepalived 的配置文件中,advert_int 配置的值越小,该节点发送 VRRP 报文的频率越高

四、相关知识点

1、集群负载均衡网络方案

实现集群负载均衡网络的方案可以分为软件、硬件、云等方面:

软件负载均衡

软件负载均衡是指在现有服务器上安装负载均衡软件来实现负载均衡,其优点是成本低廉、配置简单、灵活性强,适用于中小型集群。常见的软件负载均衡方案包括:

  • DNS轮询:将所有后端服务器的IP地址添加到DNS服务器,并按照轮询的方式返回给客户端,客户端根据返回的IP地址进行访问。
  • Keepalive+LVS:在Linux操作系统上使用Keepalive机制和LVS功能来实现负载均衡。Keepalive机制用于检测后端服务器的状态,ipvs功能用于将客户端请求转发到后端服务器。
  • Keepalive+Nginx+Lua:Nginx是一个高性能的Web服务器,Lua是一个脚本语言。Nginx+Lua负载均衡方案是将Nginx作为负载均衡器,使用Lua脚本来实现负载均衡策略。

硬件负载均衡

硬件负载均衡是指使用专门的负载均衡设备来实现负载均衡,其优点是性能高、功能丰富、可靠性强,适用于大型集群。常见的硬件负载均衡方案包括:

  • F5 Big-IP:F5 Big-IP是F5 Networks公司推出的一款高性能负载均衡设备。
  • A10 Thunder:A10 Thunder是A10 Networks公司推出的一款高性能负载均衡设备。
  • Juniper SRX:Juniper SRX是Juniper Networks公司推出的一款高性能路由器,具有负载均衡功能。

云负载均衡

云负载均衡是指在云平台上使用负载均衡服务来实现负载均衡,其优点是部署简单、弹性伸缩、按需付费,适用于各种规模的集群。常见的云负载均衡方案包括:

  • 阿里云负载均衡:阿里云负载均衡提供多种类型的负载均衡服务,包括传统的四层负载均衡和七层负载均衡。
  • 腾讯云负载均衡:腾讯云负载均衡提供多种类型的负载均衡服务,包括传统的四层负载均衡和七层负载均衡。
  • AWS负载均衡:AWS负载均衡提供多种类型的负载均衡服务,包括传统的四层负载均衡和七层负载均衡。

2、LVS+Keepalived

LVS

LVS(Linux Virtual Server)是 Linux 内核中的软件负载均衡器,可以将流量分发到多个服务器。LVS 可以分为两种模式:

  • NAT 模式:LVS 将客户端的请求转换为新的 IP 地址和端口,然后将请求转发到后端服务器。
  • DR 模式:LVS 将客户端的请求直接转发到后端服务器。

LVS 是基于四层的负载均衡器,可以将流量分发到多个服务器。LVS 的核心是 LVS 转发器,LVS 转发器负责将客户端的请求转发到后端服务器。LVS 转发器可以运行在 Linux 内核中,也可以运行在用户空间。

LVS 的优点

  • 高可用性:LVS 可以实现主备切换,确保服务的持续可用性。
  • 灵活性:LVS 支持多种负载均衡算法,可以满足不同场景的需求。
  • 性能:LVS 基于 Linux 内核,具有良好的性能。

Keepalived

Keepalived 是一个基于 VRRP 协议的软件,用于监控 LVS 的健康状况。VRRP 协议是一种虚拟路由冗余协议,用于在多个路由器之间实现主备切换。

Keepalived 的主要功能是监控 LVS 主节点的状态,如果主节点出现故障,Keepalived 会自动将 LVS 的 VIP 切换到备节点。

Keepalived 的优点

  • 高可用性:Keepalived 可以实现 LVS 的主备切换,确保服务的持续可用性。
  • 灵活性:Keepalived 支持多种 VRRP 配置,可以满足不同场景的需求。
  • 性能:Keepalived 基于 Linux 内核,具有良好的性能。


如果文章对你有帮助,欢迎关注+点赞!!!

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

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

相关文章

【遥遥领先】Eolink IDEA 插件:零代码入侵,自动生成接口

省流版&#xff1a; Eolink 有 IDEA 插件吗&#xff1f; 有&#xff0c;而且遥遥领先&#xff01;我们在一年半之前就发布了&#xff0c;而且功能更丰富&#xff01; IDEA 插件市场搜索“Eolink Apikit”即可安装使用。 &#x1f680;使用指引&#xff1a;Eolink - IntelliJ ID…

【注射论文基因,那些年不为人知的AI工具】

我们都知道写论文有很多前期准备工作&#xff0c;例如<任务书>、<文献综述>等等&#xff0c;那么我们能够用什么工具最大限度的提高完成效率的同时还能保证质量呢&#xff0c;让我们接着往下看&#x1f447; 1.文献快速阅读-iTextMaster 文章主题确定了&#xff0…

最强大的iOS应用源码保护工具:Ipa Guard,保护你的商业机密代码

前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术&#xff0c;可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护&#xff0c;防止应用程序中的代码及资源文件被恶意篡改。Ipa Guard通过修改 ipa 文件中的…

知识储备--基础算法篇-贪心算法

1.贪心算法 1.1贪心算法与背包问题的区别 贪心算法能够通过局部最优去推出全局最优&#xff0c;而背包问题不行&#xff0c;需要用动态规划的方法来解决。 1.2套路 贪心算法没有套路&#xff01;&#xff01; 主要想清楚怎么得到该阶段的局部最优解&#xff0c;如何通过局…

Java学习笔记②

java反射 值的修改 public等属性的值的修改很简单。但private&#xff0c;final的值修改有改变。 比如修改下类的4个属性。 class privateClass {private String privateField "private value";private final String finalPrivateField "final private va…

C语言每日一题(9):跳水比赛猜名次

文章主题&#xff1a;跳水比赛猜名次&#x1f525;所属专栏&#xff1a;C语言每日一题&#x1f4d7;作者简介&#xff1a;每天不定时更新C语言的小白一枚&#xff0c;记录分享自己每天的所思所想&#x1f604;&#x1f3b6;个人主页&#xff1a;[₽]的个人主页&#x1f3c4;&am…

飞书与企业微信的异同

云文档 飞书的云文档会自动用游览器打开&#xff0c;不会直接在PC应用中打开&#xff08;移动端能在应用中打开&#xff09;。 飞书云文档能够插入视频、流程图、问卷等等 聊天消息交互 钉钉也有类似的功能&#xff0c;可以针对消息进行点赞等回复 钉钉的消息回复还有【收到…

触觉智能 PurPle Pi OH(OpenHarmony)开发板

资料汇总 内容预览 产品介绍 PurPle-Pi OH 规格书​​​​​​ 系统编译 Purple-Pi-OH Linux SDK编译 Purple-Pi-OH OHOS SDK编译 使用手册 Purple-Pi-OH Ubuntu系统使用手册 常见FAQ 常见问题 官网 官网地址 Purple Pi OH介绍 Purple Pi OH作为一款兼容树莓派的开…

Springcloud实战之自研分布式id生成器

一&#xff0c;背景 日常开发中&#xff0c;我们需要对系统中的各种数据使用 ID 唯一表示&#xff0c;比如用户 ID 对应且仅对应一个人&#xff0c;商品 ID 对应且仅对应一件商品&#xff0c;订单 ID 对应且仅对应 一个订单。我们现实生活中也有各种 ID &#xff0c;比如身…

【并联有源电力滤波器】基于pq理论的并联有源电力滤波器(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

顾曼宁(顾曼)参加蚂蚁生态全球CEO大会:相信的力量,共筑未来

今天,2023年9月15日,在湖州太湖,蚂蚁生态全球的CEO们举行了一场引人注目的盛会。 时隔三年,这些顶尖的商业领袖们再次齐聚一堂,分享智慧、交流想法,这是一个充满激情和共鸣的时刻,也是一次充满感慨和思考的聚会。 在这场盛会中,顾曼宁(顾曼)特别感谢了蚂蚁集团董事长Eric的精彩…

51单片机自行车码表 速度里程计霍尔测速模拟电机设计

一、系统方案 本设计采用51单片机作为主控器&#xff0c;霍尔测速&#xff0c;数码管显示速度及里程数。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 void init() { IT01; //INT0负跳变触发 TMOD0x01;//定时器工作于方式1 TH00x3c; //5…

[Unity开发小技巧]快速切换打包平台

如果大家有什么需要实现的功能,可以加入我的知识星球向我提问,我会尽量实现并提供解答,也可以加入我的开发交流群进行交流 视频地址:Unity快速切换平台的解决方案知识星球地址:[Unity开发小技巧]快速切换打包平台 今天给大家分享的是一个开发小技巧,在开发多个端的项目…

字节8年经验之谈 —— Jmeter自动化性能测试常见问题!

一、request 请求超时设置 timeout 超时时间是可以手动设置的&#xff0c;新建一个 http 请求&#xff0c;在“高级”设置中找到“超时”设置&#xff0c;设置连接、响应时间为2000ms。 1. 请求连接超时&#xff0c;连不上服务器。 现象&#xff1a; Jmeter表现形式为&#x…

Chrome更新

前端开发在调试过程中&#xff0c;经常需要各种不同的数据来反复调试&#xff0c;所以我们前端程序员会经常在脚手架中集成 mock 或者通过代理的方式去hack的实现&#xff0c;但是现在再也不用这么麻烦了&#xff0c;Chrome 117 原生就支持了&#xff0c;而且体验相当丝滑。 他…

优维产品最佳实践:主机合规性检查

我们常常会感到这样的困惑&#xff0c;为什么这么多的无效主机记录&#xff0c;为什么这些主机很多信息空白&#xff0c;当许多人一起维护主机信息时&#xff0c;常常会出现信息错漏的情况。主机是运维最重要最基本的CMDB信息&#xff0c;而「合规性检查」为我们提供了更高效便…

【Ubuntu18.04】Autoware.ai安装

Autoware.ai安装 引言1 ROS安装2 Ubuntu18.04安装Qt5.14.23 安装GCC、G4 Autoware.ai-1.14.0安装与编译4.1 源码的编译4.1.1 python2.7环境4.1,2 针对Ubuntu 18.04 / Melodic的依赖包安装4.1.3 先安装一些缺的ros依赖4.1.4 安装eigen3.3.74.1.5 安装opencv 3.4.164.1.6 编译 4.…

crypto:看我回旋踢

题目 下载压缩包后解压可得到提示文本 经过观察&#xff0c;synt{}这个提示与flag{}形式很像 由题目名中的回旋可以推测为凯撒密码&#xff0c;由凯撒密码的定义可知&#xff0c;需要先推出移位数&#xff0c;s->f数13次&#xff0c;因此移位数为13&#xff0c;解码可得

uniapp ssr发行后一直Hydration completed but contains mismatches Cannot find module

最开始我用前端网页托管的地址访问一直是 Hydration completed but contains mismatches 解决方案 要从云函数的地址访问项目。 先绑定域名&#xff0c;否则用uniapp自带地址访问一直是下载文件 设置路径 最后效果 uniapp ssr 云函数访问 MODULE_NOT_FOUND:Cannot fin…

浅谈! 几种 SpringBoot/SpringCloud 开源项目

简介 SpringBoot 是一个非常流行的 Java 框架&#xff0c;它可以帮助开发者快速构建应用程序。他不仅继承了 Spring 框架原有的优秀特性&#xff0c;而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。 最近&#xff0c;小编蹲点各大开源网站、社区等&…