haproxy简介和编译安装
负载均衡简介
负载均衡(Load Balance,简称LB)是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均衡将特定的业 务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了公司业务的并发处理能 力、保证了业务的高可用性、方便了业务后期的水平动态扩展。
负载均衡类型
1)四层:
- 1.LVS(Linux Virtual Server)
- 2.HAProxy(High Availability Proxy)
- 3.Nginx(1.9)
2)七层:
- 1.HAProxy
- 2.Nginx
3)硬件:
- F5 #https://f5.com/zh
- Netscaler #https://www.citrix.com.cn/products/citrix-adc/
- Array #https://www.arraynetworks.com.cn/
- 深信服 #http://www.sangfor.com.cn/
负载均衡应用场景
- 1.四层:Redis、Mysql、RabbitMQ、Memcache等
- 2.七层:Nginx、Tomcat、Apache、PHP、图片、动静分离、API等
HAProxy介绍
HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一 万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状 态统计,目前最新TLS版本为2.0。
- https://www.haproxy.com/ #企业版
- http://www.haproxy.org/ #社区版
- 版本变化:
历史版本更新功能:1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1-dev
1.8:多线程,HTTP/2缓存……
1.7:服务器动态配置,多类型证书……
1.6:DNS解析支持,HTTP连接多路复用……
1.5:开始支持SSL,IPV6,会话保持……
HAProxy功能
1)HAProxy功能:
- TCP和HTTP反向代理
- SSL/TSL服务器
- 可以针对HTTP请求添加cookie,进行路由后端服务器
- 可平衡负载至后端服务器,并支持持久连接
- 支持所有主服务器故障切换至备用服务器
- 支持专用端口实现监控服务
- 支持不影响现有连接情况下停止接受新连接请求
- 可以在双向添加,修改或删除HTTP报文首部
- 响应报文压缩
- 支持基于pattern实现连接请求的访问控制
- 通过特定的URI为授权用户提供详细的状态信息
2)不具备的功能:
- 正向代理–squid,nginx
- 缓存代理–varnish
- web服务–nginx、tengine、apache、php、tomcat
- UDP–目前不支持UDP协议,2.1版本会支持UDP协议代理
- 单机性能–LVS
haproxy安装
编译安装
1)获取源码
- 编译安装:haproxy-2.0.8.tar.gz
2)解决LUA环境
- 由于centos自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装HAProxy。
①获取lua5.3以上版本
# wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
②解压缩
# tar xvf lua-5.3.5.tar.gz
③提供编译lua的环境
# yum install libtermcap-devel ncurses-devel libevent-devel readline-devel gcc
④ 编译安装lua
# cd lua-5.3.5
# make linux test
⑤查看安装lua和系统lua的版本
[root@centos7-27 lua-5.3.5]# pwd
/usr/local/src/lua-5.3.5
[root@centos7-27 lua-5.3.5]# lua -v
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
[root@centos7-27 lua-5.3.5]# ./src/lua -v
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
==>至此lua的环境已准备好
3)解压haproxy-2.0.8.tar.gz
- tar xf haproxy-2.0.8.tar.gz
4)查看编译安装步骤
- cd haproxy-2.0.8/
- vim INSTALL
1) Quick build & install
2) Basic principles
3) Build environment
4) Dependencies
5) Advanced build options
6) How to install HAProxy
5)提供安装haproxy的编译环境
# 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
6)make
- Makefile文件已存在,直接编译
- 编译安装选项
#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编译参数:
# 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/src/lua-5.3.5/src/ LUA_LIB=/usr/local/src/lua-5.3.5/src/ PREFIX=/usr/local/haproxy
7)make install
- #make install PREFIX=/usr/local/haproxy
8)验证HAProxy版本
[root@centos7-27 haproxy-2.0.8]# /usr/local/haproxy/sbin/haproxy -v
HA-Proxy version 2.0.8 2019/10/23 - https://haproxy.org/
9)HAProxy启动脚本
- 在yum安装的service文件上面做相应修改
- 为了调用方便,将/usr/local/haproxy/sbin/haproxy可执行程序导入PATH变量中
#cp /usr/local/haproxy/sbin/haproxy /usr/local/sbin/
# cat /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/local/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
10)HAProxy命令
- haproxy -h
-f <cfgfile|cfgdir>]* 指定配置文件路径
-c 检查模式:仅检查配置文件并退出
-q 静默模式:不输出信息
-p 将所有子项的pids写入此文件
-Ws master-worker mode with systemd notify support|具有systemd通知支持的master-worker模式
11)准备HAProxy的配置文件
- mkdir /etc/haproxy
- vim /etc/haproxy/haproxy.cfg
global
maxconn 100000
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.socket 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 haadmin:12345
stats admin if TRUE #启用管理功能,可以控制后端服务器上下线等,但是一般不会再这里配置
listen web_port
bind 127.0.0.1:80
mode http
log global
server web1 127.0.0.1:80 check inter 3000 fall 2 rise 5
12)启动haproxy
- #mkdir /var/lib/haproxy
- #chown 99.99 /var/lib/haproxy/ -R
- #systemctl start haproxy
- #systemctl enable haproxy
- #systemctl status haproxy
13)访问配置文件中定义的proxy的状态页
==>至此haproxy编译安装完成
第三方安装包haproxy
-
https://pkgs.org/ 第三方的rpm包网址
-
然后选择:IUS Community Packages Archive x86_64(社区版)
-
选择对应的haproxy版本安装,注意依赖关系
yum安装haproxy
- 略