HAProxy配置使用说明.docx

上传人:b****6 文档编号:8245457 上传时间:2023-01-30 格式:DOCX 页数:13 大小:21.52KB
下载 相关 举报
HAProxy配置使用说明.docx_第1页
第1页 / 共13页
HAProxy配置使用说明.docx_第2页
第2页 / 共13页
HAProxy配置使用说明.docx_第3页
第3页 / 共13页
HAProxy配置使用说明.docx_第4页
第4页 / 共13页
HAProxy配置使用说明.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

HAProxy配置使用说明.docx

《HAProxy配置使用说明.docx》由会员分享,可在线阅读,更多相关《HAProxy配置使用说明.docx(13页珍藏版)》请在冰豆网上搜索。

HAProxy配置使用说明.docx

HAProxy配置使用说明

HAProxy配置使用说明

摘要:

HAProxy-可靠、高性能的TCP/HTTP负载均衡器.这个是必学的.

简介:

  软件负载均衡一般通过两种方式来实现:

基于操作系统的软负载实现和基于第三方应用的软负载实现。

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)作为参考。

1.HAProxy的安装

  在“http:

//haproxy.1wt.eu/#down”下载HAProxy的源码包。

这里以1.3.20版本,安装在目录/home/admin/haproxy为例

解压下载的源码包

  tar-xzvfhaproxy-1.3.20.tar.gz

2.编译安装

  进入解压后的源码目录

  makeTARGET=linux26PREFIX=/home/admin/haproxyinstall

  (注意,TARGET后面根据本机操作系统内核版本来填写,PREFIX是要安装到的目录)

  安装完成后会在安装目录下生成doc,sbin,share三个文件夹。

解压的源码文件也可以删除掉。

3.创建配置文件

在安装目录下建立配置文件目录

mkdirconf

在新创建的目录下创建配置文件

vihaproxy.cfg

在创建的haproxy.cfg文件中填入

global 

log127.0.0.1local0info#[errwarninginfodebug]

maxconn4096

useradmin

groupadmin

daemon

nbproc1

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

defaults

maxconn2000

contimeout5000

clitimeout30000

srvtimeout30000

listenadmin_stats

bind0.0.0.0:

1080

modehttp

log127.0.0.1local0err

statsuri/admin?

stats

这个配置是能让HAProxy工作起来的最小配置

4.启动HAProxy

进入安装目录下的sbin目录

启动HAProxy

./haproxy-f../conf/haproxy.cfg

通过浏览器访问“http:

//xxx.xxx.xxx.xxx:

1080/admin?

stats“(xxx为IP),看到管理页面

5.修改haproxy启动文件权限

(如果你是用ROOT用户启动HAProxy,这步可以省略,这个步骤是为了能让非ROOT用户也能通过HAProxy监听80端口,因为LIUNX的80端口一定要使用ROOT账户启动)

使用root账户进入sbin目录

更改haproxy的所有者为root

chownroot:

roothaproxy

给haproxy增加S权限

chmodu+shaproxy

6.配置日志

创建日志目录

使用非root账户这里是admin账户创建日志文件

mkdir/home/admin/haproxy/logs

修改操作系统的日志配置

HAProxy可以收集本机及其他后端服务器日志,但是需要在HAProxy和操作系统上作一些配置。

使用root账户首先修改/etc/sysconfig/syslog文件,将SYSLOGD_OPTIONS="-m0”修改为SYSLOGD_OPTIONS="-m0-r-x",支持收集远程服务器日志。

然后修改/etc/syslog.conf,增加如下语句:

local0.*/home/admin/haproxy/logs/haproxy.log//haproxy.log地址代表了需要存储日志的地址,其中local0这个级别要和haproxy.cfg配置的log级别一样

执行servicesyslogrestart,重新启动系统日志器

更改日志文件用户

chownadmin:

admin/home/admin/haproxy/logs/haproxy.log

7.创建启动/停止脚本(如果你认为现在的启动脚本已经够方便了,这步可以省略)

为了方便以后启动或停止,所以编写一个启动脚本

在sbin目录下创建hactl.sh

vihactl.sh

填入一下内容

#!

/bin/sh# 

cd`dirname$0`/..

BASE_DIR="`pwd`"

ARGV="$@"

start()

{

echo"STARTHAPoxySERVERS"

$BASE_DIR/sbin/haproxy-f$BASE_DIR/conf/haproxy.cfg

}

stop()

#haproxy.pid的路径是haproxy.cfg文件中配置的

