Haproxy原始碼安裝
Haproxy原始碼安裝
目錄
瞭解haproxy
Haproxy比nginx的代理功能更強,可以達到10W以上的訪問併發,但沒有LVS的併發訪問能力強大。
Haproxy既可以代理7層,又可以代理4層。
在公有云架構中:
阿里雲上的四層代理用LVS,七層代理用tingine自己的代理功能。
提供負載均衡的軟體有三款:LVS、Nginx、Haproxy
LVS併發數可以達到百萬級,而Haproxy併發數可以達到十萬級
三款負載均衡軟體區別:
LVS:工作在核心空間,後端伺服器端看到的IP是來自訪問客戶端的
Nginx:工作在使用者空間,,後端伺服器端看到的IP是來自Nginx代理端的
Haproxy:並非真正的4層,而是偽4層
硬體:
F5
Netscaler
Array
深信服
北京靈州
Haproxy配置檔案
預設監聽埠:5000
安裝Haproxy
安裝環境:
系統:centos7
lua版本:Lua 5.3.6
Haproxy版本:HA-Proxy version 2.0.22
1、解決lua環境
Lua官網:www.lua.org
Lua安裝文件:https://www.lua.org/start.html
將下載好的lua軟體上傳到linux上
安裝基礎命令及編譯依賴環境:
[root@db02 ~]# yum install gcc readline-devel -y
解壓縮並安裝:
[root@db02 ~]# tar zxf lua-5.3.6.tar.gz
[root@db02 ~]# cd lua-5.3.6/
[root@db02 ~]# make linux
檢視lua版本
[root@db02 lua-5.3.6]# pwd /root/lua-5.3.6 [root@db02 lua-5.3.6]# ./src/lua -v Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio
2、安裝Haproxy
安裝基礎命令及編譯依賴環境:
[root@db02 ~]# yum -y install gcc openssl-devel pcre-devel systemd-devel
haproxy官網:http://www.haproxy.org/
下載haproxy 2.0 版本:
http://www.haproxy.org/download/2.0/src/haproxy-2.0.22.tar.gz
將下載好的lua軟體上傳到linux上
安裝基礎命令及編譯依賴環境:
[root@db02 ~]# yum -y install gcc openssl-devel pcre-devel systemd-devel
解壓縮並安裝:
[root@db02 ~]# tar zxf haproxy-2.0.22.tar.gz
[root@db02 ~]# cd haproxy-2.0.22/
參考INSTALL檔案進行編譯安裝:
[root@db02 haproxy-2.0.22]# cat INSTALL
[root@db02 haproxy-2.0.22]# make -j 4 TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/root/lua-5.3.6/src LUA_LIB=/root/lua-5.3.6/src
[root@db02 haproxy-2.0.22]# make install PREFIX=/apps/haproxy
[root@db02 haproxy-2.0.22]# ln -s /apps/haproxy/sbin/haproxy /usr/sbin/
[root@db02 ~]# tree /apps/haproxy
/apps/haproxy
├── doc
│ └── haproxy
│ ├── 51Degrees-device-detection.txt
│ ├── architecture.txt
│ ├── close-options.txt
│ ├── configuration.txt
│ ├── cookie-options.txt
│ ├── DeviceAtlas-device-detection.txt
│ ├── intro.txt
│ ├── linux-syn-cookies.txt
│ ├── lua.txt
│ ├── management.txt
│ ├── netscaler-client-ip-insertion-protocol.txt
│ ├── network-namespaces.txt
│ ├── peers.txt
│ ├── peers-v2.0.txt
│ ├── proxy-protocol.txt
│ ├── regression-testing.txt
│ ├── seamless_reload.txt
│ ├── SOCKS4.protocol.txt
│ ├── SPOE.txt
│ └── WURFL-device-detection.txt
├── sbin
│ └── haproxy
└── share
└── man
└── man1
└── haproxy.1
6 directories, 22 files
3、驗證Haproxy版本
[root@db02 ~]# which haproxy
/usr/sbin/haproxy
[root@db02 ~]# /usr/sbin/haproxy -v
HA-Proxy version 2.0.22-d4759ba 2021/04/12 - https://haproxy.org/
4、建立配置檔案
檢視配置檔案範例:
[root@db02 ~]# tree /apps/haproxy-2.0.22/examples/
/apps/haproxy-2.0.22/examples/
├── acl-content-sw.cfg
├── content-sw-sample.cfg
├── errorfiles
│?? ├── 400.http
│?? ├── 403.http
│?? ├── 408.http
│?? ├── 500.http
│?? ├── 502.http
│?? ├── 503.http
│?? ├── 504.http
│?? └── README
├── haproxy.init
├── option-http_proxy.cfg
├── socks4.cfg
├── transparent_proxy.cfg
└── wurfl-example.cfg
1 directory, 15 files
建立自定義的配置檔案:
[root@db02 ~]# mkdir /etc/haproxy
[root@db02 ~]# vim /etc/haproxy/haproxy.cfg
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
Documentation=man:haproxy(1)
Documentation=file:/apps/haproxy/doc/haproxy/configuration.txt
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
建立socket檔案的目錄:
[root@db02 ~]# mkdir /var/lib/haproxy/
建立執行haproxy的使用者:
[root@db02 ~]# useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy
將haproxy的幫助文件,加入到幫助裡邊
[root@db02 ~]# tree /apps/haproxy/share/man/
[root@db02 ~]# vim /etc/man_db.conf
MANDATORY_MANPATH /apps/haproxy/share/man/
更新man的資料庫:
[root@db02 ~]# mandb
5、啟動haproxy
[root@db02 ~]# systemctl enable --now haproxy
[root@db02 ~]# systemctl start haproxy
[root@db02 ~]# systemctl status haproxy