在Windows进下build 高可用负载均衡与反向代理神器:HAProxy
前言
HAProxy是一个款基于Linux的开源高可用的负载均衡与反向代理工具,与Nginx大同小异。
搜遍了全网,几乎都是基于Linux平台。Windows平台的要么就是多年前的旧版本,要么就是不兼容OpenSSL,无法进行HTTPS请求,要么就是花钱买但又觉得不一定适用。
索性花了小半天时间研究了下,成功build出基于windows的haproxy2.2.4(最新版本是2.2.5,因担心最版本的稳定性,所以往前了一个小版本)。
安装cygwin
- 下载cygwin(https://cygwin.com/install.html)。
- 安装cygwin。
- 设置下载源的时候简易使用网易源(http://mirrors.163.com/cygwin/)。
- 选择Category 并且搜索gcc,点击Devel。
- 重复上一步骤,搜索并安装make tools,这个是OPENSSL所必需的,否则将会报错(多么痛的领悟)。
安装HAProxy
- 下载haproxy (https://www.haproxy.org/download/2.2/src/),这个是所有2.2大版本的目录,博主选择V2.2.4。
- 下载完成后,拷贝到cygwin的home目录下,并运行cygwin.bat,解压命令:tar -zxvf haproxy-2.2.4.tar.gz。
- 然后输入命令:make TARGET=cygwin USE_PCRE=1 USE_REGPARM=1 USE_STATIC_PCRE=1 USE_OPENSSL=1,后面几个参数很重要,都是OPENSSL加密所需。
- 然后输入命令:make install,之后在解压文件夹里即可找到haproxy.exe。
- 将haproxy.exe文件和cygwin1.dll文件拷贝到一个新文件夹(haproxy-openssl-2.2.4)。
运行haproxy
1.创建一个config文件
global
nbproc 1
daemon
ssl-default-bind-options force-tlsv12
defaults
timeout connect 90000ms
timeout client 90000ms
timeout server 90000ms
frontend HaProxy
bind *:80
redirect scheme https if !{ ssl_fc }
bind *:443
mode http
default_backend AlphaServer
backend OmniServer
mode http
balance roundrobin
server AlphaServer localhost:4433
listen admin_status
bind *:1188
mode http
stats refresh 30s
stats uri /
stats auth haproxy:haproxy
stats admin if TRUE
关于配置文件的含义,就不具体解释了,朋友们可以网上查一查。
2.创建start/stop的bat文件
这个应该很简单,也不一一赘述了。
测试
- 当启动haproxy的时,可以通过config文件的listen的端口,查看haproxy的traffic stats。
- 本地新建一个网站,这个网站的端口不能和haproxy fontend 的端口冲突,否则haproxy将启动失败,之后浏览器访问fontend端口将全部跳转到backend端口。
- 当有多个backend时,会根据配置的算法将请求分发出去,以达到load balance。
测试的时候忘了截图,有点干,朋友将就将就。