春节之前主要对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>

HaProxy 1.5 说明文档翻译相关推荐

  1. TiDB 官方设计文档翻译(二)

    这个系列共三篇译文:  TiDB 官方设计文档翻译(一)  TiDB 官方设计文档翻译(二)  TiDB 官方设计文档翻译(三) 原文:  https://pingcap.github.io/blog ...

  2. Haproxy Nginx cluster构建

    -----client---------haproxy-------nginx1---------nginx2------ 192.168.1.250 192.168.1.1 192.168.1.10 ...

  3. redis sentinel集群配置及haproxy配置

    ip分布情况: sentinel-1/redis 主 10.11.11.5 sentinel-2/redis 从 10.11.11.7 sentinel-3/redis 从 10.11.11.8 ha ...

  4. 负载均衡工具haproxy安装,配置,使用

    一,什么是haproxy HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点 ...

  5. 千万级并发HAproxy均衡负载系统介绍

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

  6. 【iOS官方文档翻译】iOS蓝牙的基本概念

    之前写了[iOS官方文档翻译]iOS的蓝牙连接.数据接收及发送一文,介绍了怎样进行蓝牙通讯,但是很多基本概念没有进行解释,看起来可能有点吃力,所以现在再翻译一篇苹果对官方蓝牙4.0一些基本概念介绍的文 ...

  7. Linux自学笔记——haproxy

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠地一套解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...

  8. 烂泥:haproxy学习之手机规则匹配

    2019独角兽企业重金招聘Python工程师标准>>> 本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 今天我们来介 ...

  9. haproxy ssl_我们如何微调HAProxy以实现2,000,000个并发SSL连接

    haproxy ssl by Sachin Malhotra 由Sachin Malhotra 我们如何微调HAProxy以实现2,000,000个并发SSL连接 (How we fine-tuned ...

最新文章

  1. 你需要的大概不是 enumerated
  2. 并查集 poj1182
  3. 内连接查询的重点分析
  4. java bitmap jar_Java面试中常用的BitMap代码
  5. Go语言编程:Go语言实现快速排序算法
  6. 【Leetcode】打家劫舍 I and 打家劫舍 II(动态规划)PYTHON
  7. android布局配置
  8. win10的文件夹(文件资源管理器)卡住了
  9. 三阶魔方CFOP cross总结
  10. 录音文件怎么转换成文字呢?
  11. python判断素数程序_python判断素数程序_Python程序检查素数
  12. 反复横跳的瞄准线!从向量计算说起!基于射线检测的实现!Cocos Creator!
  13. 三角形面积计算器--C语言
  14. 设置标题栏背景色,背景色是自定义背景色
  15. SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
  16. java空指针异常是什么、怎么发生、如何处理
  17. 淘集集商家入驻?淘集集商家入驻的步骤?
  18. 海南三亚游记2022-2023跨年
  19. 天梭手表Tissot手表更换电池的方法
  20. 条件计数:COUNTIF、COUNTIFS函数

热门文章

  1. 仿百度网盘的一款轻量级微服务架构网盘系统
  2. APISpace 中文简繁转换API
  3. 愚人节看到的两则IT界的玩笑
  4. Servlet和JSP入门视频【高清】,32个视频
  5. 简单实现一个苹果菜单
  6. 最新Sublime Text3 注册码激活码,持续更新!
  7. Flink(八)Flink的Parallelism并行度
  8. Direct3D 10系统(二)
  9. 技术答疑 普通音效、技能音效与动画音效的区别
  10. java费诺编码_费诺编码的分析与实现.doc