【高可用架构】Haproxy 和 Keepalived 的区别
Haproxy 和 Keepalived 的区别
- 1.负载均衡器介绍
- 2.Haproxy 和 Keepalived 的基本概念和特点
- 2.1 Haproxy
- 2.2 Keepalived
- 3.Haproxy 和 Keepalived 的区别
- 3.1 功能上的区别
- 3.2 架构上的区别
- 3.3 配置上的区别
- 4.总结
1.负载均衡器介绍
负载均衡器是一种解决高并发和高可用的常用的网络设备,它可以将流量分摊到多台服务器上,实现负载均衡,提高业务处理效率和稳定性。在负载均衡器的选择上,Haproxy 和 Keepalived 是两个常用的开源负载均衡器。
2.Haproxy 和 Keepalived 的基本概念和特点
2.1 Haproxy
Haproxy 是一种高性能、轻量级、可靠的负载均衡器软件,主要用于在多台服务器上平衡 HTTP、HTTPS、TCP 和 UDP 协议的负载。它具有配置灵活、轻量级、占用资源少、支持远多于其他负载均衡软件的并发连接数等特点。Haproxy 完全可以负载大量的请求,并提供负载均衡处理与优秀的 Fail-over 机制。
Haproxy 的优点:
- ✅ 可以轻松地管理连接,以减少服务器上的并发连接数。
- ✅ 支持对服务器集群进行轻松的负载平衡。
- ✅ 适用于低负载的环境,可以在不同的连接上提供很好的性能。
- ✅ 支持不同的负载均衡算法,比如简单 Round Robin,Least Connection(连接数最少)等。
示例代码:
global# Log Settingslog /dev/log local0log /dev/log local1 notice# Daemon Settingsdaemon# Max Connection Limits Settingsmaxconn 2048# Defaults Configure
defaultslog globalmode httpoption httplogoption dontlognullretries 3option redispatchtimeout connect 5000timeout client 50000timeout server 50000# Frontend Settings
frontend mainbind *:80default_backend nodes# The Backend
backend nodesbalance roundrobinserver web1 192.168.0.1:80 checkserver web2 192.168.0.2:80 check
2.2 Keepalived
Keepalived 是一个开源实现高可用性(HA)框架的软件,可以在多个服务器上实现负载均衡。与 Haproxy 不同的是,Keepalived 并不是负载均衡器本身,它可以提供实现 VRRP 协议的 IP 负载均衡器,可以检测负载均衡器的状态,从而负责将客户端请求转向主负载均衡器或备用负载均衡器。
Keepalived 的优点:
- ✅ 可以保证集群的高可用性。
- ✅ 支持状态检查以及能够转移到备份负载均衡器。
- ✅ 具有高速自动故障切换的功能。
- ✅ 可以检测主服务器的可用性,能够自动切换到备份服务器。
示例代码:
# Define Fix
vrrp_instance VI_1{state MASTER # 主机状态interface bond0.101 # 虚拟IP归属的网卡名称virtual_router_id 51 # 虚拟IP的ID标示,保证唯一priority 100 # priority 值高的为 MASTER,自动 failback 是高优先级的advert_int 1 # 广播间隔时间virtual_ipaddress {192.168.101.15 # 需要共享的虚拟IP}track_script {chk_haproxy # 实时检测Haproxy进程是否存在}notify_master "/etc/keepalived/notify.sh master" # MASTER节点切换前需要预先执行的命令notify_backup "/etc/keepalived/notify.sh backup" # BACKUP节点切换前需要预先执行的命令notify_fault "/etc/keepalived/notify.sh fault" # 节点切换完成后需要执行的命令
}
3.Haproxy 和 Keepalived 的区别
3.1 功能上的区别
Haproxy 属于应用层负载均衡器,可以支持 HTTP、HTTPS、TCP 和 UDP 协议的负载。而 Keepalived 是一个实现高可用性的软件,可以检测负载均衡器状态、IP 负载均衡器和 VIP 的状态转移等,并不是一个专业的负载均衡器。因此,在使用时需要根据具体的需求进行选择。
3.2 架构上的区别
Haproxy 是一个单点负载均衡器,通过 HA 模式可以实现高可用性,但不能实现负载均衡器的冗余。而 Keepalived 可以支持设立多个负载均衡器,实现多机热备,建立平衡负载和高可用性的热备,提高了系统的可靠性。
3.3 配置上的区别
Haproxy 和 Keepalived 的配置方式大不相同。Haproxy 通过配置文件进行配置,支持灵活的负载均衡方式和算法。而 Keepalived 需要在网络中使用虚拟路由协议(VRRP)进行配置,这涉及到路由器、交换机等网络设备的支持,比较复杂。

