HaProxy 1.5 说明文档翻译

来源:互联网 发布:淘宝图片防止右键保存 编辑:程序博客网 时间:2024/05/17 08:30
春节之前主要对HAPROXY的很多内容进行学习,其中就包括了对说明文档的翻译工作,我个人习惯把东西都记录下来,免得以后忘记(记性不好的后果)。之前以为文档前面是重要内容,后面很多都是对前面的赘述,翻译到1/3的时候才发现后面也非常重要,但出于内容极多,语法似乎不是出自一人之手,暂且先将前面内容翻译完毕,后面内容则待补充。
本文主要翻译说明文档中对haproxy配置方法的说明。

1.HTTP传输模式
HTTP close模式建立连接后只能进行一次请求回应,然后连接关闭。
keep-alive模式要求回应包的头部内容包含“内容长度”,可在单次连接中进行若干次请求回应。
     keep-alive模式一般比HTTP close要好,前提是用户的并发请求比较高。
流水线模式使用keep-alive,但其不会等待前面未响应的请求结束,而直接发送下一个请求。这种方式在获取含有大量图片的页面时很有效。但这种方式不常用,因为很多HTTP代理没办法处理请求和响应顺序的问题。需要服务器接收请求的顺序和客户端发送的顺序一致。

1.2 HTTP请求和回应

