Haproxy配置

2018-12-08  本文已影响0人  N33_LvQing

Haproxy可以做代理服务相对于nginx而言有很多相同之处,统一可以基于mode tcp进行四层代理也可以基于mode http进行七层代理,但不同的是其无法使用location和if等进行匹配判断。突出优势在于有web管理界面,状态统计非常详细。官方推荐只启用一个进程,相对于nginx多核架构工作并不理想。
程序环境:
主程序:/usr/sbin/haproxy
主配置文件:/etc/haproxy/haproxy.cfg
Unit file:/usr/lib/systemd/system/haproxy.service

    配置段:
        global:全局配置段
            进程及安全配置相关的参数
            性能调整相关参数
            Debug参数
        proxies:代理配置段
            defaults:为frontend, listen, backend提供默认配置;
            frontend:前端,相当于nginx, server {}
            backend:后端,相当于nginx, upstream {}
            listen:同时拥前端和后端

查看配置文件

global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

重要的几个参数,及性能调优,多数无需修改

    log:定义全局的syslog服务器;最多可以定义两个;
    log <address> [len <length>] <facility> [max level [min level]]
    nbproc <number>:要启动的haproxy的进程数量;
    ulimit-n <number>:每个haproxy进程可打开的最大文件数;
    maxconn <number>:设定每个haproxy进程所能接受的最大并发连接数;
         最大的并发连接数=nbproc * maxconn
    maxconnrate <number>:每个进程每秒种所能创建的最大连接数量;
    maxcomprate :压缩创建的速率
    maxsessrate <number>:进程每秒能创建的会话数量
    maxsslconn <number>:每个进程所能接受的ssl连接数
    spread-checks <0..50, in percent>:散开监控状态检测

发现日志发送给本机rsyslog的local2的facility,而本机的rsyslog里并没有定义,需要我们自己去配置
所以vim /etc/rsyslog.conf添加一段将local2的所有信息记录在对应日志文件中

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
local2.*              /var/log/haproxy.log

接下来我们在haproxy的配置文件中添加我们自定义的frontend和backend

frontend myweb #haproxy内部标识
        bind *:80  #监听80端口
        default_backend webservs #转发给后端webservs

backend webservs
        balance roundrobin
        server serv1 192.168.31.201:80 check #检测健康状态
        server serv1 192.168.31.203:80 check 

然后我们访问haproxy服务器的地址,就可以轮询负载均衡了

root@lvqing:~# for i in {1..10};do curl http://192.168.31.200;done
<h1> backend serv1 </h1>
<h1>backend serv2</h1>
<h1> backend serv1 </h1>
<h1>backend serv2</h1>
<h1> backend serv1 </h1>
<h1>backend serv2</h1>
<h1> backend serv1 </h1>
<h1>backend serv2</h1>
<h1> backend serv1 </h1>
<h1>backend serv2</h1>
上一篇下一篇

猜你喜欢

热点阅读