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