下载地址:https://www.haproxy.org/#down

tar -xzf haproxy-1.8.14.tar.gz

cd cd haproxy-1.8.14

查看README:相关的编译参数

make TARGET=linux2628 PREFIX=/main/server/haproxy

mkdir  /main/server/haproxy

make install PREFIX=/main/server/haproxy

创建配置文件:

mkdir /main/server/haproxy/conf

vim /main/srever/haproxy/conf/haproxy.cfg

注:源码安装是没有示例配置文件的,需要自己创建,如果是rpm安装的,会有默认的示例配置文件。

示例配置文件粘贴:

方式一:

global

        daemon

        maxconn 256

    defaults

        mode http

        timeout connect 5000ms

        timeout client 50000ms

        timeout server 50000ms

    

        frontend  main 

         bind  *:5000

        #基于七层做负载均衡

        acl url_static       path_beg       -i /static /images /javascript /stylesheets

        acl url_static       path_end       -i .jpg .gif .png .css .js

        use_backend static          if url_static

        #use_backend <服务器组> if <ACL名字>

        #acl <ACL名字> <类型> <大小写> <规则>

        default_backend             app

    backend servers

        server server1 127.0.0.1:8000 maxconn 32

方式二:

    # The same configuration defined with a single listen block. Shorter but

    # less expressive, especially in HTTP mode.

    用单个监听块定义相同的配置,但是较短代表较少的表达,特别是在HTTP模式下。

    global

        daemon

        maxconn 256

    defaults

        mode http

        timeout connect 5000ms

        timeout client 50000ms

        timeout server 50000ms

    listen http-in

        bind *:80

        server server1 127.0.0.1:8000 maxconn 32

注意:haproxy不会修改Client的http请求头信息。当Client拿域名www.thd99.com 访问haproxy时,会访问后端的www.thd99.com虚拟主机;当Client拿Ip 192.168.0.185访问haproxy时,会访问后端的默认虚拟主机。

配置文件:

[root@client conf]# cat haproxy.cfg

#全局

global

    log         127.0.0.1 local2

    chroot      /main/server/haproxy  #chroot改变当前工作目录,增加安全性

    pidfile     /main/server/haproxy.pid

    maxconn     4000

    user        haproxy

    group       haproxy

    nbproc      1    #number of process 进程的数量

    daemon           #以后台方式运行haproxy

    #stats socket /var/lib/haproxy/stats

#默认

defaults

    mode                    http

    log                     global

    option                  httplog

    option                  dontlognull

    option http-server-close

    option forwardfor       except 127.0.0.0/8

    option                  redispatch

    retries                 3

    timeout http-request    10s

    timeout queue           1m

    timeout connect         10s

    timeout client          1m

    timeout server          1m

    timeout http-keep-alive 10s

    timeout check           10s

    maxconn                 3000

#定义haproxy状态访问

listen stats

    bind 0.0.0.0:8080

    option httplog

    stats enable 

    stats uri /stats            #访问路径

    stats realm "Haproxy Auth"  #提示信息

    stats auth admin:admin      #认证的用户名和密码

    stats admin if TRUE         #通过认证才可管理

    stats refresh 3s            #页面刷新间隔

    stats show-desc demo

    stats hide-version          #隐藏版本号

#定义客户端与haproxy的访问

frontend  main

    bind *:80

    default_backend             www.thd99.com

#定义后端

backend www.thd99.com

    balance     roundrobin

    server      server1 192.168.0.186:80 check inter 1s rise 2 fall 3 cookie A maxconn 1000

    server      server2 192.168.0.146:80 check inter 1s rise 2 fall 3 cookie A maxconn 1000

配置日志输出:

1.

mkdir /var/log/haproxy

chmod a+w /var/log/haproxy

2. 开启rsyslog记录haproxy日志功能

编辑“/etc/rsyslog.conf”打开如下配置项:

# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

添加如下内容:

# Save haproxy log

local2.*                       /var/log/haproxy/haproxy.log

3. 修改“/etc/sysconfig/rsyslog”文件,内容如下

# Options for rsyslogd

# Syslogd options are deprecated since rsyslog v3.

# If you want to use them, switch to compatibility mode 2 by "-c 2"

# See rsyslogd(8) for more details

SYSLOGD_OPTIONS="-r -m 0 -c 2"

相关参数说明:

-r:    打开接受外来日志消息的功能,其监控514 UDP端口;

-x:   关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;

-m:  修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;

-h:   默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去.

4. systemctl restart rsyslog

运行服务:/main/server/haproxy/sbin/haproxy -f /main/server/haproxy/conf/haproxy.cfg

访问haproxy状态页面:192.168.0.185:8080/stats