HaProxy介绍和安装

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

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

 

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

 

负载均衡类型分类:
  四层:LVS(Linux Virtual Server) HAProxy(High Availability Proxy) Nginx(1.9)
  七层:HAProxy Nginx
  硬件:F5 Netscaler Array 深信服
应用 场景:
  四层:Redis、Mysql、RabbitMQ、Memcache等
  七层:Nginx、Tomcat、Apache、PHP 、图片、动静分离、API等


HAProxy功能:
  TCP和HTTP反向代理
  SSL/TSL服务器 可以针对HTTP请求添加cookie,
  进行路由后端服务器
  可平衡负载至后端服务器,并支持持久连接
  支持所有主服务器故障切换至备用服务器
  支持专用端口实现监控服务
  支持不影响现有连接情况下停止接受新连接请求
  可以在双向添加,修改或删除HTTP报文首部
  响应报文压缩
  支持基于pattern实现连接请求的访问控制
  通过特定的URI为授权用户提供详细的状态信息
不具备的功能:
  正向代理--squid,nginx
  缓存代理--varnish
  web服务--nginx、tengine、apache、php、tomcat
  UDP--目前不支持UDP协议,2.1版本会支持UDP协议代理
  单机性能--LVS

 

HAProxy安装

一.HAProxy安装直接安装
yum install haproxy -y 
#验证haproxy版本 
haproxy -v 
HA-Proxy version 1.5.18 2016/05/10 Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>


二.利用第三方 yum 仓库安装
[root@centos7 ~]# wget https://centos7.iuscommunity.org/ius-release.rpm
[root@centos7 ~]# rpm -Uvh ius-release*rpm
[root@centos7 ~]# yum -y install epel-release
[root@centos7 ~]# rpm -Uvh ius-release*rpm
[root@centos7 ~]# yum install haproxy

三.下载rpm包离线安装
#下载安装lua库对应的版本
[root@centos7 ~]# wget  https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm
#安装lua库
[root@centos7 ~]# yum -y install lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm
#下载haproxy
[root@centos7 ~]# wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/haproxy18u-1.8.20-
1.el7.ius.x86_64.rpm
#安装haproxy
[root@centos7 ~]# yum -y install haproxy18u-1.8.20-1.el7.ius.x86_64.rpm



四.HAProxy二进制安装

1、lua依赖包
yum install  libtermcap-devel ncurses-devel libevent-devel readline-devel  -y
yum install  gcc gcc-c++ glibc glibc-devel  -y

2、编译安装lua
HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,里的一个研究小组开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
wget http://www.lua.org/ftp/lua-5.3.5.tar.gz

cd  /usr/local
tar xvf lua-5.3.5.tar.gz 
cd lua-5.3.5 
make linux test 

# lua -v     #当前系统版本 
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
# pwd csrc/lua-5.3.5 
[root@localhost7B lua-5.3.5]# ./src/lua -v #编译安装的版本 
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio


3、安装依赖包
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel  zlib-devel 
#yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate 

4、编译安装
tar xvf haproxy-2.0.4.tar.gz -C /usr/local/src
cd /usr/local/src/haproxy-2.0.4

make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/usr/local/lua-5.3.5/src/ LUA_LIB=/usr/local/lua-5.3.5/src/ PREFIX=/usr/local/haproxy

make install PREFIX
=/usr/local/haproxy ln -sv /usr/local/haproxy/sbin/haproxy /usr/sbin/ 5、验证HAProxy版本: haproxy -v HA-Proxy version 2.0.4 2019/08/06 - https://haproxy.org/ 6、HAProxy启动脚本: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 [Install] WantedBy=multi-user.target systemctl daemon-reload
7、创建并设置配置文件: mkdir /etc/haproxy cat /etc/haproxy/haproxy.cfg global maxconn 100000 chroot /usr/local/haproxy stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin uid 99 gid 99 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 local3 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 admin:123456 listen web_port bind 192.168.80.110:81 #IP地址 mode http log global server web1 192.168.80.110:80 check inter 3000 fall 2 rise 5 8、启动haproxy: mkdir /var/lib/haproxy chown 99:99 /var/lib/haproxy/ -R systemctl start haproxy systemctl enable haproxy systemctl status haproxy
haproxy.cfg文件中定义了chroot、pidfile、user、group等参数,如果系统没有相应的资源会导致haproxy无法启动,具体参考日志文件
/var/log/messages

 

9、测试
yum install nginx
echo 192.168.80.110 > /usr/share/nginx/html/index.html

[root@localhost7e ~]# curl 192.168.80.110:81
192.168.80.110

 

posted @ 2022-07-22 16:35  yuanbangchen  阅读(2964)  评论(0编辑  收藏  举报