HAProxy基础

HAProxy是一款高性能的负载均衡器,广泛应用于大型网站。本文介绍了HAProxy的简介,包括其开源背景、企业版与社区版的区别,以及主要功能。接着详细讲解了在Ubuntu和Centos上通过apt和YUM安装,以及编译安装的步骤。最后,文章深入探讨了HAProxy的基础配置,包括global、frontend、backend等关键配置参数。
摘要由CSDN通过智能技术生成

一.HAProxy 简介

1.1 简介

HAProxy 是一款免费的开源软件,它为 TCP 和基于 http 的应用程序提供了高可用性负
载均衡器和代理服务器解决方案,这些应用程序可以将请求分散到多个服务器上。它是用
C 语言写的,以速度快、效率高而著称(在处理器和内存使用方面)。HAProxy 被 GoDaddy、
GitHub、Bitbucket、Stack Overflow、Reddit、Speedtest.net、Tumblr、Twitter
和 Tuenti 等多家知名网站使用,并被用于亚马逊 AWS 的 OpsWorks 产品中。 – wiki

HAProxy 是一个免费、非常快速和可靠的解决方案。其提供高可用性,负载均衡,和基于
TCP 与 http 的应用程序的代理能。它特别适合高流量的网站并且目前已经使用在很多的
访问最多的网站上。经过多年的发展,它已经成为事实上的标准的开源负载均衡器,目前
会与大多数主流 Linux 发行版一起发布,并且通常默认部署在云平台上。 – haproxy.org

HAProxy 是由德国人Willy Tarreau1在 2000 年使用 C 语言开发的,他是 Linux
内核的核心贡献者,现在仍然维护着这个项目。

另外,在 2013 年,公司HAProxy Technologies, LLC成立,除了致力于开源社区的贡献外,
该公司提供一个商业版的 HAProxy,HAProxy 企业版。该公司提供技术支持和提供扩展 HAProxy
功能的附加模块。

1.2 企业版和社区版

社区版官网
社区版源码

企业版官网

社区版和企业版功能对比

Features/功能 HAProxy Community HAProxy Enterprise
Advanced HTTP/TCP Load Balancing and Persistence:高级 HTTP/TCP 负载均衡和持久性 支持 支持
Advanced Health Checks:高级健康检查 支持 支持
Application Acceleration:应用程序加速 支持 支持
Advanced Security:高级安装特性 支持 支持
Advanced Administration:高级管理功能 支持 支持
Backported Features From HAProxy Dev Branch:来自开发分支的新功能 NO 支持
24x7 Support:7*24 小时的支持 NO 支持
Real Time Dashboard:实时的管理界面 NO 支持
VRRP and Route Health Injection HA Tools:VRRP 等工具 NO 支持
ACL, Map, and TLS Ticket Key Synchronization:ACL,映射和 TLS 票证秘钥同步 NO 支持
Advanced Application-based DDoS and Bot Protection:基于应用的 DDos 和 Bot 保护 NO 支持
Bot Detection:Bot 机器人探测 NO 支持
Web Application Firewall:应用程序防火墙 NO 支持
HTTP Protocol Validation:HTTP 协议验证 NO 支持
Realtime Cluster-Wide Tracking:实时集群追踪功能 NO 支持

1.3 HAProxy 功能

HAProxy 功能特性如下
针对 TCP 和 HTTP 的反向代理和负载均衡功能
URL 重写
Gzip 压缩功能
代理协议支持
健康性检查
支持 HTTP/2 协议
多线程(单进程)
热加载配置(数千个并发的情况下,不丢失连接)
支持 gRPC 协议(google Remote Procedure Call)
Lua 语言和 SPOE 支持
可以针对 HTTP 请求添加 cookie,进行路由后端服务器
可平衡负载至后端服务器,并支持持久连接
支持所有主服务器故障切换至备用服务器
支持专用端口实现监控服务
支持不影响现有连接情况下停止接受新连接请求
可以在双向添加,修改或删除 HTTP 报文首部
响应报文压缩
支持基于 pattern 实现连接请求的访问控制
通过特定的 URI 为授权用户提供详细的状态信息
目前不具备的功能
正向代理–squid,nginx
缓存代理–varnish
web 服务–nginx、tengine、apache、php、tomcat
UDP–目前不支持 UDP 协议,2.1 版本会支持 UDP 协议代理
单机性能–LVS

