源安装
1 2
| apt install software-properties-common
|
添加 haproxy source 源文件
1 2
| add-apt-repository ppa:vbernat/haproxy-2.0
|
更新一下源
查看选择需要安装的版本
1
| apt-cache madison haproxy
|
安装
1
| apt -y install haproxy=2.8.\*
|
编译安装
安装编译相关工具和依赖
1
| apt -y install gcc make libssl-dev libpcre3 libpcre3-dev zlib1g-dev libreadline-dev libsystemd-dev liblua5.4-dev
|
下载源码包
1
| wget http://www.haproxy.org/download/2.8/src/haproxy-2.8.0.tar.gz
|
解压
1
| tar xf haproxy-2.8.0.tar.gz && cd haproxy-2.8.0
|
构建编译的参数
1
| make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_PROMEX=1 USE_LUA=1
|
安装到指定目录
1
| make install PREFIX=/apps/haproxy
|
创建软链接,也就是添加可执行路径
1
| ln -s /apps/haproxy/sbin/haproxy /usr/local/sbin/
|
参考配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| global chroot /apps/haproxy 改变根目录 deamon 后台运行 mode tcp | http 转发类型 stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin proxess 1 这是socket文件,可用通过命令向该文件执行命令 user gid | username group uid | groupname 指定用户和组 nbproc n 该命令和nginx相似,开启n个进程,不过从2.5以后被弃用 nbthread n 指定每个进程开启的线程,默认为1,同时两者同时开启会报错,Centos8的1.8无此问题 cpu-map 1 0 cpu-map 2 1 亲缘性,CPU绑定进程,进程从1开始,cpu从0开始 cpu-map auto:1/1-8 0-7 自动绑定,每个进程的1-8个线程分别绑定0-7号cpu。haproxy2.4中为nbthreads maxconn n 每个进程的最大连接数为n maxsslconn n 每个进程的ssl最大连接数为n maxconnrate n 每个进程每秒能创建的最多连接数为n spread-checks n 后端server状态检查,建议为2-5,默认为0 pidfile /some/path/haproxy.pid PID文件路径 log 127.0.0.1 local2 info 日志发送到本机,默认为514 udp端口 log x.x.x.x local2 info 定义log,和rsyslog配合使用,local3为名称,info为日志等级,需要开启UDP,最多可以定义两个 日志配置 vim /etc/rsyslog.conf module(load="imudp") input(type="imudp" port="514")
echo local2.* /var/log/haproxy.log 或 local2.info /var/log/haproxy.log > /etc/rsyslog.d/50-default.conf systemctl restart rsyslog defaults option redispatch 重定向其他正常服务器 option abortonclose 自动结束连接时长较久的连接 option http-keep-alive 开启与客户端的会话保持 option forwardfor 透传真实IP至后端服务器,可自定义修改 mode http | tcp 默认工作类型 timeout http-keep-alive 会话保持时间 timeout connect 120s 客户端请求从haproxy到后端server最长连接等待时间(TCP连接之前)默认单位 ms timeout server 600s 客户端请求从haproxy到后端服务端的请求处理超时时长(TCP连接之后),超时502 timeout client 600s 设置haproxy与客户端的最长非活动时间,默认单位ms,建议和timeoutserver相同 timeout check 5s 对后端服务器的默认检测超时时间 default-server inter 1000 weight 3 指定后端服务器的默认设置
前后端整合 listen nginx 使用listen替换 frontend和backend的配置方式,可以简化设置,常用于TCP协议的应用 bind 公网IP:端口 mode tcp | http server web1 后端IP:port server web2 后端IP:port
前端服务器 frontend nginx bind 公网IP:端口 use_backend real-nginx
后端服务器 backend real-nginx redirect prefix http://www.baidu.com/ 全局重定向,只适合http server web1 后端IP:port check inter 5000 fail 3 rise 3 每5秒检查一次,如果3次不通就挂,上线同理 server web2 后端IP:port weight 3 权重 server web2 后端IP:port check backup 备份服务器,可当sorry server server后字段 check addr <IP> 可指定的健康状态监测IP,可以是专门的数据网段,减少业务网络的流量 port <num> 指定的健康状态监测端口 inter <num> 健康状态检查间隔时间,默认2000 ms fall <num> 后端服务器从线上转为线下的检查的连续失效次数,默认为3 rise <num> 后端服务器从下线恢复上线的检查的连续有效次数,默认为2 disable 关闭服务器 maxconn 后端服务器最大连接数 redir http://x.x.x 局部302临时重定向到某url,只适合http
listen mysql bind 0.0.0.0:3306 haproxy端口 mode tcp 如果不指定tcp,会以http进行连接 server data1 x.x.x.x:3306 后端数据库地址和端口
listen stats mode http bind 0.0.0.0:9999 stats enable log global 开启日志,默认不开启 stats uri /haproxy-status 访问后缀 stats auth admin:123456 开启认证 stats refresh 5 自动刷新,这里是每5s stats admin if TURE 如果是admin就允许访问stats页面
|
检查配置文件
1
| haproxy -c -f /etc/haproxy/haproxy.cfg
|
创建用户
1 2
| useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy
|
创建damon.service文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| cat << EOF > /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 -f /etc/haproxy/haproxy.d/ -c -q #-f可指定文件,也可指定目录,目录一般存放子配置文件 ExecStart=/usr/local/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/haproxy.d/ -p /var/lib/haproxy/haproxy.pid ExecReload=/bin/kill -USR2 $MAINPID LimitNOFILE=100000 [Install] WantedBy=multi-user.target EOF
|
1
| systemctl daemon-reload && systemctl start haproxy
|
web端访问 http://ip:9999/haproxy-status
官方配置手册 http://docs.haproxy.org/2.8/configuration.html