Haproxy 负载均衡高可用解决方案 -- Haproxy 环境的部署
  hlIKBheTE4OL 2023年11月02日 60 0


文章目录

  • ​​1、什么是Haproxy​​
  • ​​1、认识Haproxy​​
  • ​​2、版本对比​​
  • ​​3、Haproxy功能​​
  • ​​二、Haproxy 环境的安装​​
  • ​​1、lua环境准备​​
  • ​​2、部署Haproxy​​
  • ​​3、提供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、版本对比

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

3、Haproxy功能

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


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

haproxy支持的功能:

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

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

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

暂不支持的功能:

正向代理–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

浏览器访问状态页

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

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
hlIKBheTE4OL