淺談HAProxy介紹及安裝

1️⃣ HAProxy簡介

  • 使用yum info haproxy,查看haproxy描述

摘要:HAProxy是在高可用環境下提供TCP/HTTP proxy和Load Balance的工具。
描述:HAProxy 是一個適用於HA環境的 TCP/HTTP reverse proxy(譯者注:本身沒有HA功能,但是有proxy和LB功能,可以這樣理解,HA的proxy…… ),HAProxy可以:

  • 路由依賴靜態分配cookies的HTTP請求。
  • 在多個服務器之間擴展負載,同時確保通過使用HTTP cookie來保持服務器的持久性。
  • 在主服務器fail時候,可以切換到備用服務器。
  • 接受連接到特定端口的專用服務監控
  • 在不斷開已有的鏈接的情況下,停止接受新的鏈接請求。
  • 雙向添加,修改,刪除HTTP headers。
  • 鎖定匹配特定模式的請求。
  • 從一個被應用解析的URI來報告詳細狀態給認證過的用戶(譯者注:相當方便和強大)

在這裏插入圖片描述

  • HAProxy是一個純粹的reverse proxy,能夠實現基於TCP的4層和基於HTTP的7層負載均衡功能
  • 但是和Nginx不一樣,是沒有Web Server功能的,所以HAProxy後端通常會接Nginx或Apache httpd等Web Server。
  • 通常HAproxy會和Keepalived配合使用,實現高可用的負載均衡
    在這裏插入圖片描述
  • 更多詳細的介紹可以看官方文檔:Introduction to HAProxy

2️⃣ HAProxy安裝

🅿 Ubuntu安裝

ubuntu內核版本比較高,所以按照官方的說明來安裝

apt-get install software-properties-common
add-apt-repository ppa:vbernat/haproxy-2.0  # 安裝過程要敲回車鍵
apt-get update
apt-cache madison haproxy                   # 查看haproxy版本        
apt-get install haproxy=2.0.12-1ppa1~bionic -y

# 驗證haproxy版本
haproxy -v
HA-Proxy version 2.0.12-1ppa1~bionic 2019/12/21 - https://haproxy.org/

# 啓動haproxy並驗證狀態
systemctl enable --now haproxy
systemctl status haproxy
ps -ef | grep haproxy

🅿 centos編譯安裝

因爲centos內核版本低,導致yum安裝的haproxy版本太低

▶ 1.解決lua環境

  • HAProxy 支持基於lua實現功能擴展
  • 由於centos自帶的lua版本比較低並不符合HAProxy要求的lua低版本(5.3)的要求,因此需要編譯安裝較新版本的 lua環境,然後才能編譯安裝HAProxy
yum -y install epel-release
# 編譯環境
yum install libtermcap-devel ncurses-devel libevent-devel readline-devel 
wget http://www.lua.org/ftp/lua-5.3.5.tar.gz 
tar xvf  lua-5.3.5.tar.gz 
cd lua-5.3.5 # make linux test
pwd 
/usr/local/src/lua-5.3.5 
lua -v #當前系統版本 
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio 
./src/lua -v #編譯安裝的版本 
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio

▶ 2.編譯安裝HAProxy

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.12.tar.gz
cd /usr/local/src 
tar xvf haproxy-2.0.4.tar.gz 
# 安裝編譯環境
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel net-tools
 
# HAProxy  1.8及1.9版本編譯參數: 
make  ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  USE_CPU_AFFINITY=1  PREFIX=/usr/local/haproxy 
 
# HAProxy 2.0編譯參數: 
make  ARCH=x86_64 TARGET=linux-glibc  USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1  USE_SYSTEMD=1  USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src/  LUA_LIB=/usr/local/src/lua-5.3.5/src/ PREFIX=/usr/local/haproxy 
make install PREFIX=/usr/local/haproxy \
cp haproxy  /usr/sbin

# 查看haproxy版本
haproxy -v
HA-Proxy version 2.0.12 2019/12/21 - https://haproxy.org/

▶ 3.製作haproxy啓動腳本

vim /usr/lib/systemd/system/haproxy.service    # 這是centos啓動腳本路徑

[Unit] 
Description=HAProxy Load Balancer 
After=syslog.target network.target
 
[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

▶ 4.製作配置文件

mkdir -p /etc/haproxy
useradd -s /sbin/nologin   -r haproxy
vim /etc/haproxy/haproxy.cfg
global 
maxconn 100000 
chroot /usr/local/haproxy 
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin 
user haproxy
group haproxy
daemon 
#nbproc 4 
#cpu-map 1 0
#cpu-map 2 1 
#cpu-map 3 2 
#cpu-map 4 3 
pidfile /var/lib/haproxy/haproxy.pid 
log 127.0.0.1 local3 info
 
defaults 
option http-keep-alive 
option  forwardfor 
maxconn 100000 
mode http 
timeout connect 300000ms 
timeout client  300000ms 
timeout server  300000ms

▶ 4.啓動HAProxy並驗證狀態

mkdir -p /var/lib/haproxy
chown -R haproxy.haproxy /var/lib/haproxy

# 加載啓動文件
systemctl daemon-reload
# 啓動驗證狀態
systemctl enable --now haproxy
systemctl status haproxy
ps -ef | grep haproxy
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章