HAProxy配置使用说明Word格式文档下载.docx
- 文档编号:21381753
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:13
- 大小:21.52KB
HAProxy配置使用说明Word格式文档下载.docx
《HAProxy配置使用说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《HAProxy配置使用说明Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
在创建的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文件中配置的
STOPHAPoxyListen"
kill-TTOU$(cat$BASE_DIR/logs/haproxy.pid)
STOPHAPoxyprocess"
kill-USR1$(cat$BASE_DIR/logs/haproxy.pid)
case$ARGVin
start)
start
ERROR=$?
;
stop)
stop
restart)
*)
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]
#最大连接数
#用户
#组
#使HAProxy进程进入后台运行。
这是推荐的运行模式
#创建4个进程进入deamon模式运行。
此参数要求将运行模式设置为"
daemon"
nbproc4
#将所有进程的pid写入文件启动进程的用户必须有权限访问此文件。
defaults
#默认的模式mode{tcp|http|health},tcp是4层,http是7层,health只会返回OK
#采用http日志格式
optionhttplog
#三次连接失败就认为是服务器不可用,也可以通过后面设置
retries3
如果cookie写入了serverId而客户端不会刷新cookie,
#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
optionredispatch
#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
optionabortonclose
#默认的最大连接数
#连接超时
#客户端超时
#服务器超时
#=心跳检测超时
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
########统计页面配置############
#监听端口
#http的7层模式
#日志设置
log127.0.0.1local0err#[errwarninginfodebug]
#统计页面自动刷新时间
statsrefresh30s
#统计页面url
#统计页面密码框上提示文本
statsrealmGemini\Haproxy
#统计页面用户名和密码设置
statsauthadmin:
admin
statsauthadmin1:
admin1
#隐藏统计页面上HAProxy的版本信息
statshide-version
#######网站检测listen定义############
listensite_status
1081
#网站健康检测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
80
#应用全局的日志配置
logglobal
#启用http的log
#每次请求完毕后主动关闭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
#负载均衡的方式,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
#负载均衡的方式,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:
backendtm_server
#负载均衡的方式,leastconn根据服务器当前的请求数,取当前请求数最少的服务器
balanceleastconn
optionhttpchkGET/trade/itemlist/prepayCard.htmHTTP/1.1\r\nHost:
trade.gemini.taobao.ne
servertm110.1.5.115:
80checkinter1500rise3fall3
servertm210.1.6.105:
######reqisetbe自定义关键字匹配backend部分#######################
backenddynamic
optionhttpchkGET/welcome.htmlHTTP/1.1\r\nHost:
serverdenlai110.3.5.114:
serverdenlai210.4.6.104:
backendstats
serverdenlai110.5.5.114:
serverdenlai210.6.6.104:
3.HA-Proxy的压力测试结果
简单的压力测试采用Apacheab,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HAProxy 配置 使用说明