1.4 官方维护的版本说明

HAProxy 官方一般支持两个活动的稳定版本,两个长期支持的稳定版本。另外,还会
为比较旧的两个版本修复一些比较严重的错误。下图为官网目前维护的版本的截图:

在这里插入图片描述
HAProxy 的大致工作架构
在这里插入图片描述

二.HAProxy 安装及基础配置

2.1 Ubuntu 安装 HAProxy

2.1.1 apt 安装

# 查看目前源中有哪些版本可选,可以看到都是旧版
root@ubuntu-suosuoli-node1:~# apt-cache madison haproxy
   haproxy | 1.8.8-1ubuntu0.9 | http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 Packages
   haproxy | 1.8.8-1ubuntu0.9 | http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 Packages
   haproxy | 1.8.8-1ubuntu0.9 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates/main amd64 Packages
   haproxy | 1.8.8-1ubuntu0.9 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-security/main amd64 Packages
   haproxy |    1.8.8-1 | http://mirrors.aliyun.com/ubuntu bionic/main amd64 Packages
   haproxy |    1.8.8-1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/main amd64 Packages
   haproxy |    1.8.8-1 | http://mirrors.aliyun.com/ubuntu bionic/main Sources
   haproxy | 1.8.8-1ubuntu0.9 | http://mirrors.aliyun.com/ubuntu bionic-security/main Sources
   haproxy | 1.8.8-1ubuntu0.9 | http://mirrors.aliyun.com/ubuntu bionic-updates/main Sources1

# 安装必要的依赖
root@ubuntu-suosuoli-node1:~# apt-get install software-properties-common

# 安装HAProxy2.0版,增加有HAProxy 2.0的安装源
root@ubuntu-suosuoli-node1:~# add-apt-repository ppa:vbernat/haproxy-2.0

# 再次查看具有的HAProxy版本信息
root@ubuntu-suosuoli-node1:~# apt-cache madison haproxy
   haproxy | 2.0.12-1ppa1~bionic | http://ppa.launchpad.net/vbernat/haproxy-2.0/ubuntu bionic/main amd64 Packages
......

# 安装
root@ubuntu-suosuoli-node1:~# apt install haproxy=2.0.12-1ppa1~bionic

# 查看版本验证安装情况
root@ubuntu-suosuoli-node1:~# haproxy -v
HA-Proxy version 2.0.12-1ppa1~bionic 2019/12/21 - https://haproxy.org/

2.2.2 编译安装

# Ubuntu1804上无lua,所以需要编译安装,HAProxy需要lua5.3版本以上
root@ubuntu-suosuoli-node1:~# apt-cache madison lua
root@ubuntu-suosuoli-node1:~#

root@ubuntu-suosuoli-node1:~# tar -xf /data/lua-5.3.5.tar.gz  -C /usr/local/src/
root@ubuntu-suosuoli-node1:~# cd /usr/local/src/lua-5.3.5
root@ubuntu-suosuoli-node1:/usr/local/src/lua-5.3.5#pwd
/usr/local/src/lua-5.3.5
# 第一次编译出错
root@ubuntu-suosuoli-node1:/usr/local/src/lua-5.3.5# make linux test
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o lua.o lua.c
lua.c:82:10: fatal error: readline/readline.h: No such file or directory
 #include <readline/readline.h>
          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.

# 安装依赖
root@ubuntu-suosuoli-node1:/usr/local/src/lua-5.3.5# sudo apt-get install libreadline-dev

# 再次编译,成功
root@ubuntu-suosuoli-node1:/usr/local/src/lua-5.3.5# make linux
cd src && make linux
make[1]: Entering director
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值