一、安装
1、Lua 应用场景
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件,如MySQL Proxy
安全系统,如入侵检测系统
2、基本环境
#yum install gcc readline-devel
#wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
#yum -y install gcc openssl-devel pcre-devel systemd-devel
# wget -c https://www.lua.org/ftp/lua-5.4.0.tar.gz --no-check-certificate 下载软件包
# tar xf lua-5.4.0.tar.gz -C /usr/local/src/ 解压
# tar xf haproxy-2.2.9.tar.gz -C /usr/local/src/ 解压
# cd /usr/local/src/
# cd lua-5.4.0/
# make linux text 编译依赖环境
#make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.0/src/ LUA_LIB=/usr/local/src//lua-5.4.0/src/ 编译参数
#make install PREFIX=/apps/haproxy 安装 路径可以自己选择
#make install PREFIX=/apps/haproxy 配置环境变量
#ln -sv /apps/haproxy/sbin/haproxy /usr/sbin/ 软连接
#haproxy -v 查看版本信息
二、脚本文件
1、编写脚本文件
# cat /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Blancer
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 -USER2 $MAINPID
[Install]
WantedBy=multi-user.target

默认缺少配置文件,无法启动
2、配置文件
[root@localhost ~]# mkdir /etc/haproxy
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
[root@localhost ~]# mkdir /var/lib/haproxy
[root@localhost ~]# useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy 创建用户
#cat /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
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 local2 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:123456
listen web_port
bind 192.168.184.170:80
mode http
log global
server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5
3、启动
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start haproxy
[root@localhost ~]# systemctl enable --now haproxy
[root@localhost ~]# systemctl status haproxy.service


三、HaProxy日志配置
配置HAProxy记录日志到指定日志文件中
(1) Rsyslog配置
# vim /etc/rsyslog.conf
#由于haproxy的日志是用udp传输的,所以要启用rsyslog的udp监听
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
#启用级别为local2的设备,并将该设备的所有级别的日志全部输出到/var/log/haproxy.log下
local2.* /var/log/haproxy.log


(2) HAProxy配置
#在global配置项定义:
log 127.0.0.1 local{1-7} info #基于syslog记录日志到指定设备,级别有(err、warning、info、debug)
(3) 验证HAProxy日志
验证是否生成日志

四、Haproxy Proxies配置
1、Proxies配置frontend和backend
frontend webserver
balance roundrobin
mode tcp
bind 192.168.184.170:8081
use_backend webpool1
backend webpool1
default-server inter 1000 weight 6
server web1 192.168.184.145:80 check
server web2 129.168.184.173:80 check weight 2

测试(不知为何只显示web1页面,好像是配置文件哪个服务端地址写在前面就访问的哪个服务端)
2、Proxies配置-listen替代frontend+backend
使用listen替换上面的frontend和backend的配置方式,可以简化设置,通常只用于TCP协议的应用
listen webs
balance roundrobin
mode http
bind :808
server web1 192.168.184.173:80 check
server web2 129.168.184.145:80 check

haproxy的8种算法
1.balance roundrobin // 轮询,软负载均衡基本都具备这种算法
2.balance static-rr //根据权重,建议使用
3.balance leastconn // 最少连接者先处理,建议使用
4.balance source //根据请求源IP,建议使用
5.balance uri //根据请求的URI
6.balance url_param // 根据请求的URl参数'balance url_param' requires an URL parameter name
7.balance hdr(name) // 根据HTTP请求头来锁定每一次HTTP请求
8.balance rdp-cookie(name) //根据据cookie(name)来锁定并哈希每一次TCP请求
3、使用子配置文件保存配置
[root@localhost ~]# mkdir /etc/haproxy/conf.d
[root@localhost ~]# vim /etc/haproxy/conf.d/web.cfg
[root@localhost ~]# vim /usr/lib/systemd/system/haproxy.service
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart haproxy.service
# cat /etc/haproxy/conf.d/web.cfg
listen webs1
balance roundrobin
mode http
bind :818
server web1 192.168.184.173:80 check
server web2 129.168.184.145:80 check
# cat /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Blancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d/web.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d/web.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USER2 $MAINPID
[Install]
WantedBy=multi-user.target

版权声明:本文为qq_54245355原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。