HAProxy参数简单记录

简介

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。(摘自百度百科)

官方文档

HAProxy使用

HAProxy安装

由于HAProxy在base包中,可以直接使用yum安装

yum install -y haproxy

HAProxy配置

global

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
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

global字段用来定义全局配置,用来调整进程、性能等参数。

log

log 127.0.0.1 local2 定义全国的syslog服务器,以哪种级别以上的方式来记录到日志当中。 log最多定义两个

示例:
1)如果记录到本地的rsyslog中,我们需要先将rsyslog以C/S架构运行,修改/etc/rsyslog.conf 修改以下两项

$ModLoad imudp
$UDPServerRun 514

添加一项
local2.*                                              /var/log/haproxy.log

2)重启rsyslog服务

[root@ydong ~]# ss -unlp | grep 514
UNCONN     0      0            *:514                      *:*                   users:(("rsyslogd",pid=9554,fd=3))
UNCONN     0      0           :::514                     :::*                   users:(("rsyslogd",pid=9554,fd=4))

3)日志已经出现

[root@ydong ~]# ls /var/log/haproxy.log 
/var/log/haproxy.log

chroot

chroot /var/lib/haproxy 修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot()操作,可以提升haproxy的安全级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限;

pidfile

·pidfile /var/run/haproxy.pid haproxy的进程文件

maxconn

maxconn 4000 每个进程所能接收的最大并发连接数

user 和group

user haproxy /group haproxy 定义运行haproxy时的用户和组

daemon

daemon 让haproxy以后台运行的方式运行。 可以在命令行使用-db的方式禁止运行在后台

nbproc

nbproc <number> haproxy创建的进程,默认为1个进程,这也是官方推荐的。 因为多个进程调试起来比较困难,但是如果系统打开的文件数量较少,可以增加此进程的数量

ulimit -n

ulimit -n <number> : 每个haproxy打开的文件数量,官方不建议修改此项,默认即可

maxconnrate

maxconnrate <number> :每个进程每秒钟所能创建的最大连接数

spread-checks

spread-checks <0..50, in percent> :检查对后端的服务器进程分散检测,避免同一个时间精确检测,导致服务器负载极速上升。 官方建议设置在‘2-5’之间。

proxies

defaults

defaults段的参数,是默认参数,它会自动被应用到frontend、backend里。因此,一些公用的配置,可以放入到这里。如果在frontend、backend中也写入了同样的参数,那么defaults段的参数将被覆盖。

frontend

定义haproxy的前端,用于与客户端通信。

backend

定义后端的real server。 haproxy将请求转发给后端真正处理的服务器

listen

前端和后端的组合体。

简单的proxy示例

frontend web
  bind :80
  use_backend websrv
 
backend websrv
  balance roundrobin
  server srv1 172.17.0.2:80 check
  server srv2 172.17.0.3:80 check

bind

bind:定义监听的一个或者多个端口,可在frontend、listen中使用。

示例:

listen websrv
  bind *:80
  balance roundrobin
  server web1 172.17.0.2:80 check
  server web2 172.17.0.3:80 check
 

balance

balance:后端服务器的调度算法。 只能用在listen、backend、defaults

  • roundrobin:基于权重的轮询方式
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值