Doc/目录下提供了一些文档,具体的配置说明可以参考在configuration.txt文件。
下面主要说明下配置过程中日志输出问题和一些需要注意的配置选项。

1). 日志的输出问题。

根据说明,haproxy的日志输出使用了系统的日志程序,比如syslogd, syslog-ng。这两个日志系统使用上其主要的区别就是其配置文件的格式不同,考虑syslog-ng算是syslog的一个升级版,在性能和功能性 上都要优于syslogd,因此这里主要介绍的是配置syslog-ng来实现haproxy的日志输出。
我的机器环境,一如既往:SUSE Linux Enterprise Server 11 (x86_64),
日志程序默认是syslog-ng。

I. 编辑系统日志服务的配置文件/etc/sysconfig/syslog,查看SYSLOG_DAEMON的值,这个值指定了所要使用的日志服务程序,默认为空,表示自动检测,如果不确定,可以显式指定SYSLOG_DAEMON = “syslog-ng”。

II. 编辑syslog-ng的配置文件/etc/syslog-ng/syslog-ng.conf,在末尾添加如下代码:

  1. # for supporting the logging of "HAProxy" 
  2.   
  3. source my_src { 
  4.     # 
  5.     # process log messages from network: 
  6.     # 
  7.     udp(ip("0.0.0.0") port(514)); 
  8. }; 
  9.   
  10. filter f_local0 { facility(local0); }; 
  11. filter custom { program("haproxy"); }; 
  12.   
  13. destination d_haproxy { file("/var/log/haproxy.log"); }; 
  14.   
  15. log { source(my_src); filter(f_local0); destination(d_haproxy); }; 
  16. #log { source(my_src); filter(custom); destination(d_haproxy); };    # OK, work too 

注:这里指定了日志输出到/var/log目录下,工作正常,若指定输出到/home等其他子目录下却会失败,具体原因不详,待查。另,haproxy的日志也可通过此方法将其发送到某个日志服务器用于统一处理,具体可查看syslog-ng的相关文档。

III. 重启syslog服务,使用如下命令:

  1. service syslog restart 

IV. 编辑haproxy的配置文件,假定名为haproxy.cfg


在所需要做日志记录的模块(比如,global, default等)添加如下代码:

  1. # 使用系统的syslog记录日志(通过udp,默认端口号为514) 
  2. log 127.0.0.1 local0 

注:local0 在两个配置文件中的一致。

这会查看日志基本上就OK了。

  1. tail -f /var/log/haproxy.log 

注:其他须解决的日志相关问题


a. haproxy当前的日志全部记录在一个文件中,考虑按日期将其分段成不同文件存储;
b. 日志不能输出到除/var/log/外的其他目录

2). 一些常用配置选项的说明

如下是我使用的一个配置文件,常用的选项说明都已经注释了,需要更全面的描述请查阅configuration.txt文件。

  1. ######################################################################### 
  2. # HAProxy 配置文件 
  3. ######################################################################### 
  4.   
  5. global 
  6. # 使用系统的syslog记录日志(通过udp,默认端口号为514) 
  7. log 127.0.0.1 local0 # info [err warning info debug] 
  8. chroot /home/user/haproxy 
  9.   
  10. #限制单个进程的最大连接数 
  11. maxconn 65535 
  12.   
  13. # 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D 
  14. # daemon 
  15. # 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式 
  16. # nbproc 1 
  17.   
  18. # 设置debug模式运行,与daemon模式只能互斥,等同于在命令行添加参数 -d 
  19. # debug 
  20. pidfile /home/user/haproxy/logs/haproxy.pid    # not work 
  21.   
  22. defaults 
  23. # 在连接失败或断开的情况下,允许当前会话被重新分发 
  24. option redispatch 
  25. # 设置在一个服务器上链接失败后的重连次数 
  26. retries 2 
  27. # 设置服务器分配算法 
  28. balance roundrobin 
  29.   
  30. # 不记录空连接 
  31. option dontlognull 
  32.   
  33. # 设置等待连接到服务器成功的最大时间 
  34. timeout connect 5000ms 
  35. # 设置客户端的最大超时时间 
  36. timeout client 1800000ms 
  37. # 设置服务器端的最大超时时间 
  38. timeout server 1800000ms 
  39.   
  40. # Enable the sending of TCP keepalive packets on both sides, clients and servers 
  41. # NOTE: 在服务器CPU强劲的情况下,最好不要开启保活,这样可减少资源消耗 
  42. #option tcpka 
  43.   
  44. ##############################统计页面配置################################## 
  45.   
  46. listen admin_stat 
  47. # 监听端口 
  48. bind *:8011 
  49. # http的7层模式 
  50. mode http 
  51. option httplog 
  52. log global 
  53. # 统计页面自动刷新时间 
  54. stats refresh 30s 
  55. # 统计页面URL 
  56. stats uri /admin?stats 
  57. # 统计页面密码框上提示文本 
  58. stats realm Haproxy\ Statistics 
  59. # 统计页面用户名和密码设置 
  60. stats auth admin:admin 
  61. # 隐藏统计页面上HAProxy的版本信息 
  62. stats hide-version 
  63.   
  64. ###########################TCP连接的监听配置################################ 
  65.   
  66. listen  tcp-in 
  67. bind *:2211 
  68. mode tcp 
  69. # 日志记录选项 
  70. option tcplog 
  71. log global 
  72.   
  73. # 后台服务器 
  74. # weight  -- 调节服务器的负重 
  75. # check -- 允许对该服务器进行健康检查 
  76. # inter  -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms) 
  77. # rise  -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2 
  78. # fall  -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3 
  79. # maxconn  -- 指定可被发送到该服务器的最大并发连接数 
  80. server localhost 0.0.0.0:2233 weight 3 check inter 2000 rise 2 fall 3 
  81. server 192.168.1.100 192.168.1.100:2233 weight 3 check inter 2000 rise 2 fall 3 
  82. server 192.168.1.101 192.168.1.101:2233 weight 3 check inter 2000 rise 2 fall 3 
  83.   
  84. #########################HTTP连接的监听配置################################ 
  85.   
  86. listen  http-in 
  87. bind *:2212 
  88. mode http 
  89. option httplog 
  90. log global 
  91.   
  92. # 设置健康检查模式 
  93. #option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www 
  94. #option smtpchk 
  95.   
  96. # 后台服务器 
  97. server localhost 0.0.0.0:2234 weight 3 check inter 2000 rise 2 fall 3 
  98. server 192.168.1.100 192.168.1.100:2234 weight 3 check inter 2000 rise 2 fall 3 
  99. server 192.168.1.101 192.168.1.101:2234 weight 3 check inter 2000 rise 2 fall 3 

对于健康检查,推荐开开启比较好,否则当后台服务器当掉的时候,haproxy将不会将连接重定向到下一个可用的服务器上。

根据以上配置的统计页面url,可访问:http://host_ip:2212/admin?stats 进入统计页面。注:端口号是你配置的前置http端口。