haproxy配置范例

您所在的位置:网站首页 haproxy中转 haproxy配置范例

haproxy配置范例

2024-07-10 19:18:13| 来源: 网络整理| 查看: 265

首页 分类首页 haproxy配置范例 HaProxy特性 开启日志 配置范例 简单的tcp代理配置 基本配置说明 HaProxy特性

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

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。 

其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载(read)。

如果说在功能上,能以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.3 是处于活跃开发阶段的版本, 它支持如下新特性:

内容交换:

可以根据请求(request)的任何一部分 来选择一组服务器, 比如请求的 URI , Host头(header) , cookie , 以及其他任何东西. 当然,对那些静态分离的站点来说,对此特性还有更多的需求。 

全透明代理: 

可以用 客户端IP地址 或者任何其他地址来连接后端服务器,这个特性仅在Linux 2.4/2.6内核打了cttproxy 补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。 

基于树的更快的调度器:

1.2.16以上的版本要求所有的超时都设成同样的值以支持数以万计的全速连接. 这个特性已经移植到1.2.17。

内核TCP拼接:

避免了内核到用户然后用户到内核端的数据拷贝, 提高了吞吐量同时又降低了CPU使用率 . Haproxy 1.3支持Linux L7SW 以满足在商用硬件上数Gbps 的吞吐的需求。 

连接拒绝:

因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点。 

细微的头部处理:

使得编写基于header的规则更为简单,同时可以处理URI的某部分。

快而可靠的头部处理:

使用完全RFC2616 兼容的完整性检查对一般的请求全部进行分析和索引仅仅需要不到2ms的时间。 

模块化设计:

允许更多人加入进此项目,调试也非常简单. poller已经分离, 已经使得它们的开发简单了很多。HTTP已经从TCP分离出来了,这样增加新的七层特性变得非常简单,其他子系统也会很快实现模块化。

投机I/O 处理:

在一个套接字就绪前就尝试从它读取数据。poller仅推测哪个可能就绪哪个没有,尝试猜测,并且如果成功,一些开销很大的系统调用就可以省去了。如果失败,就会调用这些系统调用。已知的使用Linux epoll()已经净提升起码10%了。

ACLs:

使用任意规则的任意组合作为某动作的执行条件。 

TCP协议检查:

结合ACL来对请求的任意部分进行检查,然后再进行转发。这就可以执行协议验证而不是盲目的进行转发。比如说允许SSL但拒绝SSH。 

更多的负载均衡算法:

现在,动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现。其他算法比如Weighted Measured Response Time也很快会实现。

开启日志 haproxy无记录日志问题,需修改/etc/rsyslog.conf # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # 增加local2日志 local2.* /var/log/haproxy.log 配置范例 简单的tcp代理配置 #--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the '-r' option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 ##--------------------------------------------------------------------- ## main frontend which proxys to the backends ##--------------------------------------------------------------------- #frontend main *:5000 # acl url_static path_beg -i /static /images /javascript /stylesheets # acl url_static path_end -i .jpg .gif .png .css .js # # use_backend static if url_static # default_backend app # ##--------------------------------------------------------------------- ## static backend for serving up images, stylesheets and such ##--------------------------------------------------------------------- #backend static # balance roundrobin # server static 127.0.0.1:4331 check # ##--------------------------------------------------------------------- ## round robin balancing between the various backends ##--------------------------------------------------------------------- #backend app # balance roundrobin # server app1 127.0.0.1:5001 check # server app2 127.0.0.1:5002 check # server app3 127.0.0.1:5003 check # server app4 127.0.0.1:5004 check listen MyRdp mode tcp bind *:3389 server myRdp1 192.168.1.100:3389 maxconn 32 option tcplog listen web_vip 0.0.0.0:80 mode http option httplog option forwardfor except 127.0.0.0/8 stats uri /haproxy-stats 基本配置说明 global #全局设置 log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出 #log loghost local0 info maxconn 4096 #最大连接数 chroot /usr/local/haproxy uid 99 #所属运行的用户uid gid 99 #所属运行的用户组 group haproxy #用户组 daemon #后台运行haproxy nbproc 1 #启动1个haproxy实例 pidfile /usr/local/haproxy/haproxy.pid #将所有进程PID写入pid文件 #debug #quiet defaults #默认设置 #log global log 127.0.0.1 local3 #日志文件的输出定向 #默认的模式:tcp|http|health mode http #所处理的类别,默认采用http模式 option httplog #日志类别,采用http日志格式` option dontlognull option forwardfor #将客户端真实ip加到HTTP Header中供后端服务器读取 option retries 3 #三次连接失败则认证服务器不可用 option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只>能模拟这种模式的实现 retries 3 #3次连接失败就认为服务器不可用,主要通过后面的check检查 option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器 option abortonclose #当服务器负载很高时,自动结束掉当前队列中处理比较久的链接 maxconn 2000 #默认最大连接数 timeout connect 5000 #连接超时时间 timeout client 50000 #客户端连接超时时间 timeout server 50000 #服务器端连接超时时间 stats enable stats uri /haproxy-stats #haproxy监控页面的访问地址 stats auth test:test123 #设置监控页面的用户和密码 stats hide-version #隐藏统计页面的HAproxy版本信息 frontend http-in #前台 bind *:81 mode http option httplog log global default_backend htmpool #静态服务器池 backend htmpool #后台 balance leastconn #负载均衡算法 option httpchk HEAD /index.html HTTP/1.0 #健康检查 server web1 192.168.2.10:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3 server web2 192.168.2.11:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3 # web1/web2:自定义服务器别名 # 192.168.2.10:80:服务器IP:Port # cookie 1/2:表示serverid # weight: 服务器权重,数字越大分配到的请求数越高 # check: 接受定时健康检查 # inter 2000: 检查频率 # rise 2: 两次检测正确认为服务器可用 # fall 3: 三次失败认为服务器不可用 listen w.gdu.me 0.0.0.0:80 option httpchk GET /index.html server s1 192.168.2.10:80 weight 3 check server s3 192.168.2.11:80 weight 3 check # Haproxy统计页面 # -------------------------------------------------------------------------------------------- listen haproxy_stats bind 0.0.0.0:1080 #侦听IP:Port mode http log 127.0.0.1 local 0 err #err|warning|info|debug] stats refresh 30s stats uri /haproxy-stats stats realm Haproxy\ Statistics stats auth admin:admin stats auth test:test stats hide-version stats admin if TRUE #手工启用/禁用后端服务器 # 网站检测listen配置 # -------------------------------------------------------------------------------------------- listen site_status bind 0.0.0.0:1081 mode http log 127.0.0.1 local0 err #网站健康检查URI,用来检测Haproxy管理的网站是否可能,正常返回200、异常返回500 monitor-uri /site_status #定义网站down时的策略 #当backend中的有效服务器数


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