环境:centos 7
HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机。 HAProxy适用于那些负载特大的web站点。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 且官方已经有包含硬件的商业化产品出来。HA的高并发处理能力值得一用!
1.源码安装
从官网下载最新稳定版本的源码包:
tar xzf haproxy-1.6.9.tar.gz
cd haproxy-1.6.9
make TARGET=linux3100 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1
# TARGET=linux3100 这个值根据系统当前版本而定,uname -r 查询当前内核版本
#安装目录/usr/local/haprpxy
make install PREFIX=/usr/local/haproxy
或者是yum安装,一般自带版本较低。
yum install -y haproxy
2.配置文件
haproxy的配置文件可划分为5段:
global 全局配置
default 默认配置
listen 同时拥有frontend与backend的功能
frontend 代理前端
backend 后端真实服务器组
负载均衡算法:
balance [ ]
支持下面几种算法:
roundrobin 轮询
static-rr 基于权重轮询
leastconn WLC适用于长连接
source 源地址hash
一个简单的配置安全,实现基本功能
global
log 127.0.0.1 local0 info
daemon
user haproxy
group haproxy
global
log 127.0.0.1 local0 info
daemon
user haproxy
group haproxy
maxconn 4096
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option redispatch
option abortonclose
option dontlognull
listen status
bind 0.0.0.0:8080
mode http
log global
stats enable
stats refresh 30s
stats uri /admin_status
stats realm Private lands
stats auth admin:admin #这两行前后紧跟
stats admin if TRUE #开启WEB页面管理功能
stats hide-version
frontend http-in
mode http
bind *:80
default_backend servers
backend servers
server server1 127.0.0.1:8090 check maxconn 32
server server2 127.0.0.1:8090 check maxconn 32
server server3 127.0.0.1:8090 check maxconn 32
3.启动和停止haproxy
在没有脚本的情况下,使用命令管理haproxy进程。
以后台进程运行haproxy
/usr/local/haproxy/sbin/haproxy -D -f ${path}/haproxy.conf
正式运行前,或修改文件后,先检查配置文件语法是否正确,再运行。
/usr/local/haproxy/sbin/haproxy -c -f ${path}/haproxy.conf
#类似于reload操作,修改配置文件后,不停止进程的情况下重新加载配置文件。
/usr/local/haprpxy/sbin/haproxy -D -f /usr/local/haprpxy/conf/haproxy.cfg -sf `cat haproxy.pid` #重载,在旧的连接处理完成后再杀掉旧的进程
#可将sf替换成st,启用新的线程,不等旧的线程数据处理而直接杀掉老的线程
停止
pkill haproxy
kill -s SIGUSR1 `pgrep haproxy` #平滑停止
kill -s SIGTERM `pgrep haproxy` #立即停止 不等进程处理完当前请求
kill -9 $pid #强制杀死进程
4.haproxy命令
haproxy -c -f 检测配置语法
haproxy -D -f config.cfg 启动 守护进程
hproxy -D -f config.cfg -p $PIDFILE -sf $(cat $PIDFILE)
/usr/local/haprpxy/sbin/haproxy -D -f /usr/local/haprpxy/conf/haproxy.cfg -sf `pgrep haproxy` #reload 重新加载进程