HAProxy:第三方包及编译安装

第三方安装包

https://pkgs.org/download/haproxy #下载rpm包
https://centos.pkgs.org/7/ius-x86_64/lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm.html #下载yum安装haproxy所依赖的lua的rpm包

使用rpm包安装haproxy18u-1.8.20-1.el7.ius.x86_64.rpm时会提示liblua-5.3.so()(64bit),需要lua的版本为5.3,centos系统上的版本为5.1,所以需要升级系统上的lua;开发haproxy时调用的liblua是5.3及以上版本,但是centos上的lua版本太低。

注:yum安装haproxy前需要先下载haproxy所需要的新版本的lua包,yum安装haproxy需要下载lua的rpm包,而不是下载lua的源码包;lua的源码包用于编译安装haproxy,lua的rpm包用于yum安装haproxy。

[root@app ~]# wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64//haproxy18u-1.8.20-1.el7.ius.x86_64.rpm  #下载haproxy包
[root@app ~]# wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64//lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm  #下载yum安装haproxy所需要的lua包
[root@app ~]# yum install lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm -y
[root@app ~]# yum install haproxy18u-1.8.20-1.el7.ius.x86_64.rpm -y

lua简介

HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,于1993年由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua应用场景:
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件,如MySQL Proxy
安全系统,如入侵检测系统

编译安装HAProxy

http://www.haproxy.org/ #haproxy源码包下载

haproxy-2.0.12.tar.gz为稳定并且长期支持(LTS)的版本

[root@app ~]$ yum install gcc libtermcap-devel ncurses-devel libevent-devel readline-devel -y   #安装编译lua所需要的底层库
[root@app ~]$ wget http://www.lua.org/ftp/lua-5.3.5.tar.gz   #下载lua的源码包
[root@app ~]$ tar xf lua-5.3.5.tar.gz -C /usr/local/src/
[root@app ~]$ cd /usr/local/src/lua-5.3.5/
[root@app lua-5.3.5]$ make linux test          #编译安装lua
[root@app lua-5.3.5]$ src/lua -v       #查看编译安装完lua的版本信息
[root@app lua-5.3.5]$ cd
[root@app ~]$ yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate -y   #安装编译haproxy所需要的环境
[root@app ~]$ wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.12.tar.gz
[root@app ~]$ tar xf haproxy-2.0.12.tar.gz -C /usr/local/src/
[root@app ~]$ cd /usr/local/src/haproxy-2.0.12/
[root@app haproxy-2.0.12]$ 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=/apps/haproxy  #编译并指定开启的参数
ARCH=x86_64  #CPU架构
TARGET=linux-glibc  #通用linux内核
USE_PCRE=1  #PCRE支持正则表达式,用于用户请求的uri
USE_OPENSSL=1   #https,证书
USE_ZLIB=1   #开启压缩
USE_SYSTEMD=1   #使用systemd启动haproxy主进程
USE_CPU_AFFINITY=1  #CPU亲和性,让haproxy指定的进程工作在指定的CPU核心上
USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src LUA_LIB=/usr/local/src/lua-5.3.5/src   #开启lua,及lua和lua库所在路径
PREFIX=/apps/haproxy   #指定安装路径
[root@app haproxy-2.0.12]$ make install PREFIX=/apps/haproxy    #生成的模块、文件和二进制程序拷贝到指定路径

HAProxy启动脚本

编译安装完的haproxy是没有配置文件和service文件的;编辑一个service文件

[root@app ~]$ vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target

[Service]
ExecStartPre=/apps/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/apps/haproxy/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

创建并编辑haproxy配置文件

[root@app ~]$ mkdir /etc/haproxy
[root@app ~]$ vim /etc/haproxy/haproxy.cfg
[root@app ~]$ vim /etc/haproxy/haproxy.cfg
global
maxconn 100000
chroot /apps/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
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

listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /haproxy-status
stats auth haadmin:q1w2e3r4ys

listen web_port
bind 192.168.38.37:80
mode http
log global
server web1 127.0.0.1:80 check inter 3000 fall 2 rise 5 
[root@app ~]$ mkdir /var/lib/haproxy/         #创建haproxy配置文件中,所指定存放pid和socket文件的目录
[root@app ~]$ systemctl start haproxy
原文地址:https://www.cnblogs.com/dongzhanyi123/p/12089885.html