一 HAProxy安装

官方链接:http://www.haproxy.org/ (国内可能无法打开)
下载连接:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/
  1 [root@HAProxy ~]# yum -y install gcc gcc-c++ make openssl-devel wget openssh-clients			#安装编译工具
  2 [root@HAProxy ~]# service iptables stop
  3 [root@HAProxy ~]# chkconfig iptables off
  4 [root@HAProxy ~]# vi /etc/selinux/config
  5 SELINUX=disabled
 

1.1 yum安装

  1 [root@HAProxy ~]# yum -y install haproxy

1.2 编译安装

[
  1 [root@HAProxy ~]# tar -zxvf haproxy-1.7.9.tar.gz
  2 [root@HAProxy ~]# cd haproxy-1.7.9/
  3 [root@HAProxy haproxy-1.7.9]# make TARGET=linux2628 CPU=x86_64 PREFIX=/usr/local/haprpxy	#编译uname -r #查看系统内核版本号
  4 [root@HAProxy haproxy-1.7.9]# make install PREFIX=/usr/local/haproxy
 
参数解释:
TARGET=linux26:内核版本,使用uname -r可查看内核。
[root@HAProxy ~]# uname -r
2.6.32-642.el6.x86_64
如:2.6.18-371.el5,此时该参数就为linux26;当内核kernel为2.6.28或之上时采用TARGET=linux2628,更多参数可参考:https://github.com/haproxy/haproxy
ARCH=x86_64:系统位数。
PREFIX=/opt/haprpxy:opt/haprpxy为haprpxy安装路径

1.4 创建HAProxy相关配置文件

  1 [root@HAProxy ~]# mkdir /usr/local/haproxy/conf				#创建配置文件目录
  2 [root@HAProxy ~]# mkdir -p /etc/haproxy					#创建配置文件目录
  3 [root@HAProxy ~]# touch /usr/local/haproxy/haproxy.cfg			#创建配置文件
  4 [root@HAProxy ~]# ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg	#添加配置文件软连接
  5 [root@HAProxy ~]# cp -r /root/haproxy-1.7.9/examples/errorfiles /usr/local/haproxy/errorfiles	#拷贝错误页面
  6 [root@HAProxy ~]# ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles                #添加软连接
  8 [root@HAProxy ~]# mkdir -p  /usr/local/haproxy/log                                           #创建日志文件目录
 10 [root@HAProxy ~]# touch /usr/local/haproxy/log/haproxy.log                                   #创建日志文件目录
 12 [root@HAProxy ~]# ln -s /usr/local/haproxy/log/haproxy.log /var/log/haproxy.log              #添加软连接
 14 [root@HAProxy ~]# cp /usr/local/haproxy/sbin/haproxy /usr/sbin/                              #拷贝HAProxy命令
 16 [root@HAProxy ~]# cp /root/haproxy-1.7.9/examples/haproxy.init /etc/rc.d/init.d/haproxy      #拷贝开机启动文件
 18 [root@HAProxy ~]# chmod u+x /etc/rc.d/init.d/haproxy                                         #添加脚本执行权限
 20 [root@HAProxy ~]# chkconfig haproxy on                                                       #设置开机启动
 

二 常用配置

2.1 配置文件

默认配置内容见附件。

2.2 配置选项

  1 global				#设定全局参数,属于进程级的配置,通常和操作系统的配置有关
  2     log         127.0.0.1 local2	#全局日志配置,local0表示日志设备,info表示日志级别,如err、warning、info、debug4中
  3     chroot      /usr/local/haproxy	        #chroot运行路径
  4     pidfile     /var/run/haproxy.pid	#指定haproxy进程的PID文件,启动进程的用户必须有访问此文件的权限
  5     maxconn     4000			#每个HAProxy进程可接受的最大并发连接数
  6     user        haproxy
  7     group       haproxy			#设置运行HAProxy进程的用户和组,也可使用UID和GID值来替代
  8     daemon				        #设置HAProxy进程进入后台运行。
  9
 10 defaults				  #配置默认参数,会自动被引用到frontend、backend和listen中
 11     mode                    http	  #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
 12     log                     global	        #采用全局定义的日志
 13     option                  httplog	        #日志类别http日志格式
 14     option                  dontlognull	#不记录健康检查的日志信息
 15     option http-server-close		#每次请求完毕后主动关闭http通道
 16     option forwardfor       except 127.0.0.0/8    #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
 18     option                  redispatch	#serverId对应的服务器挂掉后,强制定向到其他健康的服务器
 19     retries                 3		#3次连接失败就认为服务不可用,也可以通过后面设置
 20     timeout http-request    10s
 21     timeout queue           1m		#默认队列超时时间
 22     timeout connect         10s		#连接超时时间
 23     timeout client          1m		#客户端超时时间
 24     timeout server          1m		#服务器超时时间
 25     timeout http-keep-alive 10s		#默认持久连接超时时间
 26     timeout check           10s		#心跳检测超时
 27     maxconn                 3000	#默认的最大连接数
 28 balance roundrobin			#设置默认负载均衡方式,轮询方式
 29 #balance source			#设置默认负载均衡方式,类似于nginx的ip_hash
 30 #balnace leastconn			#设置默认负载均衡方式,最小连接数
 31
 32 listen stats
 33 bind 0.0.0.0:1080		#监听端口
 34 mode http			#监听的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
 35 stats refresh 30s		#设置统计页面自动刷新的时间
 36 stats uri /stats		#设置统计页面url
 37 stats realm Haproxy Manager	#设置登录HAProxy统计页面密码框上提示文本
 38 stats auth admin:admin	#设置登录HAProxy统计页面用户名和密码设置
 39 #stats hide-version		#隐藏统计页面上HAProxy的版本信息
 40
 41 frontend  main *:5000
 42     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 43     acl url_static       path_end       -i .jpg .gif .png .css .js
 44
 45     use_backend static          if url_static	#满足策略要求,则响应策略定义的backend页面
 46     default_backend             app		        #不满足则响应backend的默认页面
 47
 48 backend static
 49     balance     roundrobin			        #负载均衡模式轮询
 50     server      static 127.0.0.1:4331 check	        #后端服务器定义
 51
 52 backend app				         	#定义名称为app的后端真实服务器组
 53     balance     roundrobin
 54     server  app1 127.0.0.1:5001 check		#后端真实服务器,不能用的default和frontend部分
 55     server  app2 127.0.0.1:5002 check
 56     server  app3 127.0.0.1:5003 check
 57     server  app4 127.0.0.1:5004 check
 
后端服务器格式:server <name> <address> [:port] [param*]
parm*参数可有:
  • check:表示启用对此后端服务器进行健康状态检查;
  • inter:设置健康状态检查的时间间隔,单位为毫秒;
  • rise:设置从故障状态换至正常状态需要成功检查的次数;
  • fall:设置后端服务器从正常状态转换为不可用状态需要检查的次数;
  • cookie:为指定的后端服务器设置cookie值;
  • weight:设置后端真实服务器的权重,默认为1,最大值为256,设置为0表示不参与负载均衡;
  • backup:设置后端真实服务器的备份服务器,仅在后端所有真实服务器不可用的情况下启用。
12-22 00:16