4.总结
本文从负载均衡器的介绍和基本概念、特点入手,着重分析了 Haproxy 和 Keepalived 在功能、架构和配置方面的区别。可以看出,Haproxy 是一种集成度较高、使用简单、灵活的负载均衡器软件,适合低负载的环境;而 Keepalived 则可以支持负载均衡器的冗余,实现多机热备,具有更高的系统可靠性。因此,在实际应用中需要根据自身的需求进行选择,避免因应用环境选择不当而导致系统问题。
相关文章:
【高可用架构】Haproxy 和 Keepalived 的区别
Haproxy 和 Keepalived 的区别 1.负载均衡器介绍2.Haproxy 和 Keepalived 的基本概念和特点2.1 Haproxy2.2 Keepalived 3.Haproxy 和 Keepalived 的区别3.1 功能上的区别3.2 架构上的区别3.3 配置上的区别 4.总结 1.负载均衡器介绍 负载均衡器是一种解决高并发和高可用的常用的…...
python-opencv 人脸68点特征点检测
python-opencv 人脸68点特征点检测 不是很难,主要还是掉包,来看一下代码啊: # coding: utf-8 # 导包 import numpy as np import dlib import cv2class face_emotion(object):def __init__(self):# 人脸检测器对象,通过它拿到人…...
无线网络下VMWare+CentOS7使用桥接模式无法联通网络问题
因为最近新配了台带无线网卡的主机,所以准备把所有的内容都转移到新电脑上,其中就包括虚拟机 安装好VMWareCentOS7选择桥接模式 然后我们去修改一下网络配置 cd /etc/sysconfig/network-scripts/进入这个ifcfg-ens33文件 我们修改箭头所示内容ÿ…...
vue2.x中使用JS与路由守卫配置、vue2.x中使用TS与路由守卫的配置和vuex的配置以及TS在vue2.x中的使用说明
vue2.x 事件修饰符 <button click.stop.self"handleDelete(item)"></button>在使用 $confirm 时,使用 await 方式时,需要添加 catch 回调,否则无法获取 $confirm 关闭和取消时的标识值,并且后续代码停止执…...
C语言第三十二弹---打印整数二进制的奇数位和偶数位
使用C语言打印整数二进制的奇数位和偶数位。 思路:分别实现奇数位和偶数位,那么二进制只有0 和 1 那么如何判断一个数的二进制位是0还是1呢?那我们就可以使用位操作符&与1比较,都是1证明该二进制位是1,为0证明该二进制位是0…...
车载电子电器架构 ——电子电气架构设计方案概述
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文1万多字,认证码字,认真看!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…...
《C++PrimePlus》第10章 对象和类
10.1 过程性编程和面向对象编程 10.2 抽象和类 10.3 类的构造函数和析构函数 类的定义和使用(买卖股票) 头文件stock10.h #ifndef __STOCK00__H__ #define __STOCK00__H__#include <string>class Stock { // pravate的内容只能通过public访问 p…...
实现极坐标图表QPolarChart的角度轴范围是[0,360]时,0度在水平右侧
目录 参考角度轴范围是[0,360]时,0度在水平右侧.h.cpp 参考 Qt数据可视化(QPolarChart雷达图) 默认QPolarChart的范围是[0,360]时,0度在垂直上方 如官方例子QValueAxis角度轴范围是[-100,100] 角度轴范围是[0,360]时,0度在水平右侧 原理&am…...
讲述 什么是鸿蒙 为什么需要鸿蒙 为什么要学习鸿蒙
首先 我们为什么要学习鸿蒙开发? 因为 鸿蒙发展前景巨大 鸿蒙自发布依赖 一直受社会各界关注 强两百的 App厂商 大部分接受了与鸿蒙的合作 硬件也有非常多与鸿蒙合作的厂商 鸿蒙的合作企业基本已经覆盖整个互联网客户的主流需求 所以鸿蒙的崛起不过是早晚的问题 …...
【深度学习笔记】05 线性回归
线性回归 线性回归基于几个简单的假设: 首先,假设自变量 x \mathbf{x} x和因变量 y y y之间的关系是线性的, 即 y y y可以表示为 x \mathbf{x} x中元素的加权和,这里通常允许包含观测值的一些噪声; 其次,我…...
二叉树算法—后继节点
与其明天开始,不如现在行动! 文章目录 1 后继节点1.1 解题思路1.2 代码实现 💎总结 1 后继节点 1.1 解题思路 二叉树节点结构定义如下: public static class Node { public int cal; public Node left; public Node right; public…...
C语言做一个恶作剧关机程序
一、项目介绍 C语言实现一个简单的"流氓软件",一个可以强制关机恶作剧关机程序,输入指定指令可以解除 二、运行截图 然后当你输入“n”才可以解锁关机。 三、完整源码 #include <stdlib.h> #include <stdio.h> #include <s…...
数据结构 / 计算机内存分配
1. Linux 32位系统内存分配 栈(stack): 先进后出, 栈区变量先定义的后分配内存, 栈区地址从高到低分配堆(heap): 先进先出, 栈区变量先定义的先分配内存, 堆区地址从低到高分配堆栈溢出: 表示的是栈区内存耗尽, 称为溢出. 例如: 每次调用递归都需要在栈区申请内存, 如果递归太深…...
计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO / Sparser DETR / Lite DETR)
计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO) 计算机视觉算法——基于Transformer的目标检测(DN DETR / DINO)1. DN DETR1.1 Stablize Hungarian Matching1.2 Denoising1.3 Attention Mask 2. DINO2.1 Contrasti…...
Spark---基于Yarn模式提交任务
Yarn模式两种提交任务方式 一、yarn-client提交任务方式 1、提交命令 ./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100 或者 ./spark-submit --master yarn–client --class org.apache.s…...
SpringCloud之Gateway(统一网关)
文章目录 前言一、搭建网关服务1、导入依赖2、在application.yml中写配置 二、路由断言工厂Route Predicate Factory三、路由过滤器 GatewayFilter案例1给所有进入userservice的请求添加一个请求头总结 四、全局过滤器 GlobalFilter定义全局过滤器,拦截并判断用户身…...
案例029:基于微信小程序的阅读网站设计与实现
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…...
27. Spring源码篇之SpEL表达式之自定义解析模版
简介 其实前面文章我们已经介绍过了如何定义spring表达式的解析模版,但是那是直接使用表达式api的形式,对于使用spring的同学来说,更优雅的方式就是可以自定义一个扩展去修改 本文就是介绍如何通过Spring的扩展点修改表达式解析模版 自定义…...
100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)
文章目录 专栏导读一、地图应用场景二、参数说明1. 导包2. add函数 三、地图绘制实战1. 省市地图2. 中国地图3. 中国地图(带城市)4. 中国地图(分段型)5. 中国地图(连续型)6. 世界地图7. 行程轨迹地图8. 人口…...
bugku 渗透测试
场景1 查看源代码 场景2 用dirsearch扫描一下看看 ok看到登录的照应了第一个提示 进去看看 不出所料 随便试试admin/admin进去了 在基本设置里面看到falg 场景3 确实是没啥想法了 找到php在线运行 检查网络,我们发现这个php在线运行会写入文件 那我们是不是写…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
