HAProxy高性能软负载均衡器

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下:免费开源,与硬件负载均衡相比划算很多最高可以维护40000~50000个并发,作为软件级别的负载均衡来说,实在强大支持多种负载均衡算法,同时支持session保持支持虚拟主机拥有服务器监控页面,可以了解系统的实时运行状态借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。

现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下:

  • 免费开源,与硬件负载均衡相比划算很多
  • 最高可以维护40000~50000个并发,作为软件级别的负载均衡来说,实在强大
  • 支持多种负载均衡算法,同时支持session保持
  • 支持虚拟主机
  • 拥有服务器监控页面,可以了解系统的实时运行状态

借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。

img_e7bc89c642cad51900f4005daa5cc570.png
image.png

演示

像这种软件的东西,直接动手比说理论有用的多。我还是基于Docker演示,明白其原理主要是配置文件,用虚拟机或容器都是类似的。

  1. 拉取Haproxy:1.8镜像
docker pull haproxy:1.8
  1. 拉取httpd镜像,并且准备web容器
docker pull httpd:2.4
docker run -it -d --name web1 httpd:2.4
docker run -it -d --name web2 httpd:2.4
docker run -it -d --name web-static httpd:2.4

docker exec -it web1 /bin/bash

进入容器之后分别修改其html页面


img_5b38b3f162dd7fd83474baef9a862452.png
image.png
  1. 运行Haproxy容器,并且准备其配置文件

Haproxy的配置文件主要分为几部分

  • global 一些全局配置信息,主要和进程相关,注意如果涉及到目录相关的,要提前创建目录
  • defaults 默认的配置信息
  • frontend 前端的配置,暴露给用户的部分
  • backend 后端的配置,真实的提高服务的部分

在官方的网站中,所有的配置指令都有详细的解释,网址在文末的参考中。

我们的配置如下


img_4a6b88b1e724858714e391c567bda6f0.png
image.png
global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app
    bind :80
backend static
    balance     roundrobin
    server      static 172.17.0.5:80 check

backend app
    balance     roundrobin
    server  app1 172.17.0.3:80 check
    server  app2 172.17.0.4:80 check

结果

在访问同一台服务器,可以看到响应的内容确实转发到后端不同的服务器上面

img_3e53e30b6ae80a19c2f40986bdab35fa.png
image.png

最后

纸上得来终觉浅,绝知此事要躬行。Haproxy一直在大脑中停留着,亲自配置一遍才知道其是怎么回事。中间遇到两个问题

  1. Haproxy1.5版本与1.8版本的frontend配置稍有不同,学会参考文档
  2. 配置文件中的stats指定的目录在系统中如果不存在,会报错,指定的目录都要存在才行

让配置生效之前先用haproxy -c检查一下配置文件是否正确

参考

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4天前
|
负载均衡 算法 安全
slb高性能
【11月更文挑战第4天】
16 3
|
3月前
|
负载均衡 算法 前端开发
HAProxy 和负载均衡概念简介
HAProxy 和负载均衡概念简介
75 3
|
6月前
|
网络协议 Linux C语言
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
本篇主要介绍了 Intel HDSLB 的基本运行原理和部署配置的方式,希望能够帮助读者们顺利的把 HDSLB-DPVS 项目 “玩” 起来。
310 9
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
|
4月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
240 0
|
6月前
|
边缘计算 负载均衡 网络协议
Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景
在云计算、SDN、NFV 高速发展并普遍落地的今天,随着上云业务的用户数量越来越多、数据中心的规模越来越大,云计算规模成本效应越来越重要。因此,云计算的集约式系统架构逻辑就决定了网络的性能是一个永恒的话题。在云网络的技术体系中,对性能追求不仅是方方面面的,而且是极致严苛的。性能每提升一点,成本就降低一分,收益就提高一些,产品的竞争力就更上一层楼。
117 0
Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景
|
6月前
|
负载均衡 算法 网络协议
LVS、Nginx和HAProxy负载均衡器对比总结
LVS、Nginx和HAProxy负载均衡器对比总结
|
6月前
|
负载均衡 监控 网络协议
使用haproxy实现负载均衡集群
【4月更文挑战第14天】HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,快速并且可靠的一种解决方案。
181 1
|
6月前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
155 0
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡
341 0
|
5月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
122 2