hproxy 编译安装
该次安装路径为/usr/local/haproxy
解压包存放处为/srv/haproxy-1.5.18
测试haproxy 1.7.8无法满足范围端口转发,也可能是配置方式不同,但测试时暂不满足如下范围端口转发配置。
haproxy各版本压缩包下载地址 src.fedoraproject.org/repo/pkgs/h…
-
上传压缩包并解压
-
进入解压目录并进行编译
因需要支持ssl,编译需要编译ssl
make TARGET=linux2628 ARCH=x86_64 USE_OPENSSL=1 ADDLIB=-lz make install PREFIX=/usr/local/haproxy -
不需要ssl
make TARGET=linux2628 ARCH=x86_64 make install PREFIX=/usr/local/haproxy注意:需先make 再 make install。make install 直接指定安装路径即可,否则不生效。
-
将haproxy和openssl库连接
ldd haproxy | grep ssl -
复制haproxy启动服务到指定目录下
cp /usr/local/haproxy/sbin/haproxy /usr/sbin/ -
复制启动脚本到/etc/init.d/目录下并添加权限
cp /srv/haproxy-1.7.8/examples/haproxy.init /etc/init.d/haproxy chmod 755 /etc/init.d/haproxy -
创建run conf 目录 注意同时修改启动脚本中对应目录
mkdir {run,conf} -
配置启动用户
groupadd haproxy useradd -g haproxy haproxy -s /sbin/nologin -
创建配置文件 并进行配置
vim haproxy.cfg -
启动
service haproxy start
haproxy 配置
-
配置详情
global log 127.0.0.1 local2 chroot /data/public/haproxy pidfile /data/public/haproxy/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /data/public/haproxy/run/stats defaults mode http log global # option httplog option tcplog option dontlognull # option http-server-close # option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 20480 listen stats bind 0.0.0.0:1080 mode http log 127.0.0.1 local3 err option httplog maxconn 10 stats refresh 30s stats uri /stats stats realm MyHaproxy\ Haproxy stats auth admin:Admin@123 stats hide-version stats admin if TRUE listen hf-xx01 bind 0.0.0.0:61616 mode tcp balance leastconn server hf-xx01-01 172.16.a.b:21212 check inter 2000 rise 2 fall 5 -
进行ssl配置 类似于nginx中的代理 将443代理到后端端口
注意:haproxy与nginx不可并存使用ssl 因为无法共用443端口
将证书的公钥私钥存于一个pem文件中
cat servername.crt servername.key |tee servername.pem
-
ssl配置
frontend https_frontend bind *:443 ssl crt /usr/local/haproxy/ssl/changyan.pem mode http option httpclose option forwardfor reqadd X-Forwarded-Proto:\ https default_backend test-50000 backend test-50000 bind *:50000 default_backend ssoutbackend mode http balance roundrobin cookie SERVERID insert indirect nocache server cnjk 0.0.0.0:40088 check inter 2000 rise 2 fall 5 -
范围端口转发配置 测试得到ssl暂无法进行范围端口转发
frontend 101-in bind *:40000-41000 default_backend 101-out backend 101-out server server1 172.31.195.121 maxconn 20480
本次需求及遗存问题
在测试过程中 要求是https 并 支持范围端口转发
在测试范围端口转发时,一开始测试得到端口范围有限制,只能代理20个范围端口出去。但后续排查发现并没有范围问题,当haproxy两个节点代理至同一个后端,会出现问题。停掉另一个节点测试,1000个端口均正常。
在此存疑,不清楚是haproxy的关系还是奇葩的服务关系。
同时暂未找出同时满足https及支持端口范围的配置方法