安装haproxy和haproxy命令

HaProxy系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.htmlhtml


1.安装haproxy

CentOS自带了haproxy,但可能版本比较老。能够在IUS源上找到最新稳定版的haproxy。linux

cat <<eof>/etc/yum.repos.d/ius.repo
[ius]
name=iusrepo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ius/stable/CentOS/$releasever/\$basearch
gpgcheck=0
enable=1
eof

yum -y install haproxy17u

如下是编译安装haproxy-1.7.10的过程。git

编译安装haproxy时,能够借助于pcre环境,该环境下编译时借助正则表达式分析编译速度会快不少,可是没有该环境也能够安装。github

yum -y install pcre pcre-devel tar xf haproxy-1.7.10.tar.gz cd haproxy-1.7.10 make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy USE_PCRE=1 make install PREFIX=/usr/local/haproxy

make时须要使用TARGET指定内核及版本,版本以下:正则表达式

- linux22     for Linux 2.2
- linux24     for Linux 2.4 and above (default)
- linux24e    for Linux 2.4 with support for a working epoll (> 0.21)
- linux26     for Linux 2.6 and above
- linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
- solaris     for Solaris 8 or 10 (others untested)
- freebsd     for FreeBSD 5 to 10 (others untested)
- netbsd      for NetBSD
- osx         for Mac OS/X
- openbsd     for OpenBSD 5.7 and above
- aix51       for AIX 5.1
- aix52       for AIX 5.2
- cygwin      for Cygwin
- haiku       for Haiku
- generic     for any other OS or version.
- custom      to manually adjust every setting

使用ARCH指定架构,不过ARCH选项可省。使用USE_PCRE=1表示使用PCRE环境编译,加快编译速度。bash

编译安装完成后,只有3个目录:doc、share和sbin,sbin里面只有一个haproxy的主程序haproxy。为了方便管理haproxy服务,能够从yum安装的haproxy中复制/etc/init.d/haproxy架构

2.haproxy命令

详细内容参见:http://cbonte.github.io/haproxy-dconv/1.8/management.htmlsocket

经常使用的几个:测试

# 检查配置文件语法
haproxy -c -f /etc/haproxy/haproxy.cfg

# 以daemon模式启动,以systemd管理的daemon模式启动
haproxy -D -f /etc/haproxy/haproxy.cfg [-p /var/run/haproxy.pid]
haproxy -Ds -f /etc/haproxy/haproxy.cfg [-p /var/run/haproxy.pid]

# 启动调试功能,将显示全部链接和处理信息在屏幕
haproxy -d -f /etc/haproxy/haproxy.cfg

# restart。须要使用st选项指定pid列表
haproxy -f /etc/haproxy.cfg [-p /var/run/haproxy.pid] -st `cat /var/run/haproxy.pid`

# graceful restart,即reload。须要使用sf选项指定pid列表
haproxy -f /etc/haproxy.cfg [-p /var/run/haproxy.pid] -sf `cat /var/run/haproxy.pid`

# 显示haproxy编译和启动信息
haproxy -vv

须要注意的是,restart会直接关掉旧进程并创建新进程,因此会丢弃大量已创建的链接,而reload会启动新进程,但旧进程会先处理完当前已创建链接而后再关闭。可是,reload仍然会丢弃极少许的链接,虽然大多数状况下这足够完美了,可是在极度严格的环境下,这是不容许的。在haproxy 1.8中,提供了彻底不丢弃链接的无损重启,要求haproxy启动命令中加入-x选项,同时要求haproxy配置文件的"stats socket"配置中加入expose-fd listeners,好比:url

stats socket /var/run/haproxy.sock mode 600 expose-fd listeners level user

使用-x选项以及expose-fd listeners以后,reload haproxy的时候,会将已创建TCP链接(TCP套接字)转移到Unix Domain状态套接字中进行处理。

有人作了测试,并行200个测试,每一个测试发送10000个请求,在这种环境下各类重启方式会致使的失败率和响应时间。

Test #req/users #fail resp avg 95% resp
baseline 10k/200 0 513ms 560ms
restart 0.2 10k/200 4332 147ms 253ms
reload 0.2 (legacy) 10k/200 10 455ms 815ms
reload 0.2 (socket) 10k/200 0 567ms 852ms
相关文章
相关标签/搜索