2. HAProxy的配置

HAProxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择部分作为配置。

global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改

defaults:配置默认参数的,这些参数可以被利用配置到frontendbackendlisten组件

frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)

backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器。

listenFrontendBackend的组合体。

下面是HAProxy的一些常用的配置,这个配置是用来说明HAProxy的一些常用功能的配置,具体详细配置请查看安装目录下的doc目录下的文档文件,或者到” http://cn.haproxy.org/

下载中文配置说明文档

配置文件例子:

global

#全局的日志配置 其中日志级别是[err warning info debug]

#local0 是日志设备,必须为如下24种标准syslog设备的一种

#kern user mail daemon auth syslog lpr news 

#uucp cron auth2 ftp ntp audit alert cron2 

#local0 local1 local2 local3 local4 local5 local6 local7 

#但是之前在/etc/syslog.conf文件中定义的是local0所以

#这里也是用local0

log 127.0.0.1 local0 info #[err warning info debug]

#最大连接数

maxconn 4096

#用户

user admin

#

group admin

#使HAProxy进程进入后台运行。这是推荐的运行模式

daemon

#创建4个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon"

nbproc 4

#将所有进程的pid写入文件启动进程的用户必须有权限访问此文件。

pidfile /home/admin/haproxy/logs/haproxy.pid

defaults 

#默认的模式mode { tcp|http|health }tcp4层,http7层,health只会返回OK

mode http

#采用http日志格式

option httplog

#三次连接失败就认为是服务器不可用,也可以通过后面设置

retries 3

如果cookie写入了serverId而客户端不会刷新cookie

#serverId对应的服务器挂掉后,强制定向到其他健康的服务器

option redispatch

#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接

option abortonclose

#默认的最大连接数

maxconn 4096

#连接超时

contimeout 5000

#客户端超时

clitimeout 30000

#服务器超时

srvtimeout 30000

#=心跳检测超时

timeout check 2000

#注:一些参数值为时间,比如说timeout。时间值通常单位为毫秒(ms),但是也可以通过加#后缀,来使用其他的单位。

#- us : microseconds. 1 microsecond = 1/1000000 second

#- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default.

#- s : seconds. 1s = 1000ms

#- m : minutes. 1m = 60s = 60000ms

#- h : hours. 1h = 60m = 3600s = 3600000ms

#- d : days. 1d = 24h = 1440m = 86400s = 86400000ms

########统计页面配置############

listen admin_stats

#监听端口

bind 0.0.0.0:1080

#http7层模式

mode http

#日志设置

log 127.0.0.1 local0 err #[err warning info debug]

#统计页面自动刷新时间

stats refresh 30s

#统计页面url

stats uri /admin?stats

#统计页面密码框上提示文本

stats realm Gemini\ Haproxy

#统计页面用户名和密码设置

stats auth admin:admin

stats auth admin1:admin1

#隐藏统计页面上HAProxy的版本信息

stats hide-version

#######网站检测listen定义############

listen site_status

bind 0.0.0.0:1081

mode http

log 127.0.0.1 local0 err #[err warning info debug]

#网站健康检测URL,用来检测HAProxy管理的网站是否可以用,正常返回200,不正常返回500

monitor-uri /site_status

#定义网站down时的策略

#当挂在负载均衡上的指定backend的中有效机器数小于1台时返回true

acl site_dead nbsrv(denali_server) lt 1

acl site_dead nbsrv(tm_server) lt 1 

acl site_dead nbsrv(mms_server) lt 1

#当满足策略的时候返回500

monitor fail if site_dead

#如果192.168.0.252或者192.168.0.31这两天机器挂了

#认为网站挂了,这时候返回500,判断标准是如果mode

#http返回200认为是正常的,如果modetcp认为端口畅通是好的

monitor-net 192.168.0.252/31

 

########frontend配置############

frontend http_80_in

#监听端口

bind 0.0.0.0:80

#http7层模式

mode http

#应用全局的日志配置

log global

#启用httplog

option httplog

#每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式

option httpclose

#如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header

#获得客户端IP

option forwardfor