欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    HAProxy用法详解资料.docx

    • 资源ID:11764980       资源大小:38.96KB        全文页数:36页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    HAProxy用法详解资料.docx

    1、HAProxy用法详解资料HAProxy用法详解一,HAProxy简介(1)HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并 且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上, 完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。(2)HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受

    2、内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。(

    3、4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。性能: HAProxy借助于OS上几种常见的技术来实现性能的最大化。 1,单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。 2,O(1)事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测。 3,在任何可用的情况下,单缓冲(single buffering)机制能以不复

    4、制任何数据的方式完成读写操作,这会节约大量的CPU时钟周期及内存带宽; 4,借助于Linux 2.6 (= 2.6.27.19)上的splice()系统调用,HAProxy可以实现零复制转发(Zero-copy forwarding),在Linux 3.5及以上的OS中还可以实现零复制启动(zero-starting); 5,内存分配器在固定大小的内存池中可实现即时内存分配,这能够显著减少创建一个会话的时长; 6,树型存储:侧重于使用作者多年前开发的弹性二叉树,实现了以O(log(N)的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列; 7,优化的HTTP首部分析:优化的首部分

    5、析功能避免了在HTTP首部分析过程中重读任何内存区域; 8,精心地降低了昂贵的系统调用,大部分工作都在用户空间完成,如时间读取、缓冲聚合及文件描述符的启用和禁用等;所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载,甚至于在非常高的负载场景中,5%的用户空间占用率和95%的系统空间占用率也是非常普遍的现象,这意味着HAProxy进程消耗比系统空间消耗低20倍以上。因此,对OS进行性能调优是非常重要的。即使用户空间的占用率提高一倍,其CPU占用率也仅为10%,这也解释了为何7层处理对性能影响有限这一现象。由此,在高端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备

    6、。在生产环境中,在7层处理上使用HAProxy作为昂贵的高端硬件负载均衡设备故障故障时的紧急解决方案也时长可见。硬件负载均衡设备在“报文”级别处理请求,这在支持跨报文请求(request across multiple packets)有着较高的难度,并且它们不缓冲任何数据,因此有着较长的响应时间。对应地,软件负载均衡设备使用TCP缓冲,可建立极长的请求,且有着较大的响应时间。HAProxy目前主要有三个版本: 1.3 , 1.4 ,1.5,CentOS6.6 自带的RPM包为 1.5 的。二,安装配置HAProxy以下实验环境均为CentOS6.6 i686平台。1. 1,安装haproxy

    7、2. rootLB # yum install -y haproxy #直接使用RPM来安装3. 4. rootLB # rpm -qi haproxy #版本为1.5.45. Name : haproxy Relocations: (not relocatable)6. Version : 1.5.4 Vendor: CentOS7. Release : 2.el6 Build Date: Thu 23 Jul 2015 04:26:35 PM PDT8. Install Date: Sat 29 Aug 2015 06:49:30 PM PDT Build Host: c6b9.bsys.

    8、dev.centos.org9. Group : System Environment/Daemons Source RPM: haproxy-1.5.4-2.el6.src.rpm10. Size : 2542578 License: GPLv2+11. Signature : RSA/SHA1, Fri 24 Jul 2015 01:39:18 PM PDT, Key ID 0946fca2c105b9de12. Packager : CentOS BuildSystem 13. URL : http:/www.haproxy.org/14. Summary : HAProxy is a

    9、TCP/HTTP reverse proxy for high availability environments15. 16. rootLB # rpm -ql haproxy17. /etc/haproxy 18. /etc/haproxy/haproxy.cfg -配置文件19. /etc/logrotate.d/haproxy20. /etc/rc.d/init.d/haproxy21. /etc/sysconfig/haproxy22. /usr/bin/halog23. /usr/bin/iprange24. /usr/sbin/haproxy25. 26. rootLB # cd

    10、 /etc/haproxy/2,详解配置文件haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。2.1 配置文件格式HAProxy的配置处理3类来主要参数来源:最优先处理的命令行参数;“global”配置段,用于设定全局配置参数;proxy相关配置段,如“defaults”、“listen”、“frontend”和“backend”;2.2 时间格式一些包含了值的参数表示时间,如超时时长。这些值一般以毫秒为单位,但也可以使用其它的时间单位后缀。1. us: 微秒(microseconds),

    11、即1/1000000秒;2. ms: 毫秒(milliseconds),即1/1000秒;3. s: 秒(seconds);4. m: 分钟(minutes);5. h:小时(hours);6. d: 天(days);2.3 全局配置*进程管理及安全相关的参数: chroot :修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot()操作,可以提升haproxy的安全级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限; daemon:让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能,当然,也可以在命令行中以“-db”选项将其禁用;

    12、gid :以指定的GID运行haproxy,建议使用专用于运行haproxy的GID,以免因权限问题带来风险; group :同gid,不过指定的组名; log max level min level:定义全局的syslog服务器,最多可以定义两个; log-send-hostname :在syslog信息的首部添加当前主机名,可以为“string”指定的名称,也可以缺省使用当前主机名; nbproc :指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy;默认只启动一个进程,鉴于调试困难等多方面的原因,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式; pid

    13、file: uid:以指定的UID身份运行haproxy进程; ulimit-n:设定每进程所能够打开的最大文件描述符数目,默认情况下其会自动进行计算,因此不推荐修改此选项;Linux默认单进程打开文件数为1024个 user:同uid,但使用的是用户名; stats:用户访问统计数据的接口 node:定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时; description:当前实例的描述信息;* 性能调整相关的参数 maxconn :设定每个haproxy进程所接受的最大并发连接数,其等同于命令行选项“-n”;“ulimit -n”自动计算的结果正是参照此参数设定

    14、的; maxpipes :haproxy使用pipe完成基于内核的tcp报文重组,此选项则用于设定每进程所允许使用的最大pipe个数;每个 pipe会打开两个文件描述符,因此,“ulimit -n”自动计算时会根据需要调大此值;默认为maxconn/4,其通常会显得过大; noepoll:在Linux系统上禁用epoll机制; nokqueue:在BSE系统上禁用kqueue机制; nopoll:禁用poll机制; nosepoll:在Linux禁用启发式epoll机制; nosplice:禁止在Linux套接字上使用内核tcp重组,这会导致更多的recv/send系统调用;不过,在Linux

    15、 2.6.25-28系列的内核上,tcp重组功能有bug存在; spread-checks :在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统一对众服务器进行健康状况检查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长; tune.bufsize :设定buffer的大小,同样的内存条件小,较小的值可以让haproxy有能力接受更多的并发连接,较大的值可以让某些 应用程序使用较大的cookie信息;默认为16384,其可以在编译时修改,不过强烈建议使用默认值; tune.chksize :设定检查缓冲区的大小,单位为字节;更大的值有助于在较大的页面

    16、中完成基于字符串或模式的文本查找,但也会占用更多的系统资源;不建议修改; tune.maxaccept :设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐率,默认在单进程模式下为100,多进程模式下为8,设定为-1可以禁止此限制;一般不建议修改; tune.maxpollevents :设定一次系统调用可以处理的事件最大数,默认值取决于OS;其值小于200时可节约带宽,但会略微增大网络延迟,而大于200时会降低延迟,但会稍稍增加网络带宽的占用量; tune.maxrewrite :设定为首部重写或追加而预留的缓冲空间,建议使用1024左右的大小;在需要

    17、使用更大的空间时,haproxy会自动增加其值; tune.rcvbuf.client : tune.rcvbuf.server :设定内核套接字中服务端或客户端接收缓冲的大小,单位为字节;强烈推荐使用默认值; tune.sndbuf.client: tune.sndbuf.server:* Debug相关的参数1. - debug2. - quiet* 超时时长1. timeout http-request :在客户端建立连接但不请求数据时,关闭客户端连接2. timeout queue :等待最大时长3. timeout connect: 定义haproxy将客户端请求转发至后端服务器所等

    18、待的超时时长4. timeout client:客户端非活动状态的超时时长5. timeout server:客户端与服务器端建立连接后,等待服务器端的超时时长,6. Timeout http-keep-alive :定义保持连接的超时时长7. Timeout check:健康状态监测时的超时时间,过短会误判,过长资源消耗8. maxconn :每个server最大的连接数9. http-server-close : 在使用长连接时,为了避免客户端超时没有关闭长连接,此功能可以使服务器端关闭长连接10. redispatch: 在使用基于cookie定向时,一旦后端某一server宕机时,会将

    19、会话重新定向至某一上游服务器,必须使用 的选项* 实现访问控制:1. http-request: 7层过滤2. tcp-request content: tcp层过滤,四层过滤2.4 代理代理相关的配置可以如下配置段中。 defaults frontend backend listen 1. “defaults”段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个“defaults”所重新设定。2. “frontend”段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。3. “backend”段用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些

    20、服务器。4. “listen”段通过关联“frontend”和“backend”定义了一个完整的代理,通常只对TCP流量有用。所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL名称会区分字母大小写。三、配置文件中的关键字参考3.1 balancebalance balance url_param check_post 定义负载均衡算法,可用于“defaults”、“listen”和“backend”。用于在负载均衡场景中挑选一个server,其仅应用于持久信息不可用的条件下或需要将一个连接重新派发至另一个服务器时。支持的算法有:3.1

    21、.1 roundrobin:基于权重进行轮叫,在服务器的处理时间保持均匀分布时,这是最平衡、最公平的算法。此算法是动态的,这表示其权重可以在运行时进行调整,不过,在设计上,每个后端服务器仅能最多接受4128个连接;并支持慢启动。3.1.2 static-rr:基于权重进行轮叫,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效;不过,其在后端服务器连接数上没有限制;不支持慢启动,在高负荷的情况下,服务器重新上线时会立即被分配大量连接。3.1.3 leastconn(WLC):适用于长连接的会话,新的连接请求被派发至具有最少连接数目的后端服务器;在有着较长时间会话的场景

    22、中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP;此算法是动态的,可以在运行时调整其权重;3.1.4 source:将请求的源地址进行hash运算,并由后端服务器的权重总数相除后派发至某匹配的服务器;这可 以使得同一个客户端IP的请求始终被派发至某特定的服务器;不过,当服务器权重总数发生变化时,如某服务器宕机或添加了新的服务器,许多客户端的请求可能 会被派发至与此前请求不同的服务器;常用于负载均衡无cookie功能的基于TCP的协议;其默认为静态,不过也可以使用hash-type修改此特性;1. 对原地址hash,第一次调度时使用WLC2. source:

    23、IP层,位于同一个NAT服务器背后的多个请求都会定向至同一个upstream server,不利于负载均衡,一般只有不支持使用cookie插入又需要保持会话时使用3. cookie:应用层,有更好的负载均衡效果; 4. hash/weight%ip:除以权重取模3.1.5 uri:对URI的左半部分(“?”标记之前的部分)或整个URI进行hash运算,并由服务器的总权重相除后派发至某匹配的服务器;这可以使得对同一个URI的请求总是被派发至某特定的服务器,除非服务器的权重总数发生了变化;此算法常用于代理缓存或反病毒代理以提高缓存的命中率;需要注意的是,此算法仅应用于HTTP后端服务器场景;其默认

    24、为静态算法,不过也可以使用hash-type修改此特性;3.1.6 url_param:通过为URL指定的参数在每个HTTP GET请求中将会被检索;如果找到了指定的参数且其通过等于号“=”被赋予了一个值,那么此值将被执行hash运算并被服务器的总权重相除后派发至某匹配 的服务器;此算法可以通过追踪请求中的用户标识进而确保同一个用户ID的请求将被送往同一个特定的服务器,除非服务器的总权重发生了变化;如果某请求中没 有出现指定的参数或其没有有效值,则使用轮叫算法对相应请求进行调度;此算法默认为静态的,不过其也可以使用hash-type修改此特性;3.1.7 hdr():对于每个HTTP请求,通过

    25、指定的HTTP首部将会被检索;如果相应的首部没有出现或其没有有效值,则使用轮叫算法对相应请求进行调度;其有一个可选选项“use_domain_only”,可在指 定检索类似Host类的首部时仅计算域名部分(比如通过来说,仅计算feiyu字符串的hash值)以降低hash算法的运算量;此算法默认为静态的,不过其也可以使用hash-type修改此特性;3.1.8 rdp-cookie(name): 表示根据据cookie(name)来锁定并哈希每一次TCP请求。3.2 bindbind : , bind : , interface 此指令仅能用于frontend和listen区段,用于定义一个或几

    26、个监听的套接字。:可选选项,其可以为主机名、IPv4地址、IPv6地址或*;省略此选项、将其指定为*或0.0.0.0时,将监 听当前系统的所有IPv4地址;:可以是一个特定的TCP端口,也可是一个端口范围(如5005-5010),代理 服务器将通过指定的端口来接收客户端请求;需要注意的是,每组监听的套接字在同一个实例上只能使用一次,而且小 于1024的端口需要有特定权限的用户才能使用,这可能需要通过uid参数来定义;:指定物理接口的名称,仅能在 Linux系统上使用;其不能使用接口别名,而仅能使用物理接口名称,而且只有管理有权限指定绑定的物理接口;3.3 modemode tcp|http|h

    27、ealth 设定实例的运行模式或协议。当实现内容交换时,前端和后端必须工作于同一种模式(一般说来都是HTTP模式),否则将无法启动实例。1. tcp:实例运行于纯TCP模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对7层报文做任何类型的检查;通常用于SSL、SSH、SMTP等应用;2. http:实例运行于HTTP模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与RFC格式兼容的请求都会被拒绝;此为默认模式;3. health:实例工作于health模式,其对入站请求仅响应“OK”信息并关闭连接,且不会记录任何日志信息;此模式将用于响应外部组件的健康状态检查请求;目前来讲

    28、,此模式已经废弃,因为tcp或http模式中的monitor关键字可完成类似功能;3.4 hash-typehash-type 定义用于将hash码映射至后端服务器的方法;其不能用于frontend区段;可用方法有map-based和consistent,在大多数场景下推荐使用默认的map-based方法。map-based:hash表是一个包含了所有在线服务器的静态数组。其hash值将会非常平滑,会将权重考虑在列,但其为静态方法,对在线服务器的权重进行调整将不会生效,这意味着其不支持慢速启动。此外,挑选服务器是根据其在数组中的位置进行的,因此,当一台服务器宕机或添加了一台新的服务器时,大多数

    29、连接将会被重新派发至一个与此前不同的服务器上,对于缓存服务器的工作场景来说,此方法不甚适用。consistent:“一致性哈希算法”,hash表是一个由各服务器填充而成的树状结构,将服务器散列在hash环上;基于hash键在hash树中查找相应的服务器时,最近的服务器将被选中。此方法是动态的,支持在运行时修改服务器权重,因此兼容慢速启动的特性。添加一个新的服务器时,仅会对一小部分请求产生影响,因此,尤其适用于后端服务器为cache的场景。不过,此算法不甚平滑,派发至各服务器的请求未必能达到理想的均衡效果,因此,可能需要不时的调整服务器的权重以获得更好的均衡性。3.5 log1. log glo

    30、bal2. log 为每个实例启用事件和流量日志,因此可用于所有区段。每个实例最多可以指定两个log参数,不过,如果使用了“log global”且”global”段已经定了两个log参数时,多余了log参数将被忽略。global:当前实例的日志系统参数同”global”段中的定义时,将使用此格式;每个实例仅能定义一次“log global”语句,且其没有任何额外参数;:定义日志发往的位置,其格式之一可以为,其中的port为UDP协议端口,默认为514;格式之二为Unix套接字文件路径,但需要留心chroot应用及用户的读写权限;:可以为syslog系统的标准facility之一;:定义日志级别,即输出信息过滤器,默认为所有信息;指定级别时,所有等于或高于此级别的日志信息将会被发送;3.6 maxconnmaxconn 设定一个前端的最大并发连接数,因此,其不能用于backend区段。对于


    注意事项

    本文(HAProxy用法详解资料.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开