Haproxy安装及配置详解与算法.docx

上传人:b****1 文档编号:2035265 上传时间:2023-05-02 格式:DOCX 页数:16 大小:284.82KB
下载 相关 举报
Haproxy安装及配置详解与算法.docx_第1页
第1页 / 共16页
Haproxy安装及配置详解与算法.docx_第2页
第2页 / 共16页
Haproxy安装及配置详解与算法.docx_第3页
第3页 / 共16页
Haproxy安装及配置详解与算法.docx_第4页
第4页 / 共16页
Haproxy安装及配置详解与算法.docx_第5页
第5页 / 共16页
Haproxy安装及配置详解与算法.docx_第6页
第6页 / 共16页
Haproxy安装及配置详解与算法.docx_第7页
第7页 / 共16页
Haproxy安装及配置详解与算法.docx_第8页
第8页 / 共16页
Haproxy安装及配置详解与算法.docx_第9页
第9页 / 共16页
Haproxy安装及配置详解与算法.docx_第10页
第10页 / 共16页
Haproxy安装及配置详解与算法.docx_第11页
第11页 / 共16页
Haproxy安装及配置详解与算法.docx_第12页
第12页 / 共16页
Haproxy安装及配置详解与算法.docx_第13页
第13页 / 共16页
Haproxy安装及配置详解与算法.docx_第14页
第14页 / 共16页
Haproxy安装及配置详解与算法.docx_第15页
第15页 / 共16页
Haproxy安装及配置详解与算法.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Haproxy安装及配置详解与算法.docx

《Haproxy安装及配置详解与算法.docx》由会员分享,可在线阅读,更多相关《Haproxy安装及配置详解与算法.docx(16页珍藏版)》请在冰点文库上搜索。

Haproxy安装及配置详解与算法.docx

Haproxy安装及配置详解与算法

HAProxy安装及配置详解与算法

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

根据官方数据,其最高极限支持10G的并发。

 

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。

HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。

并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

 

其支持从4层至7层的网络交换,即覆盖所有的TCP协议。

就是说,Haproxy 甚至还支持 Mysql 的均衡负载。

如果说在功能上,能以proxy反向代理方式实现 WEB均衡负载,这样的产品有很多。

包括Nginx,ApacheProxy,lighttpd,Cheroke 等。

 

但要明确一点的,Haproxy 并不是 Http 服务器。

以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。

简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。

而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。

其自身并不能提供http服务。

 

 

但其配置简单,拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障,HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。

自1.3版本开始还引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend。

1.安装

官方版本获取地址:

http:

//haproxy.1wt.eu/,不过官方页面已经打不开了,请自行搜索!

上面中的26是linux系统内核,通过命令#uname-a可查看,我使用的是CentOS

# tarxzvfhaproxy-1.4.24.tar.gz

#cdhaproxy-1.4.24

# makeTARGET=linux26PREFIX=/usr/local/haproxy

# makeinstallPREFIX=/usr/local/haproxyb

2.配置

安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。

#cd/usr/local/haproxy

#vihaproxy.cfg

默认文件内容如下:

(注意!

标示开始的为默认的配置文件没有的)

CODE:

#thisconfigneedshaproxy-1.1.28orhaproxy-1.2.1

####################全局配置信息####################################

##########参数为进程级,通常和操作系统相关##########################

global

log127.0.0.1local0

log127.0.0.1local1notice

#logloghostlocal0info#日志

maxconn4096#默认最大连接数

chroot/usr/share/haproxy#chroot运行路径

uid99#所属运行的用户uid

gid99#所属运行的用户组

daemon#以后台形式运行haproxy

nbproc2#进程数量(可以设置多个进程提高性能)

pidfile/usr/local/haproxy/haproxy.pid#haproxy的pid存放路径,启动进程的用户必须有权限访问此文件

#debug#

#quiet

####################默认的全局设置####################################

##########参数可以被利用配置到frontend,backend,listen组件#############

defaults

logglobal

modehttp#所处理的类别(#7层http;4层tcp)

optionhttplog#日志类别http日志格式

optionhttpclose#每次请求完毕后主动关闭http通道

optiondontlognull#不记录健康检查的日志信息

