【高可用架构】Haproxy 和 Keepalived 的区别

news2024/11/26 20:41:54

Haproxy 和 Keepalived 的区别

  • 1.负载均衡器介绍
  • 2.Haproxy 和 Keepalived 的基本概念和特点
    • 2.1 Haproxy
    • 2.2 Keepalived
  • 3.Haproxy 和 Keepalived 的区别
    • 3.1 功能上的区别
    • 3.2 架构上的区别
    • 3.3 配置上的区别
  • 4.总结

1.负载均衡器介绍

负载均衡器是一种解决高并发和高可用的常用的网络设备,它可以将流量分摊到多台服务器上,实现负载均衡,提高业务处理效率和稳定性。在负载均衡器的选择上,HaproxyKeepalived 是两个常用的开源负载均衡器。

2.Haproxy 和 Keepalived 的基本概念和特点

2.1 Haproxy

Haproxy 是一种高性能、轻量级、可靠的负载均衡器软件,主要用于在多台服务器上平衡 HTTP、HTTPS、TCP 和 UDP 协议的负载。它具有配置灵活、轻量级、占用资源少、支持远多于其他负载均衡软件的并发连接数等特点。Haproxy 完全可以负载大量的请求,并提供负载均衡处理与优秀的 Fail-over 机制。

Haproxy 的优点:

  • ✅ 可以轻松地管理连接,以减少服务器上的并发连接数。
  • ✅ 支持对服务器集群进行轻松的负载平衡。
  • ✅ 适用于低负载的环境,可以在不同的连接上提供很好的性能。
  • ✅ 支持不同的负载均衡算法,比如简单 Round Robin,Least Connection(连接数最少)等。

示例代码:

global
    # Log Settings
    log /dev/log local0
    log /dev/log local1 notice
    # Daemon Settings
    daemon
    # Max Connection Limits Settings
    maxconn 2048
 
# Defaults Configure
defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    timeout connect 5000
    timeout client 50000
    timeout server 50000
 
# Frontend Settings 
frontend main
    bind *:80
    default_backend nodes
 
# The Backend
backend nodes
    balance roundrobin
    server web1 192.168.0.1:80 check
    server 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 则可以支持负载均衡器的冗余,实现多机热备,具有更高的系统可靠性。因此,在实际应用中需要根据自身的需求进行选择,避免因应用环境选择不当而导致系统问题。

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

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

相关文章

【JavaSE】:数据类型

数据类型 一.总体概论二.java里与c的区别1.float2.char3.boolen 三.类型转换四.String类型 一.总体概论 在Java中数据类型主要分为两类:基本数据类型和引用数据类型。 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节 。 整…

NAS非接入层协议学习(二)

在无线通信网络中 NAS (Non-Access Stratum)做为非接入层是演进分组系统(或5G核心网)中的一组协议。NAS用于在用户设备(UE)和移动管理实体(MME/AMF)之间传送非无线电信令,以实现NR/LTE/E-UTRAN接入。 NAS在协议栈中是控制面的最高层。 NAS协议分组中可以将其分为两…

3款免费的语音视频转文本AI神器

最近有很多粉丝让我出一期关于语音转文本的免费AI神器,毕竟这类工具在学习和工作中经常会用到,那今天就给大家安排。 我亲测了好几款软件之后,最终评选留下了三款 剪映hugging face飞书妙记 接下来一一给大家讲解 1.剪映 剪映其实是一款视…

因式分解的几何意义

本来准备和女儿一起玩一道几何题,想想还是算了,不如讲点更有趣的。 任何因式分解都是在堆积木,不信你看: 二项式定理,洋灰三角,都是面积,体积,超维体积的拼接,一个大超…

Python | CAP - 累积精度曲线分析案例

CAP通常被称为“累积精度曲线”,用于分类模型的性能评估。它有助于我们理解和总结分类模型的鲁棒性。为了直观地显示这一点,我们在图中绘制了三条不同的曲线: 一个随机的曲线(random)通过使用随机森林分类器获得的曲线…

leetcode_828_统计子串中的唯一字符

