HAPROXY的安装及配置文件

一、安装

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版权协议,转载请附上原文出处链接和本声明。