Haproxy 负载均衡高可用解决方案 -- Haproxy 环境的部署

1、什么是Haproxy

1、认识Haproxy

HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计,目前最新TLS版本为2.6

企业版:https://www.haproxy.com/

社区版:http://www.haproxy.org/

项目托管:https://github.com/haproxy

2、版本对比

3、Haproxy功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i1vHBxAa-1642071656185)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220113183045840.png)]
在这里插入图片描述

haproxy支持的功能:

TCP 和 HTTP反向代理
SSL/TSL服务器
可以针对HTTP请求添加cookie,进行路由后端服务器
可平衡负载至后端服务器,并支持持久连接
支持所有主服务器故障切换至备用服务器
支持专用端口实现监控服务
支持停止接受新连接请求,而不影响现有连接
可以在双向添加,修改或删除HTTP报文首部
响应报文压缩
支持基于pattern实现连接请求的访问控制
通过特定的URI为授权用户提供详细的状态信息

支持http反向代理
支持动态程序的反向代理
支持基于数据库的反向代理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5b1l0XCR-1642071656187)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220113183214628.png)]

暂不支持的功能:

正向代理–squid,nginx
缓存代理–varnish
web服务–nginx、tengine、apache、php、tomcat
UDP–目前不支持UDP协议
单机性能–相比LVS性能较差

二、Haproxy 环境的安装

1、lua环境准备

# 升级lua版本
[root@node01 ~]# lua -v
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
[root@node01 ~]# tar xf lua-5.4.3.tar.gz -C /usr/local/src/
[root@node01 ~]# cd /usr/local/src/lua-5.4.3/
[root@node01 lua-5.4.3]# make linux test
[root@node01 lua-5.4.3]# src/lua -v
Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio

2、部署Haproxy

[root@node01 lua-5.4.3]# yum -y install gcc openssl-devel pcre-devel systemd-devel
[root@node01 lua-5.4.3]# rpm -qa make
make-3.82-24.el7.x86_64
[root@node01 lua-5.4.3]# rpm -qa gcc
gcc-4.8.5-44.el7.x86_64
[root@node01 lua-5.4.3]# ls haproxy-2.2.9.tar.gz 
haproxy-2.2.9.tar.gz
[root@node01 lua-5.4.3]# tar xf haproxy-2.2.9.tar.gz -C /usr/local/src/
[root@node01 lua-5.4.3]# cd /usr/local/src/haproxy-2.2.9/
[root@node01 haproxy-2.2.9]# make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.3/src/ LUA_LIB=/usr/local/src/lua-5.4.3/src/
[root@node01 haproxy-2.2.9]# make install PREFIX=/apps/haproxy
[root@node01 haproxy-2.2.9]# ln -sv /apps/haproxy/sbin/haproxy /usr/sbin/
‘/usr/sbin/haproxy’ -> ‘/apps/haproxy/sbin/haproxy’
[root@node01 haproxy-2.2.9]# haproxy -v
HA-Proxy version 2.2.9-a947cc2 2021/02/06 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2025.
Known bugs: http://www.haproxy.org/bugs/bugs-2.2.9.html
Running on: Linux 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64
[root@node01 haproxy-2.2.9]# tree /apps/haproxy/
/apps/haproxy/
├── doc
│   └── haproxy
│       ├── 51Degrees-device-detection.txt
│       ├── architecture.txt
│       ├── close-options.txt
│       ├── configuration.txt
│       ├── cookie-options.txt
│       ├── DeviceAtlas-device-detection.txt
│       ├── intro.txt
│       ├── linux-syn-cookies.txt
│       ├── lua.txt
│       ├── management.txt
│       ├── netscaler-client-ip-insertion-protocol.txt
│       ├── network-namespaces.txt
│       ├── peers.txt
│       ├── peers-v2.0.txt
│       ├── proxy-protocol.txt
│       ├── regression-testing.txt
│       ├── seamless_reload.txt
│       ├── SOCKS4.protocol.txt
│       ├── SPOE.txt
│       └── WURFL-device-detection.txt
├── sbin
│   └── haproxy
└── share
    └── man
        └── man1
            └── haproxy.1

6 directories, 22 files

3、提供haproxy系统服务脚本

[root@node01 ~]# vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target

[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

[root@node01 ~]# mkdir /etc/haproxy
[root@node01 ~]# vim /etc/haproxy/haproxy.cfg
global
	maxconn 100000
	chroot /apps/haproxy
	stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
	#uid 99
	#gid 99
	user haproxy
	group haproxy
	daemon
	#nbproc 4
	#cpu-map 1 0
	#cpu-map 2 1
	#cpu-map 3 2
	#cpu-map 4 3
	pidfile /var/lib/haproxy/haproxy.pid
	log 127.0.0.1 local2 info
defaults
	option http-keep-alive
	option forwardfor
	maxconn 100000
	mode http
	timeout connect 300000ms
	timeout client 300000ms
	timeout server 300000ms
listen stats
	mode http
	bind 0.0.0.0:9999
	stats enable
	log global
	stats uri /haproxy-status
	stats auth haadmin:123456

[root@node01 ~]# mkdir /var/lib/haproxy
[root@node01 ~]# useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy
[root@node01 ~]# systemctl enable --now haproxy
[root@node01 ~]# systemctl is-active haproxy.service 
active
[root@node01 ~]# systemctl is-enabled haproxy.service 
enabled

浏览器访问状态页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwo1bIlb-1642154809314)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220114125543822.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DEXeUztT-1642154809315)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220114125601615.png)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值