第三方安装包
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