optionforwardfor#后端服务器需要获得客户端真实ip需配置的参数,可从HttpHeader中获得ip

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

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

statsrefresh30#统计页面刷新间隔

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

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

balanceroundrobin#默认的负载均衡的方式,轮询方式

balancesource#默认的负载均衡的方式,类似nginx的ip_hash

balanceleastconn#默认的负载均衡的方式,最小连接

maxconn2000#最大连接数

contimeout5000#连接超时

clitimeout50000#客户端超时

srvtimeout50000#服务器超时

timeoutcheck2000#心跳检测超时

####################监控页面设置####################################

listenappli1-rewrite0.0.0.0:

10001

cookieSERVERIDrewrite

balanceroundrobin

serverapp1_1192.168.34.23:

8080cookieapp1inst1checkinter2000rise2fall5

serverapp1_2192.168.34.32:

8080cookieapp1inst2checkinter2000rise2fall5

serverapp1_3192.168.34.27:

8080cookieapp1inst3checkinter2000rise2fall5

serverapp1_4192.168.34.42:

8080cookieapp1inst4checkinter2000rise2fall5

listenappli2-insert0.0.0.0:

10002

optionhttpchk

balanceroundrobin

cookieSERVERIDinsertindirectnocache

serverinst1192.168.114.56:

80cookieserver01checkinter2000fall3

serverinst2192.168.114.56:

81cookieserver02checkinter2000fall3

capturecookievgnvisitor=len32

optionhttpclose#disablekeep-alive

rspidel^Set-cookie:

\IP=#donotletthiscookietellourinternalIPaddress

listenappli3-relais0.0.0.0:

10003

dispatch192.168.135.17:

80

listenappli4-backup0.0.0.0:

10004

optionhttpchk/index.html

optionpersist

balanceroundrobin

serverinst1192.168.114.56:

80checkinter2000fall3

serverinst2192.168.114.56:

81checkinter2000fall3backup

listenssl-relay0.0.0.0:

8443

optionssl-hello-chk

balancesource

serverinst1192.168.110.56:

443checkinter2000fall3

serverinst2192.168.110.57:

443checkinter2000fall3

serverback1192.168.120.58:

443backup

listenappli5-backup0.0.0.0:

10005

optionhttpchk*

balanceroundrobin

cookieSERVERIDinsertindirectnocache

serverinst1192.168.114.56:

80cookieserver01checkinter2000fall3

serverinst2192.168.114.56:

81cookieserver02checkinter2000fall3

serverinst3192.168.114.57:

80backupcheckinter2000fall3

capturecookieASPSESSIONlen32

srvtimeout20000

optionhttpclose#disablekeep-alive

optioncheckcache#blockresponseifset-cookie&cacheable

rspidel^Set-cookie:

\IP=#donotletthiscookietellourinternalIPaddress

errorloc502http:

//192.168.114.58/error502.html

errorfile503/etc/haproxy/errors/503.http

####################监控页面的设置#######################

listenadmin_status#Frontend和Backend的组合体,监控组的名称,按需自定义名称

bind0.0.0.0:

65532#监听端口

modehttp#http的7层模式

log127.0.0.1local3err#错误日志记录

statsrefresh5s#每隔5秒自动刷新监控页面

statsuri/admin?

stats#监控页面的url

statsrealmitnihao\itnihao#监控页面的提示信息

statsauthadmin:

admin#监控页面的用户和密码admin,可以设置多个用户名

statsauthadmin1:

admin1#监控页面的用户和密码admin1

statshide-version#隐藏统计页面上的HAproxy版本信息

statsadminifTRUE#手工启用/禁用,后端服务器(haproxy-1.4.9以后版本)

errorfile403/etc/haproxy/errorfiles/403.http

errorfile500/etc/haproxy/errorfiles/500.http

errorfile502/etc/haproxy/errorfiles/502.http

errorfile503/etc/haproxy/errorfiles/503.http

errorfile504/etc/haproxy/errorfiles/504.http

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

capturerequestheaderHostlen40

capturerequestheaderContent-Lengthlen10

capturerequestheaderRefererlen200

captureresponseheaderServerlen40

captureresponseheaderContent-Lengthlen10

captureresponseheaderCache-Controllen8

#######################网站监测listen配置#####################

