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

HaProxy介绍和安装

原文链接: https://www.cnblogs.com/Yuanbangchen/p/16506237.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/190509

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午4:13
下一篇 2023年2月12日 下午4:13

相关推荐