题意:所有子串中单个字符出现的次数和 问题转化:对于串中的每个字符,只包含其一次的所有子串的个数和 关于求只包含某位置字符一次的子串个数 class Solution { public:int uniqueLetterString(string s) {/* ...A...A...A...*/int n s.size…

【C++】类型转换 ② ( C++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )

文章目录 一、静态类型转换 static_cast1、C 静态类型转换 static_cast2、C 语言隐式转换弊端3、代码示例 在之前写过一篇 C 类型转换的博客 【C 语言】类型转换 ( 转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast | 字符串转换 ) , 简单介绍了 C 类…

linklab phase1 更简单的方法

直接反汇编phase1.o,看eax中是0x21,0x21在数据域中,直接把从第21个字节的内容改为0000000000即可。

【python】--文件/文件夹读写及操作

目录 一、文件读写1、文件读写代码示例 二、文件/文件夹操作1、代码示例 一、文件读写 读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后通过操作系统提供的接口从这个文件对象中读取数据(读文件)…

【如何修改输入法切换键】

操作 以win10为例,点开系统设置,选择时间和语言 选择语言,找到首选语言中的中文,点击选项 点击其中的微软输入法 选择按键 在按键中进行输入法切换按键的选择

Atcoder Beginner Contest 330——A~F题

A - Counting Passes Description Problem Statement N N N people labeled 1 , 2 , … , N 1,2,\dots,N 1,2,…,N took an exam, and person i i i scored A i A_i Ai​ points. Only those who scored at least L L L points pass this exam. Determine how many peopl…

【Linux】第二十一站:文件(一)

文章目录 一、共识原理二、C系列文件接口三、从C过渡到系统:文件系统调用四、访问文件的本质 一、共识原理 文件 内容 属性 文件分为打开的文件 和 没打开的文件 打开的文件:是谁打开的?是进程!----所以研究打开的文件本质是研…

预制构件二维码如何生成?

PC预制构件张贴二维码标识牌,可实现预制构建基本信息、设计图纸、安装说明书信息展示微信扫一扫即可查看预制件信息,大大提高施工的精度和效率;同时也可以实现预制生成过程管理、运输过程管理、安装过程管理、后期运维管理实现预制件的过程质…

Typescript基础面试题 | 04.精选 ts 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Spring Security 6.1.x 系列(6)—— 显式设置和修改登录态

一、前言 此篇是对上篇 Spring Security 6.1.x 系列(5)—— Servlet 认证体系结构介绍 中4.9章节显式调用SecurityContextRepository#saveContext进行详解分析。 二、设置和修改登录态 2.1 登录态存储形式 使用Spring Security框架,认证成…

快速解决Navicat连接数据库报错:10061

目录 问题原因: 错误提示: 解决方案: 问题1:如何进入指定目录? 问题2:若出现:“服务名无效” 将MySQL注册到win服务中 问题原因: mysql服务没有开启(可能会在更新windows…

337. 打家劫舍III (二叉树)

题目 题解 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def rob(self, root: Optional[TreeNode]) ->…

游戏软件提示xinput1_3.dll缺失如何修复呢?6种常用修复方法总结

在计算机使用过程中,我们常常会遇到一些错误提示,其中之一就是“xinput1_3.dll丢失”。这个问题可能会导致游戏无法正常运行。为了解决这个问题,我们需要了解xinput1_3.dll是什么以及如何找回丢失的文件。本文将详细介绍xinput1_3.dll丢失的解…

鸿蒙HarmonyOS手把手带大家创建第一个项目 并做一个基本的组件结构讲解

上文 鸿蒙HarmonyOS 编辑器 下载 安装带大家了解并下载安装了 HarmonyOS 的编辑器 那么 我们现在双击打开它 在左侧菜单中选择 Create Project 这里有多种模板 我们先选择默认的 点击下一步 这里 我们项目的目录 和 名字可以修改一下 其他的都先用默认的就好了 但是还是要注…

人力资源管理后台 === 组织架构

目录 1.组织架构-树组件应用 2.组织架构-树组件自定义结构 3.组织架构-获取组织架构数据 4.组织架构-递归转化树形结构 5.组织架构-添加子部门-新建弹层组件 6.组织架构-添加子部门-表单结构 7.组织架构-添加子部门-表单基本校验 8.组织架构-添加子部门-表单业务校验 9…