1. 程式人生 > 其它 >Haproxy原始碼安裝

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

下載地址:https://www.lua.org/ftp/

將下載好的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

6、檢視haproxy的狀態頁面

瀏覽器訪問:http://192.168.1.75:9999/haproxy-status