echo"STOPHAPoxyListen"

kill-TTOU$(cat$BASE_DIR/logs/haproxy.pid)

echo"STOPHAPoxyprocess"

kill-USR1$(cat$BASE_DIR/logs/haproxy.pid)

}

case$ARGVin

start)

start

ERROR=$?

;; 

stop)

stop

ERROR=$?

;; 

restart)

stop

start

ERROR=$?

;; 

*) 

echo"hactl.sh[start|restart|stop]"

esac

exit$ERROR

保存后,给hactl.sh增加可执行权限

chmod755hactl.sh

这样就可以使用./hactl.sh[start|restart|stop]的方式启动,关闭,重启了,如果你使用的目录和例子中不一样的话,需要自己对应的修改下以上脚本的目录地址

经过以上1-6步骤以后HAProxy的安装已经结束,之后就是详细的配置下haproxy.cfg文件了

2.HAProxy的配置

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

global:

参数是进程级的,通常和操作系统(OS)相关。

这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改

defaults:

配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件

frontend:

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

backend:

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

listen:

Frontend和Backend的组合体。

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

//cn.haproxy.org/”

下载中文配置说明文档

配置文件例子:

global

#全局的日志配置其中日志级别是[errwarninginfodebug]

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

 

#kernusermaildaemonauthsysloglprnews 

#uucpcronauth2ftpntpauditalertcron2 

#local0local1local2local3local4local5local6local7 

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

#这里也是用local0

log127.0.0.1local0info#[errwarninginfodebug]

#最大连接数

maxconn4096

#用户

useradmin

#组

groupadmin

#使HAProxy进程进入后台运行。

这是推荐的运行模式

daemon

#创建4个进程进入deamon模式运行。

此参数要求将运行模式设置为"daemon"

nbproc4

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

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

defaults 

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

modehttp

#采用http日志格式

optionhttplog

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

retries3

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

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

optionredispatch

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

optionabortonclose

#默认的最大连接数

maxconn4096

#连接超时

contimeout5000

#客户端超时

clitimeout30000

#服务器超时

srvtimeout30000

#=心跳检测超时

timeoutcheck2000

#注:

一些参数值为时间,比如说timeout。

时间值通常单位为毫秒(ms),但是也可以通过加#后缀,来使用其他的单位。

#-us:

microseconds.1microsecond=1/1000000second

#-ms:

milliseconds.1millisecond=1/1000second.Thisisthedefault.

#-s:

seconds.1s=1000ms

#-m:

minutes.1m=60s=60000ms

#-h:

hours.1h=60m=3600s=3600000ms

#-d:

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

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

listenadmin_stats

#监听端口

bind0.0.0.0:

1080

#http的7层模式

modehttp

#日志设置

log127.0.0.1local0err#[errwarninginfodebug]

#统计页面自动刷新时间

statsrefresh30s

#统计页面url

statsuri/admin?

stats

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

statsrealmGemini\Haproxy

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

statsauthadmin:

admin

statsauthadmin1:

admin1

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

statshide-version

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

listensite_status

bind0.0.0.0:

1081

modehttp

log127.0.0.1local0err#[errwarninginfodebug]

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

monitor-uri/site_status

#定义网站down时的策略

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

aclsite_deadnbsrv(denali_server)lt1

aclsite_deadnbsrv(tm_server)lt1 

aclsite_deadnbsrv(mms_server)lt1

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

monitorfailifsite_dead

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

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

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

monitor-net192.168.0.252/31

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

frontendhttp_80_in

#监听端口

bind0.0.0.0:

80

#http的7层模式

modehttp

#应用全局的日志配置

logglobal

#启用http的log

optionhttplog

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

optionhttpclose

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

#获得客户端IP

optionforwardfor

###########HAProxy的日志记录内容配置##########

capturerequestheaderHostlen40

capturerequestheaderContent-Lengthlen10

capturerequestheaderRefererlen200

captureresponseheaderServerlen40

captureresponseheaderContent-Lengthlen10

captureresponseheaderCache-Controllen8

####################acl策略定义#########################

#如果请求的域名满足正则表达式返回true-i是忽略大小写

acldenali_policyhdr_reg(host)-i^(||)$

#如果请求域名满足返回true-i是忽略大小写

acltm_policyhdr_dom(host)-i

##在请求url中包含sip_apiname=,则此控制策略返回true,否则为false

aclinvalid_requrl_sub-isip_apiname=

##在请求url中存在timetask作为部分地址路径,则此控制策略返回true,否则返回false