2. HAProxy的配置
  • 全局参数
    进程管理及安全

    chroot 选择一个空目录且无人使用,这样能够保证HAProxy的安全,减少被利用的可能。

    cpu-map <all | odd | even | process_num> <cpu-set>

        linxu2.6之后,可以将单个进程绑定在指定CPU上。大于nbproc后参数的进程号会被忽略。倘若存在重叠情况,则后者会代替前者。
    crt-base <dir>    当使用了“crtfile”指令时指定一个目录来获取SSL证书。
    deamon 后台模式,也可以使用“-D”启用,或者“-db”禁用。
    gid & group
    log <address> [len <length>] <facility> [max level [min level]]
        添加一个全局日志服务器。例如log 127.0.0.1 local3,各参数详情在文档中。
    log-send-hostname [<string>]    在syslog头部设置hostname。(可以用来调试某个syslog服务器不起作用。
    log-tag <string>    在syslog头部设置<string>字符的标签区域。从命令行启动的
    nbproc 创建多个进程,需要daemon模式。默认单个进程。由于系统对文件描述符的small sets 有限制,因此需要fork多个deamon/
    pidfile 将deamon的所有pids写入文件中,启动进程的用户必须有写入的权限。也可用“-p”代替
    stats bind-process  [all | odd | even <1-64>[-<1-64>]] 将stats socket绑定到指定的进程号上,默认绑定全部。
        PS:stats开头的很多都是与socket相关选项。
    ssl-default-bind-ciphers <ciphers>    仅当编译了对OpenSSL的支持时才有效。
    ssl-default-bind-options [<option>]    设置ssl的选项。
    ssl-default-server-ciphers <ciphers>    
    ssl-default-server-options [<option>]    
    ssl-server-verify [none|required]    
    stats socket [<address:port>|<path>] [param*]    绑定UNIX socket 到 <path> 或者绑定 TCPv4/v6 到 <address:port>。
    stats timeout <timeout,in milliseconds>    默认10秒,
    stats maxconn <connections>    默认将stats socket限制为10 并发连接。
    uid 将进程的id更改为指定数字。推荐将用户ID改为HAProxy的...HAProxy必须有超级用户权限启动才能切换。
    ulimit-n <number> 
    unix-bind [ prefix <prefix> ] [ mode <mode> ] [ user <user> ] [ uid <uid> ] [ group <group> ] [ gid <gid> ]    将通常设置绑定到所有处于‘bind’状态的UNIX监听端口。主要作用是简化这些UNIX端口的声明,减少错误风险(因为这些设置通常是必要的,但也是进程相关的)。
    users    
    node 当几个进程或服务公用一个IP地址时有用。设置不同的node名称,让服务器知道处理的是什么流量。
    description <text>    为这个例子添加描述

  • 性能优化
    max-spread-checks 有时间间隔的健康检测,为了防止服务运行在同一个服务器上。
    maxconn <number>   设置每个进程的最大并发连接数值,相当于“-n”参数。超过部分代理会拒收,
    maxconnrate    <number>    
    maxcompcpuusage 限制Haproxy最大可用CPU利用率。默认不限制。
    maxcomprate 

    maxpipes <number>    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 2.6.25-28系列的内核上,tcp重组功能有bug存在.

    nogetaddrinfo    禁用getaddrinfo以解析名称(?name)

    spread-checks <0..50,in percent>    有时候避免精准的健康检查时间间隔更加合理。

    tune.bufsize <num>    设置buff大小。较小的值使得相同大小的内存中保存更多会话(并发连接),较大的值可以让应用拥有更大的缓存cookies。默认值是16384,可以在编译的时候更改。但强烈建议不去修改它。因为值太小会破坏某些服务(例如statistics),而值太大则会增加内存负担,可能造成内存溢出。至少同样条件下,该变量增加会导致全局并发连接会下降。若HTTP请求大于(tune.bufsize - tune.maxrewrite),haproxy会返回400错误(请求错误)。同样的,若HTTP回应大于该值,则返回502错误(gateway error)。

    tune.chksize <num>    设置check buffer的大小。更大的数值有利于在更大的页面中差找到字符串和正则表达式,虽然这么做会增加内存和CPU负担。默认值16384,编译时可更改。虽然不建议修改,但有可能的话最好使用更好的checks。

√  tune.comp.maxlevel <num>    设置最大的压力等级。该等级影响CPU在压力过程中的利用率。每个会话使用该值来初始化压力算法。默认为1。

    tune.http.cookielen <num>    设置最大缓存cookies的大小。这是“capture cookie xxx len yyy”所允许的最大值,任何比他大的值都会被缩减成这个值。有一点值得说明,不要把这个值设大了,因为所有的cookies都会被分配成这个值,无论它们配置的大小是多少(因为它们共享同一个pool)。这个值是按每个请求每个回应来算的,所以每个连接的内存分配大小是该值的两倍。没有特别声明时,该限制大小是63个字节,最好别修改。

    tune.http.maxhdr <num>    设置请求头的最大值。当接收到的请求头大于该值(包含第一行)时,将会被拒绝,错误码是“400 bad request”;同样的,回应头过大时,会导致阻塞,错误码是“500 gateway

 error”。默认值是101,考虑到Apache服务器大规模的使用该limit值,(该值)足够应付所有用途了。可以将它设大一些,暂时让一个有错误(buggy)的应用工作,直到错误被修复。请记住,每次会话的每个新头部都会消耗32bits的内存容量,所以最好别设太大了。

    tune.idletimer <timeout>    设置haproxy查找空闲流(steams)占用空buffer的过程后的间隔时间。它通常用来修正一些包的大小(要么变得过大要么变得过小)。到底是使用splice()还是在SSL中发送大型buffer也是在该参数决定。<timeout>值是0到65535毫秒,值为0表示不会尝试检测空闲流(streams)。默认值为1000,差不多就是用户停顿时的检测(例如在点击之前读取页面)[此句没翻译好]。应该没理由改变该值。请参见tune.ssl.maxrecord。

    tune.maxaccept <num>    设定haproxy进程内核调度运行时一次性可以接受的连接的个数。单进程模式中,较大的值可以带给高连接速率更好的性能表现,然而在多进程模式下,调节各个进程之间的平衡比增加性能更重要。这个值逐一应用于每个listener,因此一个listener绑定了多少个进程非常重要。该值默认为64,多进程模式下默认值是64除以listener绑定的进程数值的两倍。设定为-1可以完全禁止此限制。通常不需要修改这个值。

    tune.maxpollevents <num>    设置调用轮训系统时进程同时最大的事件数量。这个值取决于操作系统。实验证明,其值小于200时可节约带宽,但会略微增大网络延迟,而大于200时会降低延迟,但会稍稍增加网络带宽的占用量。

    tune.maxrewrite <num>    设定为首部重写或追加而预留的缓冲空间,建议使用1024左右的大小。在需要使用更大的空间时,haproxy会自动增加其值。

    tune.rcvbuf.client <number>:定义在客户端内核套接字接收缓冲区的大小,单位为字节,建议不要调整此值。

    tune.rcvbuf.server <number>:设定内核套接字中服务端或客户端接收缓冲的大小,单位为字节;强烈推荐使用默认值。

    tune.sndbuf.client:定义在客户端内核套接字发送缓冲区的大小,单位为字节,建议不要调整此值。

    tune.sndbuf.server:定义在服务端内核套接字发送缓冲区的大小,单位为字节,建议不要调整此值。

    

    appsession 
    balance <algorithm> [ <arguments> ]    algorithm 有如下几个选项:1. roundrobin  轮询 动态,运行过程中修改weight会实施生效。最多只能存在4095个活跃server;

                                                                                                                 2. static-rr  静态轮询 活跃server无上限;

                                                                                                                3. leastconn  最少连接  当前集群中处于最少连接状态的服务器将获取新连接。适合长时间会话保持如LDAP、SQL、TSE,不适合短期                                                                                                                       会话如http;

    bind [<address>]:<port_range> [, ...] [param*]    

    bind /<path> [, ...] [param*]

    bind-process [ all | odd | even | <number 1-64>[-<number 1-64>] ] ...    设定能处理事件的进程个数。

    block  { if | unless } <condition>

0 0
原创粉丝点击