HAProxy在Windows下實現負載均衡與反向代理


前言

HAProxy是一個款基於Linux的開源高可用的負載均衡與反向代理工具,與Nginx大同小異。
搜遍了全網,幾乎都是基於Linux平台。Windows平台的要么就是多年前的舊版本,要么就是不兼容OpenSSL,無法進行HTTPS請求,要么就是花錢買但又覺得不一定適用。
索性花了小半天時間研究了下,成功build出基於windows的haproxy2.2.4(最新版是2.2.5,擔心最新版的穩定性,所以選了前面一個小版本)。

安裝cygwin

  1. 下載cygwin(https://cygwin.com/install.html)。
  2. 安裝cygwin。
  3. 設置下載源的時候簡易使用網易源(http://mirrors.163.com/cygwin/)。
  4. 選擇Category 並且搜索gcc,點擊Devel。
  5. 重復上一步驟,搜索並安裝make tools,這個是OPENSSL所必需的,否則將會報錯(多么痛的領悟)。

編譯&安裝HAProxy

  1. 下載haproxy (https://www.haproxy.org/download/2.2/src/),這個是所有2.2大版本的目錄,博主選擇V2.2.4。
  2. 下載完成后,拷貝到cygwin的home目錄下,並運行cygwin.bat,解壓命令:tar -zxvf haproxy-2.2.4.tar.gz。
  3. 然后輸入命令:make TARGET=cygwin USE_PCRE=1 USE_REGPARM=1 USE_STATIC_PCRE=1 USE_OPENSSL=1,后面幾個參數很重要,都是OPENSSL加密所需。
  4. 然后輸入命令:make install,之后在解壓文件夾里即可找到haproxy.exe。
  5. 將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 AlphaServer
mode http
balance roundrobin
server AlphaServer localhost:10086

listen admin_status
bind *:1188
mode http
stats refresh 30s
stats uri /
stats auth haproxy:haproxy
stats admin if TRUE

這里實現的是http模式,而不是tcp。會將所有http的請求轉到https的10086端口。

2.創建start/stop的bat文件

創建一個run.bat文件,輸入一下命令:

haproxy.exe -f haproxy.cfg -d 

雙擊運行時,可以看到一個輸出控制台:

創建一個stop.bat,輸入一下命令:

taskkill /IM haproxy.exe /F

當需要停止haproxy時,雙擊運行結束haproxy。

3.測試

  1. 當啟動haproxy的時,可以通過config文件的listen的端口,查看haproxy的traffic stats。

  2. 本地新建一個網站,這個網站的端口不能和haproxy fontend 的端口沖突,否則haproxy將啟動失敗,之后瀏覽器訪問fontend端口將全部跳轉到backend端口。

  3. 當有多個backend時,會根據配置的算法將請求分發出去,以達到load balance。

以上就是編譯了一個基於windows版的haproxy,實現http轉到https的安全代理請求,當后端有多個server時,可以實現負載均衡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM