设为首页 收藏本站
查看: 1666|回复: 0

[经验分享] 999安装 haproxy--haproxy 安装失败999

[复制链接]

尚未签到

发表于 2015-9-4 13:46:10 | 显示全部楼层 |阅读模式
  [1]
  http://www.google.com.hk/search?hl=en&source=hp&q=%E5%AE%89%E8%A3%85+haproxy&aq=f&oq=&aqi=
  http://www.google.com.hk/search?hl=en&source=hp&q=haproxy+%E5%AE%89%E8%A3%85%E5%A4%B1%E8%B4%A5&aq=f&oq=&aqi=
  [2]
  http://blog.ehomy.net/archives/153
  HAProxy的安装和部署
Posted on September 2, 2010 by Eyoung
考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统,HAProxy的配置和使用还是比较简单的。
下面是自己安装和部署haproxy的记录,比较重要的一点是解决了haproxy + syslog-ng的日志输出问题。
PS: 这个问题费了我好大神:-|
PLATFORM: SUSE Linux Enterprise Server 11 (x86_64)
1. haproxy的编译安装
获取haproxy的源代码
官方地址:http://haproxy.1wt.eu/
目前最新的版本:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
命令:
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
考虑到版本的更新,具体的安装属性可能会稍有改变,建议在安装前可以大致浏览下haproxy目录下的README和Makefile两个文件。
编译haproxy
进入解压后的haproxy的目录,用下列命令进行编译:
make TARGET=os ARCH=arch CPU=cpu USE_xxx=1 ...
这里着重说明几个常用的选项。
TARGET
指定对目标操作系统在编译的时候进行优化,可选择如下值之一:
Generic, linux22, linux24, linux24e, linux26, solaris, freebsd, openbsd,
Cygwin, custom。
如果不确定目标系统,可以保留默认值generic。
CPU
指定对特定的CPU进行优化,可选择如下值之一:generic, i586, i686, ultrasparc, custom。默认值为generic。
ARCH
指定ARCH值可强制编译生成针对一个特定系统架构的程序。通常用于在一个系统架构的平台上生成针对另一个不同架构平台的程序,比如在一个64位架构的目标系统上编译生成一个32位的程序。
当前可选的值有:x86_64, i386, i486, i586, i686。
注:若选择上述其中的一个值,”-m32”或”-m64”会被添加到CFLAGS和LDFLAGS选
项中。
DEBUG
指定生成调试信息,可通过指定DEBUG=-DDEBUG_xxx对特定的代码部分生成调试信息。
当前定义的DEBUG宏有:DEBUG_FULL, DEBUG_MEMORY, DEBUG_FSM, DEBUG_HASH和
DEBUG_AUTH。
USE_PCRE, USE_STATIC_PCRE 选项可通过指定”USE_xxx=1”表示使用,指定”USE_xxx=”表示禁用。
指定是否使用libpcre库中的正则表达式实现来代替系统的libc库中的实现,考虑到使用libpcre库的效率要比libc高,因此推荐使用此选项。
注:
因libpcre还没有广泛普及,因此在动态链接的时候,需确保目标系统安装有libpcre的动态库。因libpcre还没有广泛普及,因此在动态链接的时候,需确保目标系统安装有libpcre的动态库。针对上面的问题,可以使用USE_STATIC_PCRE,指定静态链接libpcre。
使用libpcre库编译时,需先确保系统已安装libpcre库。若不使用libpcre,则默认使用系统libc库中的标准正则表达式实现。强烈推荐使用static_pcre。
PREFIX
指定安装目录,默认为/usr/local,其他诸如文档之类的文件将会在PREFIX指定的相应目录下。
DESTDIR
指定安装目录,默认没有设置,如果想将haproxy安装一个沙盒中则可以指定该属性。
考虑到我们的系统为Linux,内核2.6+版本的,CPU为x86_64的,可以使用如下命令编译:
make TARGET=linux26 USE_STATIC_PCRE=1
安装 HAProxy
可以直接将生成的haproxy程序拷贝到你想安装到的目录。或者执行命令安装到之前指定或默认的目录:
sudo make install
2. 配置 HAProxy
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,在末尾添加如下代码:
# for supporting the logging of "HAProxy"

source my_src {
    #
    # process log messages from network:
    #
    udp(ip("0.0.0.0") port(514));
};

filter f_local0 { facility(local0); };
filter custom { program("haproxy"); };

destination d_haproxy { file("/var/log/haproxy.log"); };

log { source(my_src); filter(f_local0); destination(d_haproxy); };
#log { source(my_src); filter(custom); destination(d_haproxy); };    # OK, work too
注:这里指定了日志输出到/var/log目录下,工作正常,若指定输出到/home等其他子目录下却会失败,具体原因不详,待查。另,haproxy的日志也可通过此方法将其发送到某个日志服务器用于统一处理,具体可查看syslog-ng的相关文档。
III. 重启syslog服务,使用如下命令:
service syslog restart
IV. 编辑haproxy的配置文件,假定名为haproxy.cfg
在所需要做日志记录的模块(比如,global, default等)添加如下代码:
# 使用系统的syslog记录日志(通过udp,默认端口号为514)
log 127.0.0.1 local0
注:local0 在两个配置文件中的一致。
这会查看日志基本上就OK了。
tail -f /var/log/haproxy.log
注:其他须解决的日志相关问题
a. haproxy当前的日志全部记录在一个文件中,考虑按日期将其分段成不同文件存储;
b. 日志不能输出到除/var/log/外的其他目录
2). 一些常用配置选项的说明
如下是我使用的一个配置文件,常用的选项说明都已经注释了,需要更全面的描述请查阅configuration.txt文件。
#########################################################################
# HAProxy 配置文件
#########################################################################

global
# 使用系统的syslog记录日志(通过udp,默认端口号为514)
log 127.0.0.1 local0 # info [err warning info debug]
chroot /home/user/haproxy

#限制单个进程的最大连接数
maxconn 65535

# 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D
# daemon
# 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式
# nbproc 1

# 设置debug模式运行,与daemon模式只能互斥,等同于在命令行添加参数 -d
# debug
pidfile /home/user/haproxy/logs/haproxy.pid    # not work

defaults
# 在连接失败或断开的情况下,允许当前会话被重新分发
option redispatch
# 设置在一个服务器上链接失败后的重连次数
retries 2
# 设置服务器分配算法
balance roundrobin

# 不记录空连接
option dontlognull

# 设置等待连接到服务器成功的最大时间
timeout connect 5000ms
# 设置客户端的最大超时时间
timeout client 1800000ms
# 设置服务器端的最大超时时间
timeout server 1800000ms

# Enable the sending of TCP keepalive packets on both sides, clients and servers
# NOTE: 在服务器CPU强劲的情况下,最好不要开启保活,这样可减少资源消耗
#option tcpka

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

listen admin_stat
# 监听端口
bind *:8011
# http的7层模式
mode http
option httplog
log global
# 统计页面自动刷新时间
stats refresh 30s
# 统计页面URL
stats uri /admin?stats
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:admin
# 隐藏统计页面上HAProxy的版本信息
stats hide-version

###########################TCP连接的监听配置################################

listen  tcp-in
bind *:2211
mode tcp
# 日志记录选项
option tcplog
log global

# 后台服务器
# weight  -- 调节服务器的负重
# check -- 允许对该服务器进行健康检查
# inter  -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise  -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
# fall  -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
# maxconn  -- 指定可被发送到该服务器的最大并发连接数
server localhost 0.0.0.0:2233 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.100 192.168.1.100:2233 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.101 192.168.1.101:2233 weight 3 check inter 2000 rise 2 fall 3

#########################HTTP连接的监听配置################################

listen  http-in
bind *:2212
mode http
option httplog
log global

# 设置健康检查模式
#option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#option smtpchk

# 后台服务器
server localhost 0.0.0.0:2234 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.100 192.168.1.100:2234 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.101 192.168.1.101:2234 weight 3 check inter 2000 rise 2 fall 3
在这个配置文件中,使用了listen块,而没有用frontend和backend。listen块定义了一个完整的代理过程,同时包含了前端的监听套接字和后台的服务器描述,从这个层面考虑,使用frontend和backend,似乎显得条理要清楚点。不过测试发现使用listen块的时候,输出的日志会记录下后台服务器的健康状况,而使用frontend和backend则不会。
对于健康检查,推荐开开启比较好,否则当后台服务器当掉的时候,haproxy将不会将连接重定向到下一个可用的服务器上。
根据以上配置的统计页面url,可访问:http://host_ip:2212/admin?stats 进入统计页面。注:端口号是你配置的前置http端口。
关于属性
pidfile /home/user/haproxy/logs/haproxy.pid
暂且还不能正常工作,原因待查。
  [3]
  http://blog.chenlb.com/2009/06/install-haproxy-and-configure-load-balance.html
  安装 HAProxy 配置负载均衡
发表于:2009年6月4日 | 分类:Server | 标签: balance, haproxy | views(9,539)
版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原文出处, 即下面的声明.

原文出处:http://blog.chenlb.com/2009/06/install-haproxy-and-configure-load-balance.html
据说 HAProxy 可以做负载均衡,同时还可对服务器健康检测,有 down 机的自动停止分发,当服务器正常后,又自动均衡到刚死过的服务器。之前用 nginx ,现试用下 haproxy 。
下载:haProxy 1.3.15 http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.15.7.tar.gz
安装:
cd /home/chenlb  
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.15.7.tar.gz  
tar -zxvf haproxy-1.3.15.7.tar.gz  
cd haproxy-1.3.15.7  
make TARGET=linux26 PREFIX=/home  
make install PREFIX=/home  
  
cd /home/haproxy  
vi haproxy.cfg  
创建/修改配置haproxy.cfg:
global  
        log 127.0.0.1   local0  
        #log 127.0.0.1  local1 notice  
        #log loghost    local0 info  
        maxconn 4096  
        chroot /home/haproxy  
        uid 99  
        gid 99  
        daemon  
        nbproc 1  
        pidfile /home/haproxy/logs/haproxy.pid  
        #debug  
        #quiet  
  
defaults  
        log     127.0.0.1       local3  
        mode    http  
        option  httplog  
        option  httpclose  
        option  dontlognull  
        option  forwardfor  
        option  redispatch  
        retries 2  
        maxconn 2000  
        balance roundrobin  
        stats   uri     /haproxy-stats  
        contimeout      5000  
        clitimeout      50000  
        srvtimeout      50000  
  
listen  web_proxy 0.0.0.0:1080  
        option  httpchk GET /ping.jsp  
  
        server  s1 192.168.0.101:8080 weight 3 check  
        #server s2 192.168.0.102:8080 weight 3 check  
        server  s3 192.168.0.103:8080 weight 3 check  
启动 haproxy:
sbin/haproxy -f haproxy.cfg
haproxy 192.168.0.100 分发到 192.168.0.101, 192.168.0.103 (故意down掉)。
可以打开 stats 看,http://192.168.0.100:1080/haproxy-stats,如:

haproxy balance stats, 点击放大
如果修改 haproxy.cfg 配置,想重启 haproxy 用 kill -HUP `cat logs/haproxy.pid` 是不行的。必须使用 -sf 或 -st 参数,如:
sbin/haproxy -f haproxy.cfg -st `cat logs/haproxy.pid `
#./haproxy –help //haproxy相关命令参数介绍.
haproxy  -f  <配置文件>  [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p] [-s] [-l] [-dk] [-ds] [-de] [-dp] [-db] [-m <内存限制M>] [{-sf|-st} pidlist...]
        -d     前台,debug模式
        -D     daemon模式启动
        -q     安静模式,不输出信息
        -V     详细模式
        -c     对配置文件进行语法检查
        -s     显示统计数据
        -l     显示详细统计数据
        -dk    不使用kqueue
        -ds    不使用speculative epoll
        -de    不使用epoll
        -dp    不使用poll
        -db    禁用后台模式,程序跑在前台
        -sf    程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
        -st    程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后
但配置后,死活不会输出日志,还没找到解决方法,网上有些,但行不通:
syslog.conf里加一行
local3.*         /var/log/haproxy.log
# killall -HUP syslogd 重启 syslogd
# touch /var/log/haproxy.log
# chmod 777 /var/log/haproxy.log
# tail –f /var/log/harpoxy.log 监控日志
# ./haproxy -f haproxy.cfg 启动服务.
haproxy 还可以用 nginx 的配置,请看:http://www.igvita.com/2008/05/13/load-balancing-qos-with-haproxy/
  [4]
  http://www.linuxso.com/a/linuxxitongguanli/757.html
  linux下HAProxy安装配置过程和语法及实例详解
  HAProxy的配置
HAProxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择部分作为配置。
global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改
defaults:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件
frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)。
backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器。
listen:Frontend和Backend的组合体。
下面是HAProxy的一些常用的配置,这个配置是用来说明HAProxy的一些常用功能的配置,具体详细配置请查看安装目录下的doc目录下的文档文件,或者到” http://cn.haproxy.org/”
下载中文配置说明文档
配置文件例子:
global
#全局的日志配置 其中日志级别是[err warning info debug]
#local0 是日志设备,必须为如下24种标准syslog设备的一种:
#kern user mail daemon auth syslog lpr news
#cp.html' target='_blank'>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 },tcp是4层,http是7层,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
#http的7层模式
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认为是正常的,如果mode是tcp认为端口畅通是好的
monitor-net 192.168.0.252/31
########frontend配置############
frontend http_80_in
#监听端口
bind 0.0.0.0:80
#http的7层模式
mode http
#应用全局的日志配置
log global
#启用http的log
option httplog
#每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式
option httpclose
#如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中
#获得客户端IP
option forwardfor
###########HAProxy的日志记录内容配置##########
capture request header Host len 40
capture request header Content-Length len 10
capture request header Referer len 200
capture response header Server len 40
capture response header Content-Length len 10
capture response header Cache-Control len 8
####################acl策略定义#########################
#如果请求的域名满足正则表达式返回true -i是忽略大小写
acl denali_policy hdr_reg(host) -i ^(www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$
#如果请求域名满足trade.gemini.taobao.net 返回 true -i是忽略大小写
acl tm_policy hdr_dom(host) -i trade.gemini.taobao.net
##在请求url中包含sip_apiname=,则此控制策略返回true,否则为false
acl invalid_req url_sub -i sip_apiname=
##在请求url中存在timetask作为部分地址路径,则此控制策略返回true,否则返回false
acl timetask_req url_dir -i timetask
#当请求的header中Content-length等于0时返回 true
acl missing_cl hdr_cnt(Content-length) eq 0
######################acl策略匹配相应###################
##当请求中header中Content-length等于0 阻止请求返回403
block if missing_cl
##block表示阻止请求,返回403错误,当前表示如果不满足策略invalid_req,或者满足策略timetask_req,则阻止请求。
block if !invalid_req || timetask_req
#当满足denali_policy的策略时使用denali_server的backend
use_backend denali_server if denali_policy
#当满足tm_policy的策略时使用tm_server的backend
use_backend tm_server if tm_policy
#reqisetbe关键字定义,根据定义的关键字选择backend
reqisetbe ^Host:\ img dynamic
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic
reqisetbe ^[^\ ]*\ /admin/stats stats
#以上都不满足的时候使用默认mms_server的backend
default_backend mms_server
#HAProxy错误页面设置
errorfile 400 /home/admin/haproxy/errorfiles/400.http
errorfile 403 /home/admin/haproxy/errorfiles/403.http
errorfile 408 /home/admin/haproxy/errorfiles/408.http
errorfile 500 /home/admin/haproxy/errorfiles/500.http
errorfile 502 /home/admin/haproxy/errorfiles/502.http
errorfile 503 /home/admin/haproxy/errorfiles/503.http
errorfile 504 /home/admin/haproxy/errorfiles/504.http
##########backend的设置##############
backend mms_server
#http的7层模式
mode http
#负载均衡的方式,roundrobin平均方式
balance roundrobin
#允许插入serverid到cookie中,serverid后面可以定义
cookie SERVERID
#心跳检测的URL,HTTP/1.1¥r¥nHost:XXXX,指定了心跳检测HTTP的版本,XXX为检测时请求
#服务器的request中的域名是什么,这个在应用的检测URL对应的功能有对域名依赖的话需要设置
option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:member1.gemini.taobao.net
#服务器定义,cookie 1表示serverid为1,check inter 1500 是检测心跳频率
#rise 3是3次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
server mms1 10.1.5.134:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1
server mms2 10.1.6.118:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2
backend denali_server
mode http
#负载均衡的方式,source根据客户端IP进行哈希的方式
balance source
#但设置了backup的时候,默认第一个backup会优先,设置option allbackups后
#所有备份服务器权重一样
option allbackups
#心跳检测URL设置
option httpchk GET /mytaobao/home/my_taobao.jhtml HTTP/1.1\r\nHost:my.gemini.taobao.net
#可以根据机器的性能不同,不使用默认的连接数配置而使用自己的特殊的连接数配置
#如minconn 10 maxconn 20
server denlai1 10.1.5.114:80 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3
server denlai2 10.1.6.104:80 minconn 10 maxconn 20 check inter 1500 rise 3 fall 3
#备份机器配置,正常情况下备机不会使用,当主机的全部服务器都down的时候备备机会启用
server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
backend tm_server
mode http
#负载均衡的方式,leastconn根据服务器当前的请求数,取当前请求数最少的服务器
balance leastconn
option httpchk GET /trade/itemlist/prepayCard.htm HTTP/1.1\r\nHost:trade.gemini.taobao.ne
server tm1 10.1.5.115:80 check inter 1500 rise 3 fall 3
server tm2 10.1.6.105:80 check inter 1500 rise 3 fall 3
######reqisetbe自定义关键字匹配backend部分#######################
backend dynamic
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3
backend stats
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\n Host:www.163.com
server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3
转载请务必注明原文:http://www.linuxso.com/a/linuxxitongguanli/757.html
  [5]
  http://blog.haohtml.com/archives/7959
  配置文件详解:
#########################################################################
# HAProxy 配置文件
#########################################################################

global
# 使用系统的syslog记录日志(通过udp,默认端口号为514)
log 127.0.0.1 local0 # info [err warning info debug]
chroot /home/user/haproxy

#限制单个进程的最大连接数
maxconn 65535

# 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D
# daemon
# 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式
# nbproc 1

# 设置debug模式运行,与daemon模式只能互斥,等同于在命令行添加参数 -d
# debug
pidfile /home/user/haproxy/logs/haproxy.pid    # not work

defaults
# 在连接失败或断开的情况下,允许当前会话被重新分发
option redispatch
# 设置在一个服务器上链接失败后的重连次数
retries 2
# 设置服务器分配算法
balance roundrobin

# 不记录空连接
option dontlognull

# 设置等待连接到服务器成功的最大时间
timeout connect 5000ms
# 设置客户端的最大超时时间
timeout client 1800000ms
# 设置服务器端的最大超时时间
timeout server 1800000ms

# Enable the sending of TCP keepalive packets on both sides, clients and servers
# NOTE: 在服务器CPU强劲的情况下,最好不要开启保活,这样可减少资源消耗
#option tcpka

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

listen admin_stat
# 监听端口
bind *:8011
# http的7层模式
mode http
option httplog
log global
# 统计页面自动刷新时间
stats refresh 30s
# 统计页面URL
stats uri /admin?stats
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:admin
# 隐藏统计页面上HAProxy的版本信息
stats hide-version

###########################TCP连接的监听配置################################

listen  tcp-in
bind *:2211
mode tcp
# 日志记录选项
option tcplog
log global

# 后台服务器
# weight  -- 调节服务器的负重
# check -- 允许对该服务器进行健康检查
# inter  -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise  -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
# fall  -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
# maxconn  -- 指定可被发送到该服务器的最大并发连接数
server localhost 0.0.0.0:2233 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.100 192.168.1.100:2233 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.101 192.168.1.101:2233 weight 3 check inter 2000 rise 2 fall 3

#########################HTTP连接的监听配置################################

listen  http-in
bind *:2212
mode http
option httplog
log global

# 设置健康检查模式
#option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#option smtpchk

# 后台服务器
server localhost 0.0.0.0:2234 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.100 192.168.1.100:2234 weight 3 check inter 2000 rise 2 fall 3
server 192.168.1.101 192.168.1.101:2234 weight 3 check inter 2000 rise 2 fall 3

  [6]
  http://www.91tuanfang.com/2010/08/11/haproxy-安装配置/
  简介:
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。
HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主要的代理模式:”tcp”也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式下,HAproxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy 会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求(request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。
详情可以在HAProxy官方网站(http://haproxy.1wt.eu)可以下载配置说明文档(configuration.txt)和架构文件(architecture.txt)作为参考。
HAProxy的安装:
在“http://haproxy.1wt.eu/#down”下载HAProxy的源码包。这里以1.4.20版本,安装在目录 /opt/haproxy 为例
解压下载的源码包:1
2
3tar -xzvf haproxy-1.4.8.tar.gz
cd haproxy-1.4.8
make TARGET=linux26 ARCH=i386 PREFIX=/opt/haproxy install
创建配置文件:1
2
3cd /opt/haproxy
mkdir conf logs
vi haproxy.cfg

在创建的haproxy.cfg文件中填入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18global
log 127.0.0.1 local0 info #[err warning info debug]
maxconn 4096
user nobody
group nogroup
daemon
nbproc 1
pidfile /opt/haproxy/logs/haproxy.pid
defaults
maxconn 2000
contimeout 5000
clitimeout 30000
srvtimeout 30000
listen admin_stats
bind 0.0.0.0:80
mode http
log 127.0.0.1 local0 err
stats uri /admin?stats

这个配置是能让HAProxy工作起来的最小配置
启动HAProxy:1/opt/haproxy/sbin/haproxy -f /opt/haproxy/conf/haproxy.cfg

通过浏览器访问“http://xxx.xxx.xxx.xxx/adm10.1.5.134in?stats“(xxx为IP),看到管理页面
HAProxy的配置:
HAProxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择部分作为配置。
global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改
defaults:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件
frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)。
backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器。
listen:Frontend和Backend的组合体。
下面是HAProxy的一些常用的配置,这个配置是用来说明HAProxy的一些常用功能的配置,具体详细配置请查看安装目录下的doc目录下的文档文件,或者到” http://cn.haproxy.org/” 下载中文配置说明文档
配置文档说明:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175global
#全局的日志配置 其中日志级别是[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 nobody
#组
group nogroup
#使HAProxy进程进入后台运行。这是推荐的运行模式
daemon
#创建4个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon"
nbproc 4
#将所有进程的pid写入文件启动进程的用户必须有权限访问此文件。
pidfile /opt/haproxy/logs/haproxy.pid

defaults
#默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
mode http
#采用http日志格式
option httplog
#三次连接失败就认为是服务器不可用,也可以通过后面设置
retries 3
如果cookie写入了serverId而客户端不会刷新cookie,
#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option redispatch
#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
#默认的最大连接数
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
#http的7层模式
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~!@
#隐藏统计页面上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(img_server) lt 1
acl site_dead nbsrv(idx_server) lt 1
acl site_dead nbsrv(app_server) lt 1
#当满足策略的时候返回500
monitor fail if site_dead
#如果192.168.0.101或者192.168.0.102这两台机器挂了
#认为网站挂了,这时候返回500,判断标准是如果mode是
#http返回200认为是正常的,如果mode是tcp认为端口畅通是好的
monitor-net 192.168.0.101/31

########frontend配置############
frontend http_80_in
#监听端口
bind 0.0.0.0:80
#http的7层模式
mode http
#应用全局的日志配置
log global
#启用http的log
option httplog
#每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式
option httpclose
#如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中
#获得客户端IP
option forwardfor

###########HAProxy的日志记录内容配置##########
capture request header Host len 40
capture request header Content-Length len 10
capture request header Referer len 200
capture response header Server len 40
capture response header Content-Length len 10
capture response header Cache-Control len 8

####################acl策略定义#########################
#如果请求的域名满足正则表达式返回true -i是忽略大小写
acl idx_policy hdr_reg(host) -i idx.anjuke.com
acl img_policy hdr_dom(host) -i img.anjuke.com

#当请求的header中Content-length等于0时返回 true
acl missing_cl hdr_cnt(Content-length) eq 0

######################acl策略匹配相应###################
block if missing_cl
use_backend idx_server if idx_policy
use_backend img_server if img_policy
default_backend www_server
#HAProxy错误页面设置
errorfile 400 /opt/haproxy/errorfiles/400.http
errorfile 403 /opt/haproxy/errorfiles/403.http
errorfile 408 /opt/haproxy/errorfiles/408.http
errorfile 500 /opt/haproxy/errorfiles/500.http
errorfile 502 /opt/haproxy/errorfiles/502.http
errorfile 503 /opt/haproxy/errorfiles/503.http
errorfile 504 /opt/haproxy/errorfiles/504.http

##########backend的设置##############
backend app_server
#http的7层模式
mode http
#负载均衡的方式,roundrobin平均方式
balance roundrobin
#允许插入serverid到cookie中,serverid后面可以定义
cookie SERVERID
#心跳检测的URL,HTTP/1.1¥r¥nHost:XXXX,指定了心跳检测HTTP的版本,XXX为检测时请求
#服务器的request中的域名是什么,这个在应用的检测URL对应的功能有对域名依赖的话需要设置
option httpchk GET /index.php HTTP/1.1\r\nHost:www.anjuke.com
#服务器定义,cookie 1表示serverid为1,check inter 1500 是检测心跳频率
#rise 3是3次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
server app1 192.168.1.101:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1
server app2 192.168.1.102:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2

backend idx_server
mode http
#负载均衡的方式,source根据客户端IP进行哈希的方式
balance source
#但设置了backup的时候,默认第一个backup会优先,设置option allbackups后
#所有备份服务器权重一样
option allbackups
#心跳检测URL设置
option httpchk GET /search.php HTTP/1.1\r\nHost:idx.anjuke.com
#可以根据机器的性能不同,不使用默认的连接数配置而使用自己的特殊的连接数配置
#如minconn 10 maxconn 20
server idx1 192.168.1.103:80 maxconn 12 check inter 1500 rise 3 fall 3
server idx2 192.168.1.104:80 maxconn 20 check inter 1500 rise 3 fall 3
#备份机器配置,正常情况下备机不会使用,当主机的全部服务器都down的时候备备机会启用
server idx-back1 192.168.1.105:80 check backup inter 1500 rise 3 fall 3
server idx-back2 192.168.1.106:80 check backup inter 1500 rise 3 fall 3

backend img_server
mode http
#负载均衡的方式,leastconn根据服务器当前的请求数,取当前请求数最少的服务器
balance leastconn
option httpchk GET /index.php HTTP/1.1\r\nHost:img.anjuke.com
server img1 192.168.1.107:80 check inter 1500 rise 3 fall 3
server img2 192.168.1.108:80 check inter 1500 rise 3 fall 3
  [7]
  [8]
  [9]
  [10]
  [11]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109432-1-1.html 上篇帖子: Haproxy配置参数 下篇帖子: HAProxy Installation and Configuration on CentOS 6.4 to Mitigate The Effects of
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表