haproxy简述

简述

1定义

负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展

2为啥使用LB

Web服务器的动态水平扩展-->对用户无感知
增加业务并发访问及处理能力-->解决单服务器瓶颈问题
节约公网IP地址-->降低IT支出成本
隐藏内部服务器IP-->提高内部服务器安全性
配置简单-->固定格式的配置文件
功能丰富-->支持四层和七层,支持动态下线主机
性能较强-->并发数万甚至数十万

3LB类型

四层:LVS  Nginx (1.9版本以后)   HAProxy
七层:HAProxy  Nginx
硬件:F5  深信服 
 

4应用场景

四层:Redis、Mysql、RabbitMQ、Memcache等
七层:Nginx、Tomcat、Apache、PHP、图片、动静分离、API等
 

安装

CentOS 7 的默认的base仓库中包含haproxy的安装包文件,但是版本比较旧,是1.5.18的版本,距离当前版本已经有较长时间没有更新,由于版本比较旧所以有很多功能不支持,如果对功能和性能没有要求可以使用此版本,否则推荐使用新版本。此次使用编译安装

1解决lua环境

CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求

[root@centos7-1 ~]# yum install gcc readline-devel
[root@centos7-1 ~]# wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
[root@centos7-1 ~]# tar xvf lua-5.3.5.tar.gz -C /usr/local/src
[root@centos7-1 ~]# cd /usr/local/src/lua-5.3.5
[root@centos7-1 lua-5.3.5]# make linux test
[root@centos7-1 lua-5.3.5]#src/lua -v
 Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
 

 2编译haproxy

#HAProxy 1.8及1.9版本编译参数:
make  ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  USE_CPU_AFFINITY=1  PREFIX=/usr/local/haproxy
 
#HAProxy 2.0以上版本编译参数:
 
[root@centos7-1 ~]#yum -y install gcc openssl-devel pcre-devel systemd-devel
[root@centos7-1 ~]#tar xvf haproxy-2.2.11.tar.gz -C /usr/local/src
[root@centos7-1 ~]#cd /usr/local/src/haproxy-2.2.11/
[root@centos7-1 haproxy-2.2.11]#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.3.5/src/ LUA_LIB=/usr/local/src/lua-5.3.5/src/
[root@centos7 haproxy-2.2.11]# make install PREFIX=/apps/haproxy
[root@centos7 haproxy-2.2.11]#ln -s /apps/haproxy/sbin/haproxy /usr/sbin/
 检测版本

[root@centos7-1 ~]# haproxy -v
HA-Proxy version 2.2.11-c58c4e4 2021/03/18 - 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.11.html
Running on: Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_6

3配置service文件

复制代码
[root@centos7-1 ~]# cat /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 LimitNOFILE=100000 [Install] WantedBy=multi-user.target

注意点:1需要手动创建/etc/haproxy目录和etc/haproxy/haproxy.cfg文件2创建/var/lib/haproxy目录,生成pid
[root@centos7-1 ~]#mkdir /var/lib/haproxy
[root@centos7-1 ~]#mkdir /etc/haproxy 

[root@centos7-1 ~]# cat /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  开启haproxy的worker进程数,与线程互斥

  #nbthread  n   开启多线程
  #cpu-map 1 0  worker绑定cpu
  #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      透传客户端真实ip给后端web
  maxconn 100000    连接数
  mode http        默认工作类型,使用tcp性能更好
  timeout connect 300000ms      客户端从haproxy到后端server最长连接等待时间(tcp连接之前)
  timeout client 300000ms    客户端和haproxy的最长非活动时间,建议和timeout server相同
  timeout server 300000ms    客户端请求从haproxy到后端服务器请求处理超时时间(tcp连接之后)
listen stats
  mode http
  bind 0.0.0.0:9999
  stats enable
  log global
  stats uri /haproxy-status
  stats auth haadmin:123456
listen web_port
  bind 192.168.10.31:80
  mode http
  log global
  server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5

复制代码

4检查服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@centos7-1 ~]# systemctl daemon-reload
[root@centos7-1 ~]# systemctl enable --now haproxy
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
[root@centos7-1 ~]# systemctl status haproxy.service
● haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2022-01-04 10:42:17 HKT; 4h 9min ago
 Main PID: 1526 (haproxy)
   CGroup: /system.slice/haproxy.service
           ├─1526 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
           ├─1530 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
           ├─1531 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
           ├─1532 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
           └─1533 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid

  

 

 

 

 

 

 

 

 

 

 

 

posted @   好像认识你很久了  阅读(179)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示