acltimetask_requrl_dir-itimetask

#当请求的header中Content-length等于0时返回true

aclmissing_clhdr_cnt(Content-length)eq0

######################acl策略匹配相应###################

##当请求中header中Content-length等于0阻止请求返回403

blockifmissing_cl

##block表示阻止请求,返回403错误,当前表示如果不满足策略invalid_req,或者满足策略timetask_req,则阻止请求。

 

blockif!

invalid_req||timetask_req 

#当满足denali_policy的策略时使用denali_server的backend

use_backenddenali_serverifdenali_policy

#当满足tm_policy的策略时使用tm_server的backend

use_backendtm_serveriftm_policy

#reqisetbe关键字定义,根据定义的关键字选择backend

reqisetbe^Host:

\imgdynamic

reqisetbe^[^\]*\/(img|css)/dynamic

reqisetbe^[^\]*\/admin/statsstats

#以上都不满足的时候使用默认mms_server的backend

default_backendmms_server

#HAProxy错误页面设置

errorfile400/home/admin/haproxy/errorfiles/400.http

errorfile403/home/admin/haproxy/errorfiles/403.http

errorfile408/home/admin/haproxy/errorfiles/408.http

errorfile500/home/admin/haproxy/errorfiles/500.http

errorfile502/home/admin/haproxy/errorfiles/502.http

errorfile503/home/admin/haproxy/errorfiles/503.http

errorfile504/home/admin/haproxy/errorfiles/504.http

##########backend的设置##############

backendmms_server

#http的7层模式

modehttp

#负载均衡的方式,roundrobin平均方式

balanceroundrobin

#允许插入serverid到cookie中,serverid后面可以定义

cookieSERVERID

#心跳检测的URL,HTTP/1.1¥r¥nHost:

XXXX,指定了心跳检测HTTP的版本,XXX为检测时请求

#服务器的request中的域名是什么,这个在应用的检测URL对应的功能有对域名依赖的话需要设置

optionhttpchkGET/member/login.jhtmlHTTP/1.1\r\nHost:

#服务器定义,cookie1表示serverid为1,checkinter1500是检测心跳频率

#rise3是3次正确认为服务器可用,fall3是3次失败认为服务器不可用,weight代表权重

servermms110.1.5.134:

80cookie1checkinter1500rise3fall3weight1

servermms210.1.6.118:

80cookie2checkinter1500rise3fall3weight2

backenddenali_server

modehttp

#负载均衡的方式,source根据客户端IP进行哈希的方式

balancesource

#但设置了backup的时候,默认第一个backup会优先,设置optionallbackups后

#所有备份服务器权重一样

optionallbackups

#心跳检测URL设置

optionhttpchkGET/mytaobao/home/my_taobao.jhtmlHTTP/1.1\r\nHost:

#可以根据机器的性能不同,不使用默认的连接数配置而使用自己的特殊的连接数配置

#如minconn10maxconn20

serverdenlai110.1.5.114:

80minconn4maxconn12checkinter1500rise3fall3

serverdenlai210.1.6.104:

80minconn10maxconn20checkinter1500rise3fall3

#备份机器配置,正常情况下备机不会使用,当主机的全部服务器都down的时候备备机会启用

serverdnali-back110.1.7.114:

80checkbackupinter1500rise3fall3

serverdnali-back210.1.7.114:

80checkbackupinter1500rise3fall3

backendtm_server

modehttp

#负载均衡的方式,leastconn根据服务器当前的请求数,取当前请求数最少的服务器

balanceleastconn

optionhttpchkGET/trade/itemlist/prepayCard.htmHTTP/1.1\r\nHost:

trade.gemini.taobao.ne

servertm110.1.5.115:

80checkinter1500rise3fall3

servertm210.1.6.105:

80checkinter1500rise3fall3

######reqisetbe自定义关键字匹配backend部分#######################

backenddynamic

modehttp

balancesource

optionhttpchkGET/welcome.htmlHTTP/1.1\r\nHost:

serverdenlai110.3.5.114:

80checkinter1500rise3fall3

serverdenlai210.4.6.104:

80checkinter1500rise3fall3

backendstats

modehttp

balancesource

optionhttpchkGET/welcome.htmlHTTP/1.1\r\nHost:

serverdenlai110.5.5.114:

80checkinter1500rise3fall3

serverdenlai210.6.6.104:

80checkinter1500rise3fall3

3.HA-Proxy的压力测试结果

简单的压力测试采用Apacheab,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1