一、Haproxy简介
1、Haproxy的介绍
HAProxy是法国开发者Willy Tarreau开发的一个开源软件,是一款具备高并发、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计。
2、Haproxy的功能
HAProxy是TCP/HTTP反向代理服务器,尤其适合于高可用性高并发环境
• 可以针对HTTP请求添加cookie,进行路由后端服务器
• 可平衡负载至后端服务器,并支持持久连接
• 支持基于cookie进行调度
• 支持所有主服务器故障切换至备用服务器
• 支持专用端口实现监控服务
• 支持不影响现有连接情况下停止接受新连接请求
• 可以在双向添加,修改或删除HTTP报文首部
• 支持基于pattern实现连接请求的访问控制
• 通过特定的URI为授权用户提供详细的状态信息
二、Haproxy安装
1、编译安装过程
(1) 准备源码包,可到官网下载 https://www.haproxy.org
[root@centos7 ~]# ll haproxy-1.8.20.tar.gz -rw-r--r-- 1 root root 2083917 Jan 10 20:39 haproxy-1.8.20.tar.gz
(2) 安装相应依赖包
[root@centos7 ~]# yum install -y gcc gcc-c++ pcre pcre-devel openssl openssl-devel systemd-devel
(3) 解压源码包,并进行编译
[root@centos7 ~]# tar -zxvf haproxy-1.8.20.tar.gz [root@centos7 ~]# cd haproxy-1.8.20/ [root@centos7 haproxy-1.8.20]# 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 [root@centos7 haproxy-1.8.20]# make install PREFIX=/usr/local/haproxy [root@centos7 haproxy-1.8.20]# cp haproxy /usr/sbin/
(4) 创建启动脚本
[root@centos7 haproxy-1.8.20]# 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 /usr/local/haproxy/run/haproxy.pid ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
(5) 创建用户与相关目录以及配置文件
[root@centos7 haproxy-1.8.20]# useradd -r -s /sbin/nologin haproxy [root@centos7 haproxy-1.8.20]# mkdir /etc/haproxy [root@centos7 haproxy-1.8.20]# mkdir /usr/local/haproxy/run [root@centos7 haproxy-1.8.20]# mkdir /var/lib/haproxy [root@centos7 haproxy-1.8.20]# chown -R haproxy:haproxy /var/lib/haproxy/ [root@centos7 haproxy-1.8.20]# vim /etc/haproxy/haproxy.cfg
[root@centos7 haproxy-1.8.20]# cat /etc/haproxy/haproxy.cfg global maxconn 100000 chroot /usr/local/haproxy #stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin #uid 981 #gid 981 user haproxy group haproxy daemon #nbproc 4 #cpu-map 1 0 #cpu-map 2 1 #cpu-map 3 2 #cpu-map 4 3 pidfile /usr/local/haproxy/run/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:q1w2e3r4ys listen web_port bind 0.0.0.0:80 mode http log global server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5