浅谈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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值