###########此用法主要是监控haproxy后端服务器的监控状态############

listensite_status

bind0.0.0.0:

1081#监听端口

modehttp#http的7层模式

log127.0.0.1local3err#[errwarninginfodebug]

monitor-uri/site_status#网站健康检测URL,用来检测HAProxy管理的网站是否可以用,正常返回200,不正常返回503

aclsite_deadnbsrv(server_web)lt2#定义网站down时的策略当挂在负载均衡上的指定backend的中有效机器数小于1台时返回true

aclsite_deadnbsrv(server_blog)lt2

aclsite_deadnbsrv(server_bbs)lt2

monitorfailifsite_dead#当满足策略的时候返回503,网上文档说的是500,实际测试为503

monitor-net192.168.16.2/32#来自192.168.16.2的日志信息不会被记录和转发

monitor-net192.168.16.3/32

########frontend配置可以定义多个acl进行匹配操作########

frontendhttp_80_in

bind0.0.0.0:

80#监听端口,即haproxy提供web服务的端口,和lvs的vip端口类似

modehttp#http的7层模式

logglobal#应用全局的日志配置

optionhttplog#启用http的log

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

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

########acl策略配置#############

aclitnihao_webhdr_reg(host)-i^(|)$

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

aclitnihao_bloghdr_dom(host)-i

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

#aclitnihaohdr(host)-i

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

#aclfile_requrl_sub-ikillall=

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

#acldir_requrl_dir-iallow

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

#aclmissing_clhdr_cnt(Content-length)eq0

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

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

#blockifmissing_cl

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

#blockif!

file_req||dir_req

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

use_backendserver_webifitnihao_web

#当满足itnihao_web的策略时使用server_web的backend

use_backendserver_blogifitnihao_blog

#当满足itnihao_blog的策略时使用server_blog的backend

#redirectprefixcode301ifitnihao

#当访问的时候,用http的301挑转到http:

//192.168.16.3

default_backendserver_bbs

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

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

######################backendserver_web#############################

backendserver_web

modehttp#http的7层模式

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

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

optionhttpchkGET/index.html#心跳检测的文件

serverweb1192.168.16.2:

80cookieweb1checkinter1500rise3fall3weight1

#服务器定义,cookie1表示serverid为web1,checkinter1500是检测心跳频率rise3是3次正确认为服务器可用,

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

serverweb2192.168.16.3:

80cookieweb2checkinter1500rise3fall3weight2

#服务器定义,cookie1表示serverid为web2,checkinter1500是检测心跳频率rise3是3次正确认为服务器可用,

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

#########################backendserver_blog########################################

backendserver_blog

modehttp#http的7层模式

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

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

optionhttpchkGET/index.html#心跳检测的文件

serverblog1192.168.16.2:

80cookieblog1checkinter1500rise3fall3weight1

#服务器定义,cookie1表示serverid为web1,checkinter1500是检测心跳频率rise3是3次正确认为服务器可用,fall3是3次失败认为服务器不可用,weight代表权重

serverblog2192.168.16.3:

80cookieblog2checkinter1500rise3fall3weight2

#服务器定义,cookie1表示serverid为web2,checkinter1500是检测心跳频率rise3是3次正确认为服务器可用,fall3是3次失败认为服务器不可用,weight代表权重

###################################backenderver_bbs####################################

backendserver_bbs

modehttp#http的7层模式

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

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

optionhttpchkGET/index.html#心跳检测的文件

serverbbs1192.168.16.2:

80cookiebbs1checkinter1500rise3fall3weight1

#服务器定义,cookie1表示serverid为web1,checkinter1500是检测心跳频率rise3是3次正确认为服务器可用,fall3是3次失败认为服务器不可用,weight代表权重

serverbbs2192.168.16.3:

80cookiebbs2checkinter1500rise3fall3weight2

#服务器定义,cookie1表示serverid为web2,checkinter1500是检测心跳频率rise3是3次正确认为服务器可用,fall3是3次失败认为服务器不可用,weight代表权重

根据实际需求,更改配置文件,我的配置如下

3.加上日志支持

是根据上面的global和default里的log配置

#vim/etc/syslog.conf

在最下边增加

local3.*/var/log/hapro

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2