HAProxy用法详解
haproxy if 用法
haproxy if 用法HAProxy是一个高性能、高可靠性的负载均衡器和反向代理服务器。
在使用HAProxy时,`if`语句用于条件判断,以实现对后端服务器的智能调度。
以下是HAProxy中`if`语句的基本用法:1. 语法:```if [条件表达式] [then] [else]```2. 条件表达式:条件表达式用于判断某个变量或表达式的值是否满足要求。
常见的条件表达式包括:- `var <值>`:判断变量`<变量名>`是否小于`<值>`。
- `var >值`:判断变量`<变量名>`是否大于`<值>`。
- `var ==值`:判断变量`<变量名>`是否等于`<值>`。
- `var !=值`:判断变量`<变量名>`是否不等于`<值>`。
3. 示例:以下是一个根据后端服务器的状态进行智能调度的示例:```backend backend1server server1 192.168.1.1:80 maxconn 10server server2 192.168.1.2:80 maxconn 10frontend frontend1bind 0.0.0.0:80default_backend backend1if var1 == 10then use backend2else use backend1```在这个示例中,当变量`var1`的值为10时,流量将转发到`backend2`,否则转发到`backend1`。
需要注意的是,HAProxy支持的条件表达式较为简单,可能无法满足复杂的需求。
在这种情况下,可以考虑使用其他负载均衡器或编写脚本来实现更丰富的逻辑。
haproxy参数
haproxy参数HAProxy是一款高性能、开源的负载均衡软件,支持TCP和HTTP 应用场景,它能够快速并且可靠地转发请求,将负载分散到多个服务器上,从而提高整体性能和可用性。
在使用HAProxy的过程中,不同的场景和需求需要使用不同的参数进行配置。
本文将从HAProxy的各个参数维度介绍相关的配置参数。
一、全局配置参数全局配置参数是一些全局的设置,包括进程数、用户账户、日志等级等,这些设置会影响整个HAProxy的行为。
具体的参数如下:1. daemon:设为1后HAProxy将在后台运行;2. nbproc:指定HAProxy使用的进程数;3. user/group:指定HAProxy运行的用户账号和组;4. chroot:指定HAProxy的chroot目录;5. log:指定运行HAProxy时的日志级别;6. maxconn:指定HAProxy对客户端的最大连接数;7. pidfile:指定HAProxy的pid文件;8. ulimit-n:指定HAProxy进程的最大打开文件数;9. stats socket:该参数允许您通过UNIX或TCP套接字控制HAProxy的运行。
二、默认配置参数所有frontend和backend的配置信息都可以包含在默认部分中。
这些信息在frontend或backend部分没有特别声明的情况下将应用于所有的部分。
默认配置参数还包括全局的一些设置(如timeout等)。
具体的参数如下:1. timeout connect:指定建立与后端服务器连接的超时时间;2. timeout client:指定客户端连接的超时时间;3. timeout server:指定从服务器接收数据的超时时间;4. timeout http-request:指定HTTP请求的超时时间;5. timeout http-keep-alive:指定HTTP keep-alive持续时间;6. timeout check:指定后端服务器健康检查的超时时间。
haproxy acl method post get put delete -回复
haproxy acl method post get put delete -回复请求头中的方法(HTTP Method)指定了客户端希望对服务器执行的操作。
在Web开发中,我们常常使用GET和POST方法来发送请求和接收响应。
然而,对于一些特定的操作,如更新或删除资源,我们需要使用其他方法。
其中,PUT用于更新资源,DELETE用于删除资源。
在这篇文章中,我们将讨论如何使用HAProxy的ACL(Access Control List)来根据请求头中的方法对请求进行分类和路由。
什么是HAProxyHAProxy是一款高性能的负载均衡器和反向代理服务器。
它具有高可用性、可复用性和可扩展性,可以帮助我们实现高并发和高可靠性的网络应用。
HAProxy的一个重要功能是基于不同条件对请求进行路由和转发。
什么是ACLACL是Access Control List(访问控制列表)的缩写,它是一种规则集,用于对请求进行分类和匹配。
使用ACL,我们可以根据请求的属性,如请求头、源IP地址、查询字符串等,对请求进行过滤和路由。
HAProxy中的ACL使用类似于正则表达式的语法,可以灵活地定义条件。
使用ACL根据HTTP方法路由请求为了理解如何使用ACL根据HTTP方法路由请求,我们首先需要了解HTTP方法的含义。
以下是常见的HTTP方法及其对应的操作:- GET: 用于从服务器获取资源。
这是最常见的HTTP方法,通常用于读取数据。
- POST: 用于向服务器提交数据,以创建新的资源。
POST方法可以将数据作为请求的正文发送给服务器。
通常用于创建新的对象或提交表单数据。
- PUT: 用于更新服务器上的资源。
PUT方法类似于POST方法,但是它用于覆盖或更新现有资源。
- DELETE: 用于删除服务器上的资源。
DELETE方法用于彻底删除资源。
现在,让我们看看如何使用ACL根据HTTP方法来路由请求。
假设我们有一个RESTful API服务器,其中不同的URL路径代表了不同的资源,并使用不同的HTTP方法进行操作。
HAProxy配置使用说明
#监听端口 bind 0.0.0.0:1080 #http的7层模式 mode http #日志设置 log 127.0.0.1 local0 err #[err warning info debug] #统计页面自动刷新时间 stats refresh 30s
HAProxy使用说明
Author : 董旗宇 Email: dqylyln@ Blog: /dqylyln Date: 2009-10-16
简介:
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第 三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就 是开源的并且基于第三应用实现的软负载。 HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主 要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等), 和7层(HTTP)。在4层模式下,HAproxy仅在客户端和服务器之间转发双向流 量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或 者删除请求(request)或者回应(response)里指定内容来控制协议,这种操作要基于特定 规则。 详情可以在HAProxy官方网站(http://haproxy.1wt.eu)可以下载配置说明文 档(configuration.txt)和架构文件(architecture.txt)作为参考。
HAProxy的配置
HAProxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择部分 作为配置。 global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次, 如果配置无误,就不需要再次配置进行修改 defaults:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件 frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端 的 backend(可动态选择)。 backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实 体服务器。 listen:Frontend和Backend的组合体。
haproxy透明代理配置
Haproxy使用tproxy实现透明代理实验环境Server1为代理服务器,有两个网卡eth0:192.168.1.55用于对外服务eth1:10.0.0.1gw10.0.0.254用于内网通讯Server2为应用服务器,一块网卡eth0:10.0.0.2gw10.0.0.1service的网关一定要配成service的内网IP准备工作1.检查系统内科是否已支持tproxy2.安装haproxy编译参数make TARGET=linux26USE_LINUX_TPROXY=1make install PREFIX=/usr/local/haproyx安装完成后,检查haproxy是否支持tproxyHaproxy.cfgglobaldaemonstats socket/var/run/haproxy.stat mode600log127.0.0.1local4maxconn40000ulimit-n80013pidfile/var/run/haproxy.piddefaultslog globalmode httpcontimeout4000clitimeout42000srvtimeout43000balance roundrobinlisten VIP-222bind192.168.1.222:80mode httpoption forwardforsource0.0.0.0usesrc clientipcookie SERVERID insert nocache indirectserver server110.0.0.2:80weight1cookie server1checkserver backup127.0.0.1:80backupoption redispatch在server1上配置网络、iptables及内核参数(可加入/etc/rc.local)net.ipv4.ip_forward=1net.ipv4.conf.all.send_redirects=1net.ipv4.conf.default.send_redirects=1net.ipv4.conf.all.forwarding=1iptables-t mangle-N DIVERT#在mangle中新建一条规则链DIVERTiptables-t mangle-A PREROUTING-p tcp-m socket-j DIVERT#凡进入PREROUTING链的报文都跳转去新定义的DIVERT链iptables-t mangle-A DIVERT-j MARK--set-mark1#凡进入DIVERT链的报文均使用mangle表的标记功能标记上1标记iptables-t mangle-A DIVERT-j ACCEPT#进入DIVERT链的报文均导入路由ip rule add fwmark1lookup100#添加100策略路由表,并将由iptables打了标记1的数据报文从100路由表规定路由流动可以在/etc/iproute2/rt_tables查看或者使用此命令查看ip rule sh本机的所有路由表ip route add local0.0.0.0/0dev lo table100#由于到达本地的数据包要想成功到达,必须要找到一条local路由(类型对即可,无需非要在local表),因此为路由表100确定默认路由,进入环流最后启动相关软件即可Linux路由查找流程在Linux中,内置了三张路由表:local,main,default,其中local路由表的优先级最高,并且不能被替换,在有数据包进来的时候,首先无条件的查找local路由表,如果找到了路由,则数据包就是发往本机的,如果找不到,则接着在其它的路由表中进行查找。
haproxy 变量
haproxy变量
在HAProxy中,变量允许您在配置文件中使用动态数据。
这些变量可以存储和处理诸如IP地址、端口号、HTTP头部等信息,并在配置中引用它们。
以下是HAProxy中常用的一些变量:
1.HTTP相关变量:
●hdr():获取请求或响应中的HTTP头部信息。
●path:获取HTTP请求的路径信息。
●url:获取请求的完整URL。
●query:获取请求中的查询字符串。
●req.fhdr()和res.fhdr():获取第一个请求或响应头的内容。
2.连接相关变量:
●src和dst:获取连接的源或目标IP地址。
●src_port和dst_port:获取连接的源或目标端口。
3.SSL相关变量(在处理SSL/TLS连接时):
●ssl_fc和ssl_fc_sni:获取SSL/TLS连接信息。
●ssl_c_*和ssl_s_*:获取SSL/TLS连接的客户端和服务器端信息。
4.运行时信息变量:
●pid:获取当前HAProxy进程的ID。
●process_num:获取当前进程的编号。
●time:获取当前时间戳。
这些变量可用于在HAProxy的配置文件中动态地操作数据。
可以将它们用于ACL(访问控制列表)、日志记录、路由、重定向等方面。
详细的变量列表和用法可以在HAProxy的官方文档中找到,这些变量可以根据HAProxy版本和配置情况而有所不同。
haproxy acl 用法
haproxy acl是haproxy负载均衡器中非常重要的一个功能模块。
acl 全称为Access Control List,中文意思是访问控制列表。
haproxy通过acl可以实现灵活的访问控制和请求转发策略,为系统管理员提供了强大的工具来管理和控制请求的流向。
在haproxy中,acl可以用来进行请求的路由、过滤和限制,可以根据请求的内容、来源、目的等多种条件进行灵活的控制,从而实现更加精细化的负载均衡和访问控制。
1. acl的基本语法在haproxy的配置文件中,acl的语法非常简单清晰,基本格式如下:acl <ACL名称> <条件> <值>其中,<ACL名称>是acl的名称,<条件>是acl的条件,<值>是条件需要匹配的值。
haproxy支持多种条件类型,如:- 按照请求的URL路径进行匹配:acl url_path_1 path_beg /path1acl url_path_2 path_end /path2- 按照请求的网络协议头进行匹配:acl header_1 hdr_sub(User-Agent) -i MSIEacl header_2 hdr_end(Host) -i .example- 按照IP位置区域进行匹配:acl ip_1 src 192.168.1.0/24acl ip_2 src 10.0.0.0/8acl ip_3 src 172.16.0.0/12- 按照请求的cookie进行匹配:acl cookie_1 hdr_sub(cookie) -i cookie_name=valueacl cookie_2 req.cook(cookie_name) -m str value- 按照请求方法进行匹配:acl method_1 method GETacl method_2 method POST- 按照请求的协议进行匹配:acl 网络协议_1 { ssl_fc, ssl_fc_sni } -i secure_domainacl 网络协议_2 { ssl_fc, ssl_fc_sni } -i secure.example2. acl的使用场景acl在haproxy中有着广泛的应用场景,可以用来实现很多功能,例如:- 根据请求的URL路径进行请求的转发acl url_path_1 path_beg /apiuse_backend backend_api if url_path_1- 根据用户的IP位置区域进行访问控制acl ip_1 src 192.168.1.0/24网络协议-request deny if !ip_1- 根据请求的头部信息进行访问控制acl header_1 hdr_sub(User-Agent) -i MSIE网络协议-request deny if header_1- 根据请求的cookie信息进行访问控制acl cookie_1 req.cook(cookie_name) -m str value网络协议-request deny if !cookie_1- 根据请求的方法进行访问控制acl method_1 method GET网络协议-request deny if !method_1- 根据请求的协议进行访问控制acl 网络协议_1 { ssl_fc, ssl_fc_sni } -i secure_domain网络协议-request deny if !网络协议_13. acl的高级用法在实际应用中,acl可以结合使用,实现更加复杂的访问控制和请求转发策略,如:- 多个acl结合使用acl url_path_1 path_beg /apiacl ip_1 src 192.168.1.0/24use_backend backend_api if url_path_1 ip_1- 使用acl进行动态的请求转发acl is_login hdr_sub(cookie) -i login=yesuse_backend backend_login if is_loginuse_backend backend_default if !is_login- 使用acl进行灰度发布acl is_new_version hdr_sub(User-Agent) -i version=2.0use_backend backend_v2 if is_new_versionuse_backend backend_v1 unless is_new_version4. 总结通过acl,haproxy可以实现灵活、精细的访问控制和请求转发策略,丰富的acl条件类型和简洁的acl语法使得系统管理员可以根据实际需求进行灵活的配置,帮助应用实现更高效、更安全的访问控制策略。
haproxy
haproxy1、HAProxy简介 HAProxy 是⼀款基于 TCP(第四层)和 HTTP(第七层)应⽤的代理软件,它也可作为负载均衡器,⽽且完全免费。
借助 HAProxy,可以快速并且可靠地提供基于 TCP 和 HTTP 应⽤的代理解决⽅案。
HAProxy 最主要的优点是性能突出,它特别适合那些负载特⼤的 Web 站点,这些站点通常需要具备会话保持或七层处理功能。
HAProxy 完全可以⽀持数以万计的并发连接,⽽且它的运⾏模式可以让你简单⽽安全地将它整合到当前的架构中,同时可以保护你的 Web 服务器不暴露到⽹络上(通过防⽕墙 80 端⼝映射的⽅法)。
作为⼀款优秀的负载均衡软件,HAProxy 优点如下所⽰: 1>免费且开源,稳定性也⾮常好,其稳定性可以与硬件级的 F5 Big-IP 相媲美。
2>根据官⽅⽂档可知,HAProxy 可以跑满 10Gbps,对于软件级负载均衡器⽽⾔,这个数字是相当惊⼈的。
3>⽀持连接拒绝,因为维护⼀个连接保持打开状态的开销是很低的,有时我们需要防⽌蠕⾍攻击,也就是通过限制它们的连接打开来防⽌它们的危害。
这个功能已经拯救了很多被 DDoS 攻击的⼩型站点,这也是其他负载均衡器所不具备的。
4>⽀持全透明代理(已具备硬件防⽕墙的典型特点),可以⽤客户端 IP 地址或任何其他地址来连接后端服务器,这个特性仅在 Linux 2.4/2.6 内核打了 cttproxy 补丁后才可以使⽤。
这个特性使得为某特殊服务器处理部分流量的同时⼜不修改服务器的地址成为可能。
5>HAProxy 现在多⽤于线上的 MySQL 集群环境,常⽤它作为 MySQL(读)负载均衡。
6>⾃带强⼤的监控服务器状态的页⾯,在实际环境中我们可以结合 Nagios 来实现邮件或短信报警,这也是很多⼈⾮常喜欢它的原因之⼀。
7>⽀持虚拟主机。
2、四种常⽤算法:1>roundrobin:轮询,轮流分配到后端服务器;2>static-rr:根据后端服务器性能分配;3>leastconn:最⼩连接者优先处理;4>source:根据请求源 IP,与 Nginx 的 IP_Hash 类似。
haproxy跨域resubmittoken-概述说明以及解释
haproxy跨域resubmittoken-概述说明以及解释1.引言1.1 概述在本文中,我们将探讨haproxy跨域resubmittoken的实现原理。
在了解实现原理之前,我们首先需要了解haproxy的基本概念和功能,以及跨域问题的产生和解决方法。
通过使用haproxy跨域resubmittoken,我们可以有效地解决跨域请求中可能出现的安全性问题。
haproxy是一种高性能的负载均衡器和反向代理服务器,它能够将客户端的请求分发到多个服务器上,实现请求的负载均衡。
同时,haproxy 还可以进行流量转发、会话保持、请求过滤等多种功能,使得服务器集群能够更加高效地处理客户端请求。
然而,在跨域请求中,由于浏览器的同源策略限制,跨域请求可能会被阻止或出现安全性问题。
为了解决这些问题,我们需要采取一些手段来绕过浏览器的同源策略。
常见的解决方法包括JSONP、CORS、代理服务器等。
其中,haproxy的跨域resubmittoken就是一种有效的解决方案。
haproxy跨域resubmittoken通过在请求中添加一个特殊的token,实现了对跨域请求的授权和安全性验证。
这个token将服务端与客户端进行了绑定,从而确保请求的有效性和安全性。
通过这种方式,我们可以在跨域请求中实现数据的传输和处理,而不必担心安全性问题。
综上所述,本文将详细介绍haproxy跨域resubmittoken的实现原理,并总结其优势和不足之处。
通过对该技术的深入理解,我们可以更好地应对跨域请求中的安全性问题,提高网站的性能和稳定性。
1.2文章结构文章结构部分的内容可以包括对整篇文章的分节和组织方式的描述,以及每个部分的主要内容和目的的简要介绍。
以下是一个可能的写作示例:在本文中,将介绍haproxy跨域resubmittoken的实现原理。
为了让读者更好地理解本文内容,本章节将整个文章划分为三个部分。
第一部分是引言部分,旨在为读者介绍haproxy跨域resubmittoken 的背景和重要性。
haproxy remote_addr 参数
haproxy remote_addr 参数全文共四篇示例,供读者参考第一篇示例:HAProxy是一个广泛使用的负载均衡器和反向代理服务器,它允许管理员在高负载环境下管理和分配网络流量。
在HAProxy的配置中,有一个非常重要的参数是remote_addr,该参数用于指定客户端的IP 地址。
remote_addr参数用于获取客户端的真实IP地址,这对于日志记录、安全验证和访问控制非常有用。
当HAProxy将请求代理到后端服务器时,它会将客户端的IP地址存储在remote_addr参数中,并传递给后端服务器。
这样后端服务器就能够获得客户端的真实IP地址,而不是HAProxy的IP地址。
在HAProxy的配置文件中,可以通过使用"source"关键字来指定remote_addr参数的值。
下面是一个简单的HAProxy配置文件片段:backend http_backmode httpbalance roundrobinserver server1 192.168.1.1:80 checkserver server2 192.168.1.2:80 checkoption forwardfor except 127.0.0.1```在上面的配置中,我们可以看到"option forwardfor except 127.0.0.1"这一行,它告诉HAProxy在转发请求时将客户端的真实IP 地址放在X-Forwarded-For头部中。
当HAProxy转发请求到后端服务器时,后端服务器可以通过读取X-Forwarded-For头部来获取客户端的真实IP地址。
在上面的日志格式中,"%[src]"占位符用于打印客户端的真实IP 地址。
这样,通过查看HAProxy的日志,管理员可以了解到客户端的IP地址以及所进行的操作。
第二篇示例:HAProxy是一个开源的负载均衡软件,通过对客户端请求进行调度,实现各个后端服务器的负载均衡。
HAproxy负载均衡配置教程
HAproxy负载均衡配置教程一、简介haproxy是一个开源的高性能负载均衡软件;支持双机热备、虚拟主机和图形化的管理界面,自带强大的对RS健康检查功能;支持TCP(四层)、HTTP(七层)应用代理功能;多用于PV很大,但是又需要七层应用代理的业务二、工作原理1、基于TCP负载均衡工作原理:使用NAT方式接收和返回请求报文,只单纯对请求流量和返回流量做转发;RS不用配置公网IP2、基于HTTP负载均衡工作原理:使用NAT方式接收和返回请求报文,在接收请求报文后会检查报文头信息,根据报文头信息匹配Frontend(ACL规则)再转发给Backend(server池);RS不用配置公网IP三、安装HAproxy1、下载haproxy源码包下载地址:/download.php?id=40475&ResourceID=125082、tar xf haproxy-1.4.22.tar.gz -C /home3、cd /home/haproxy-1.4.224、make TARGET=linux26 ARCH=x86_645、make install PREFIX=/usr/local/haproxy6、ln -s /usr/local/haproxy /usr/haproxy7、cd /usr/local/haproxy8、mkdir -p bin conf logs var/run var/chroot9、cd examples/10、cp haproxy.cfg /usr/local/haproxy/etc11、cp haproxy.init/etc/init.d/haproxy12、chmod 700 /etc/init.d/haproxy13、chkconfig --add haproxy14、chkconfig haproxy on四、配置基于四层负载均衡1、vim haproxy.cfg##全局配置信息###globalchroot /usr/local/haproxy/var/chroot #chroot运行路径daemon #以后台形式运行harpoxygroup haproxy #启动程序所用组,随便写,只要下面我们创建这个组即可user haproxy #启动程序所用用户,随便写,只要下面我们创建这个用户即可log 127.0.0.1:514 local0 warring #定义haproxy 日志存放设备及级别pidfile /usr/local/haproxy/var/run/haproxy.pid #haproxy 进程PID文件,用于存放pidmaxconn 20480 #默认最大连接数spread-checks 3nbproc 8 #进程数量,一般为CPU核数2倍####默认配置选项#######defaultslog globalmode tcp #所处理的类别(7层代理http,4层代理tcp)retries 3 #3次连接失败就认为服务器不可用,也可以通过后面设置option redispatch #serverID 对应的服务器挂掉后,强制定向到其他健康的服务器contimeout 5000 #设置默认连接超时时间clitimeout 50000 #设置客户端连接超时时间srvtimeout 50000 #设置服务器连接超时时间#########设置图形化监控页面######listen admin_status #定义实例名为admin_status,实例名可以随意起bind 0.0.0.0:81 #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称mode tcp #设置模式;tcp为四层http为7 层stats enable #激活图形化管理界面stats uri /admin?stats #设置图形管理界面url打开路径stats auth admin:admin #设置监控页面的用户和密码:adminbalance roundrobin #设置对RS的调度算法,这里设置的是轮询方式option httpcloseoption forwardfor #让RS节点记录客户端的真实IP,如果不加这条,RS节点只记录负载均衡服务器的IPoption httpchk HEAD /test.html HTTP /1.0 #定义通过URL方式进行对RS的健康检查,不加这条,默认是通过IP+端口的方式进行健康检查;如果想通过URL进行健康检查,后端RS节点上的web定义存放网页的目录下必须有test.html这个页面,否则健康检查会失败server www01 10.0.0.8:8080 check inter 1500 fall 3 rise 3 check port 8080 maxconn3000 weight 1server www02 10.0.0.9:8080 check inter 1500 fall 3 rise 3 check port 8080 maxconn3000 weight 1#定义server地址池,server是规定的server地址池字段,不能变;后面www01是名字,随便写;10.0.0.X:8080是定义的RS的IP和端口,端口最好不要用80;checkinter 1500是定义健康检查间隔为1.5秒,不定义默认为2秒检查一次;fall 3是定义检查三次后端RS都失败就把该节点踢掉,不定义默认也是检查三次;rise 3是定义当RS节点从故障到恢复,健康检查三次才会认为该节点真正正常;check port8080是指定健康检查的端口号为8080;maxconn 3000是定义单个节点最大连接数为3000pv;具体要安装服务器硬件状况配置,否则很可能会因为pv过大把服务器压垮;weight 1是定义权重,权重值越大,承载的任务越多2、useradd haproxy -s /sbin/nologin -M五、配置基于七层负载均衡1、vim haproxy.cfg##全局配置信息###globalchroot /usr/local/haproxy/var/chroot #chroot运行路径daemon #以后台形式运行harpoxygroup haproxy #启动程序所用组,随便写,只要下面我们创建这个组即可user haproxy #启动程序所用用户,随便写,只要下面我们创建这个用户即可log 127.0.0.1:514 local0 warring #定义haproxy 日志存放设备及级别pidfile /usr/local/haproxy/var/run/haproxy.pid #haproxy 进程PID文件,用于存放pidmaxconn 20480 #默认最大连接数spread-checks 3nbproc 8 #进程数量,一般为CPU核数2倍####默认配置选项#######defaultslog globalmode tcp #所处理的类别(7层代理http,4层代理tcp)retries 3 #3次连接失败就认为服务器不可用,也可以通过后面设置option redispatch #serverID 对应的服务器挂掉后,强制定向到其他健康的服务器contimeout 5000 #设置默认连接超时时间clitimeout 50000 #设置客户端连接超时时间srvtimeout 50000 #设置服务器连接超时时间##### 设置frontend#########frontend http_80_inbind 10.0.0.7:80 #设置监听端口,即haproxy提供的web服务端口和VIP,和lvs的vip 类似####acl 策略配置######acl frank_web hdr_reg(host) -i ^(.sh|.sh)$mane 如果请求的域名不区分大小写为这两个域名#如果请求的域名满足正则表达式中的2个域名则把该条请求匹配给frank_web这条acl ;-i 是忽略大小写redirect prefix http://192.168.151.249 code 301 if fran_web#如果请求的域名满足正则表达式中的2个域名则把该条请求匹配给frank_web这条acl 并用301跳转给http://192.168.151.249这台服务器处理;最后的fran_web一定要和acl上的frank_web一样,也就是name处是什么,这里就写什么default_backend wwwpools #定义了默认的请求交由wwwpools这个地址组处理backend wwwpools #定义地址组,取名为wwwpoolsbalance roundrobin #定义调度算法为轮询模式server www 10.0.0.8:8080 check inter 1500 rise 3 fall 3 weight 1#定义一个地址RS节点,取名为www,健康检查间隔为1.5秒,检查三次则把RS节点剔除;故障恢复后健康检查3次则认为真正正常六、在301跳转的基础上做ACL分流1、acl web_www path_beg /www/ #把后缀带/www/的请求定义为名字为web_www的acl列表2、acl web_bbs path_beg /bbs/ # #把后缀带/bbs/的请求定义为名字为web_bbs的acl列表3、use_backend wwwpools if web_www #调用web_www acl,只要请求后缀有/www/字符就交由wwwpools这个地址组处理4、usr_backend wwwbbs if web_bbs #调用web_bbs acl,只要请求后缀有/bbs/字符就交由wwwbbs这个地址组处理注意:操作之前先要配置wwwpools和wwwbbs这两个地址组。
haproxy反向代理环境部署(http和https代理)
haproxy反向代理环境部署(http和https代理)操作背景:前⽅有⼀台haproxy代理机器(115.100.120.57/192.168.1.7),后⽅两台realserver机器(192.168.1.150、192.168.1.151,没有公⽹ip,部署了很多站点)将域名解析到haproxy机器的公⽹ip,在haproxy配置⽂件⾥,根据域名转发⾄后端realserver上。
haproxy代理配置:根据域名进⾏转发(即后端机器不管部署多少个域名,都可以直接在haproxy配置⽂件⾥通过域名对域名⽅式直接指定)nginx代理配置:根据端⼝进⾏转发(即后端机器部署多个域名时,在前⾯nginx配置⾥通过upstream负载到不同的端⼝上)----------------------------------------------------------------------------------------------------------下⾯是haproxy代理服务器上的操作(1)关闭SElinux、配置防⽕墙(后端realserver机器的iptables防⽕墙可以限制只允许代理服务器访问)[root@localhost ~]# vim /etc/config/selinuxSELINUX=disabled[root@localhost ~]# setenforce 0[root@localhost ~]# getenforce[root@localhost ~]# vim /etc/sysconfig/iptables.......-A INPUT -s 115.100.120.0/24 -d 224.0.0.18 -j ACCEPT #允许组播地址通信(这⾥,我将机器的公⽹和私⽹地址都放了)-A INPUT -s 192.168.1.0/24 -d 224.0.0.18 -j ACCEPT-A INPUT -s 115.100.120.0/24 -p vrrp -j ACCEPT #允许 VRRP(虚拟路由器冗余协)通信-A INPUT -s 192.168.1.0/24 -p vrrp -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT[root@localhost ~]# /etc/init.d/iptables restart(2)安装haproxy1)安装编译⼯具[root@localhost ~]# yum install gcc gcc-c++ make openssl-devel kernel-devel2)安装 haproxy下载 haproxy,放到/usr/local/src⽬录下haproxy-1.5.14.tar.gz下载:提取密码:u77d[root@localhost ~]# cd /usr/local/src[root@localhost src]# ls haproxy-1.5.14.tar.gz[root@localhost ~]# tar zxvf haproxy-1.5.14.tar.gz[root@localhost ~]# cd haproxy-1.5.14接着进⾏haproxy的编译安装,haproxy编译没有configure,直接make->make install[root@localhost haproxy-1.5.14]# make TARGET=linux26 CPU=x86_64 PREFIX=/usr/local/haprpxy USE_OPENSSL=1 ADDLIB=-lz [root@localhost haproxy-1.5.14]# ldd haproxy | grep ssllibssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f06ae977000)[root@localhost haproxy-1.5.14]# make install PREFIX=/usr/local/haproxy编译参数说明:TARGET=linux26 :使⽤ uname -r 查看内核,如:2.6.18-371.el5,此时该参数就为linux26CPU=x86_64 :使⽤ uname -r 查看系统信息,如 x86_64 x86_64 x86_64 GNU/Linux,此时该参数就为 x86_64PREFIX :后⾯跟的是haprpxy的安装路径USE_OPENSSL=1 ADDLIB=-lz :⽀持ssl3)设置 haproxy[root@localhost src]# mkdir -p /usr/local/haproxy/conf[root@localhost src]# mkdir -p /etc/haproxy[root@localhost src]# cp /usr/local/src/haproxy-1.5.14/examples/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg[root@localhost src]# ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg[root@localhost src]# cp -r /usr/local/src/haproxy-1.5.14/examples/errorfiles /usr/local/haproxy/errorfiles[root@localhost src]# ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles[root@localhost src]# mkdir -p /usr/local/haproxy/log[root@localhost src]# touch /usr/local/haproxy/log/haproxy.log[root@localhost src]# ln -s /usr/local/haproxy/log/haproxy.log /var/log/haproxy.log[root@localhost src]# cp /usr/local/src/haproxy-1.5.14/examples/haproxy.init /etc/rc.d/init.d/haproxy[root@localhost src]# chmod +x /etc/rc.d/init.d/haproxy[root@localhost src]# chkconfig haproxy on[root@localhost src]# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin4)配置 haproxy.cfg 参数[root@localhost src]# cp /usr/local/haproxy/conf/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg-bak[root@localhost src]# vim /usr/local/haproxy/conf/haproxy.cfg #可以直接粘贴进去使⽤# this config needs haproxy-1.1.28 or haproxy-1.2.1globallog 127.0.0.1 local0 info #在本机记录⽇志maxconn 65535 #每个进程可⽤的最⼤连接数chroot /usr/local/haproxy #haproxy 安装⽬录uid nobody #运⾏haproxy的⽤户uid(使⽤id号也⾏)gid nobody #运⾏haproxy的组uid(使⽤id号也⾏)daemon #以后台守护进程运⾏defaultslog globalmode http #运⾏模式tcp、http、healthretries 3 #三次连接失败,则判断服务不可⽤option redispatch #如果后端有服务器宕机,强制切换到正常服务器stats uri /haproxy #统计页⾯ URL 路径stats refresh 30s #统计页⾯⾃动刷新时间stats realm haproxy-status #统计页⾯输⼊密码框提⽰信息stats auth admin:dxInCtFianKtL]36#统计页⾯⽤户名和密码stats hide-version #隐藏统计页⾯上 HAProxy 版本信息maxconn 65535 #每个进程可⽤的最⼤连接数timeout connect 5000 #连接超时timeout client 50000 #客户端超时timeout server 50000 #服务端超时frontend http-in #⾃定义描述信息mode http #运⾏模式tcp、http、healthmaxconn 65535 #每个进程可⽤的最⼤连接数bind :80 #监听80端⼝log globaloption httplogoption httpclose #每次请求完毕后主动关闭 http 通道acl is_1 hdr_beg(host) -i #规则设置,-i后⾯是要访问的域名;多个域名,就写多个规则,但is_1/2/...要与后⾯的use_backend 对应acl is_2 hdr_beg(host) -i acl is_3 hdr_beg(host) -i acl is_4 hdr_beg(host) -i acl is_5 hdr_beg(host) -i acl is_6 hdr_beg(host) -i acl is_7 hdr_beg(host) -i acl is_8 hdr_beg(host) -i acl is_9 hdr_beg(host) -i acl is_10 hdr_beg(host) -i use_backend test-server if is_1#如果访问is_1设置的域名,就负载均衡到下⾯backend设置的对应test-server上,其他的域名同理use_backend test-server if is_2use_backend test-server if is_3use_backend test-server if is_4use_backend test-server if is_5use_backend beta-server if is_6#如果访问is_6设置的域名,就负载均衡到下⾯backend设置的对应beta-server上,其他的域名同理use_backend beta-server if is_7use_backend beta-server if is_8use_backend beta-server if is_9use_backend beta-server if is_10backend test-servermode httpbalance roundrobin #设置负载均衡模式,source 保存 session 值,roundrobin 轮询模式cookie SERVERID insert indirect nocacheoption httpcloseoption forwardforserver web01 192.168.1.150:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5 #由于后端同组的机器只有⼀台,这⾥就设置⼀台;如果后端是多台的话,就都加上,进⾏负载。
haproxy的acl规则
haproxy的acl规则haproxy的acl规则是一种用于配置haproxy负载均衡器的访问控制规则,它可以根据请求的源IP、目标IP、请求头和其他条件进行匹配和过滤,从而实现更加灵活的流量控制和请求处理。
在本文中,我们将详细介绍haproxy的acl规则及其使用方法。
一、什么是acl规则acl全称为Access Control List,即访问控制列表。
在haproxy中,acl规则用于定义一系列条件,用于匹配和过滤请求。
每条acl规则由一个条件和一个动作组成。
当请求满足条件时,将执行相应的动作。
通过使用acl规则,我们可以实现诸如IP黑白名单、URL过滤、请求头处理等功能。
二、acl规则的语法haproxy的acl规则具有如下的语法格式:acl <acl_name> <condition> [flags]其中,<acl_name>是acl规则的名称,<condition>是条件表达式,用于指定匹配条件,[flags]是可选的标志,用于指定匹配方式。
三、acl规则的条件表达式haproxy的acl规则支持多种条件表达式,常见的条件表达式包括:- src <ip_addr>:匹配请求的源IP地址;- dst <ip_addr>:匹配请求的目标IP地址;- hdr(<header_name>) <value>:匹配请求头中指定名称的字段;- url <pattern>:匹配请求的URL;- path <pattern>:匹配请求的路径;- method <http_method>:匹配请求的HTTP方法;- acl(<acl_name>):引用已定义的其他acl规则。
四、acl规则的动作haproxy的acl规则支持多种动作,常见的动作包括:- allow:允许请求通过;- deny:拒绝请求;- redirect <location>:重定向请求到指定的URL;- use_backend <backend_name>:将请求转发到指定的后端服务器组。
haproxy常用语法
haproxy常用语法haproxy是一款高性能的负载均衡软件,常用于分发网络流量,提高系统的可用性和性能。
本文将介绍haproxy常用的语法和配置选项,帮助读者了解和使用haproxy。
一、全局配置haproxy的全局配置位于配置文件的开头部分,用于定义全局参数和默认设置。
常用的全局配置选项有:1. daemon:指定是否以守护进程方式运行,默认为off。
2. maxconn:设置最大连接数限制。
3. log:指定日志文件路径和日志级别。
4. stats socket:配置统计信息的Unix套接字文件路径。
5. user:指定haproxy进程的运行用户。
6. group:指定haproxy进程的运行用户组。
二、前端配置前端配置用于接收客户端的请求,并将请求转发给后端服务器。
常用的前端配置选项有:1. bind:指定前端监听的IP地址和端口。
2. mode:指定转发模式,常用的模式有http、tcp和ssl。
3. default_backend:指定默认的后端服务器组。
4. option:配置一些特定的选项,如httpclose、httplog等。
5. acl:定义访问控制列表,用于根据条件匹配请求。
三、后端配置后端配置用于定义后端服务器组,并指定服务器组中的服务器。
常用的后端配置选项有:1. server:定义服务器组中的服务器,包括服务器的IP地址、端口和权重。
2. balance:指定负载均衡算法,常用的算法有roundrobin、leastconn等。
3. option:配置一些特定的选项,如check、backup等。
4. timeout:设置与后端服务器的连接超时时间。
四、其他配置选项除了以上常用的配置选项,haproxy还提供了一些其他的配置选项,如:1. frontend:用于定义前端配置。
2. backend:用于定义后端配置。
3. listen:用于定义同时定义前端和后端配置。
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# tar xzvf haproxy-1.4.24.tar.gz# cd haproxy-1.4.24# make TARGET=linux26 PREFIX=/usr/local/haproxy# make install PREFIX=/usr/local/haproxyb2.配置安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。
2、haproxy配置参数详解
2、haproxy配置参数详解代理相关配置参数内容参考⾃马哥教育HAProxy官⽅⽂档URI Syntax:<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag> //<scheme>表⽰协议;<user>:<password>可以省略;<params>表⽰参数;?<query>表⽰查询字符串;URI的左半部分是:<scheme>://<user>:<password>@<host>:<port>/<path>;<params>;<params>ftp:///pub/gnu;type=d //type=d就是指明了类型,是⼀个params/hammers;sale=false/index.html;graphics=true //红⾊部分为params<query>/inventory-check.cgi?item=12741 //?item=12741表⽰要把item=12741当作查询条件,通过URL(红⾊部分)把条件发送给服务器端,然后服务器端会把查询条件嵌⼊到php或jsp的页⾯程序当中,由这个页⾯程序基于mysql或者其他存储协议发往服务器端,并由服务器端执⾏并取回结果,所以?item=12741是查询字符串。
什么情况下可以⽤到URI算法?(调度⽅式:对URL做hash计算,将计算结果除以总权重数)当后端服务器是缓存服务器时特别有⽤,即⽆论哪个客户端发出请求,只要资源链接是同⼀个,haproxy主机都可以始终把请求发送⾄同⼀个backend server(缓存服务器)。
haproxy redirect 参数
一、Haproxy redirect 参数介绍haproxy是一款开源的负载均衡软件,具有强大的重定向功能,可以通过配置redirect参数来实现全球信息站的URL重定向。
haproxy redirect参数可以用于将请求重定向到指定的URL,实现全球信息站流量的控制和管理。
在实际应用中,haproxy redirect参数被广泛用于实现全球信息站的跳转、URL的重定向以及全球信息站升级和维护时的流量控制。
下文将介绍haproxy redirect参数的用法和配置方法。
二、haproxy redirect参数的配置方法1. 在haproxy的配置文件中,可以通过使用redirect关键字来配置重定向规则。
2. redirect参数的语法格式如下:redirect [code <code>] [prefix <prefix>] [if <condition>] [unless <condition>]其中,code用于指定HTTP响应码,prefix用于指定重定向的目标URL前缀,if和unless用于指定条件。
三、haproxy redirect参数的常见应用场景1. 全球信息站升级和维护在全球信息站进行升级和维护时,可以使用haproxy redirect参数将访问全球信息站的流量重定向到升级页面或者维护公告页面,避免用户访问到正在维护的全球信息站内容。
2. URL重定向haproxy redirect参数可以用于实现全球信息站的URL重定向,将访问一个URL的请求重定向到另一个URL,实现全球信息站流量的控制和管理。
3. 全球信息站跳转haproxy redirect参数还可以用于实现全球信息站的跳转功能,将请求重定向到指定的目标URL,实现全球信息站流量的灵活管理和导流。
四、haproxy redirect参数的实际配置案例下面是一个haproxy redirect参数的实际配置案例:```frontend 网络协议-inbind *:80acl is_old_url path_beg /old_urluse_backend old_url_server if is_old_urldefault_backend new_url_serverbackend old_url_serverserver old_url_server 192.168.1.10:80redirect prefix /new_url if !{ ssl_fc }backend new_url_serverserver new_url_server 192.168.1.11:80```在上面的配置案例中,当用户访问旧的URL时,haproxy会将请求重定向到新的URL,实现了全球信息站的URL重定向功能。
Haproxy使用说明
case $ARGV in start) start ERROR=$? ;; stop) stop ERROR=$? ;; restart) stop start ERROR=$?
;; *) echo "hactl.sh [start|restart|stop]" esac exit $ERROR 保存后,给hactl.sh增加可执行权限
./haproxy -f ../conf/haproxy.cfg 通过浏览器访问“http://xxx.xxx.xxx.xxx:1080/admin?stats“(xxx为IP),看到管理页面
5.修改haproxy启动文件权限 (如果你是用ROOT用户启动HAProxy,这步可以省略,这个步骤是为了能让 非ROOT用户也能通过HAProxy监听80端口,因为LIUNX的80端口一定要使 用ROOT账户启动) 使用root账户进入sbin目录 更改haproxy的所有者为root chown root:root haproxy 给haproxy增加S权限 chmod u+s haproxy 6.配置日志 创建日志目录 使用非root账户这里是admin账户创建日志文件 mkdir /home/admin/haproxy/logs
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HAProxy用法详解一,HAProxy简介(1)HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP (第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。
并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
(2)HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。
多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。
此模型的弊端是,在多核系统上,这些程序通常扩展性较差。
这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。
(3)HAProxy 支持连接拒绝: 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。
这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
性能:HAProxy借助于OS上几种常见的技术来实现性能的最大化。
1,单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。
2,O(1)事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测。
3,在任何可用的情况下,单缓冲(single buffering)机制能以不复制任何数据的方式完成读写操作,这会节约大量的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首部分析:优化的首部分析功能避免了在HTTP首部分析过程中重读任何内存区域;8,精心地降低了昂贵的系统调用,大部分工作都在用户空间完成,如时间读取、缓冲聚合及文件描述符的启用和禁用等;所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载,甚至于在非常高的负载场景中,5%的用户空间占用率和95%的系统空间占用率也是非常普遍的现象,这意味着HAProxy进程消耗比系统空间消耗低20倍以上。
因此,对OS进行性能调优是非常重要的。
即使用户空间的占用率提高一倍,其CPU占用率也仅为10%,这也解释了为何7层处理对性能影响有限这一现象。
由此,在高端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备。
在生产环境中,在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,安装haproxy2.[root@LB ~]# yum install -y haproxy #直接使用RPM来安装3.4.[root@LB ~]# rpm -qi haproxy #版本为1.5.4 : haproxy Relocations: (not relocatable)6.Version : 1.5.4 Vendor: CentOS7.Release : 2.el6 Build Date: Thu 23 Jul 2015 04:26:35PM PDT8.Install Date: Sat 29 Aug 2015 06:49:30 PM PDT Build Host:9.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 : /14.Summary : HAProxy is a TCP/HTTP reverse proxy for high availability environments15.16.[root@LB ~]# rpm -ql haproxy17./etc/haproxy18./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.[root@LB ~]# cd /etc/haproxy/2,详解配置文件haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。
2.1 配置文件格式HAProxy的配置处理3类来主要参数来源:——最优先处理的命令行参数;——“global”配置段,用于设定全局配置参数;——proxy相关配置段,如“defaults”、“listen”、“frontend”和“backend”;2.2 时间格式一些包含了值的参数表示时间,如超时时长。
这些值一般以毫秒为单位,但也可以使用其它的时间单位后缀。
: 微秒(microseconds),即1/1000000秒;2.ms: 毫秒(milliseconds),即1/1000秒;3.s: 秒(seconds);4.m: 分钟(minutes);5.h:小时(hours);6.d: 天(days);2.3 全局配置*进程管理及安全相关的参数:– chroot <jail dir>:修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot()操作,可以提升haproxy的安全级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限;– daemon:让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能,当然,也可以在命令行中以“-db”选项将其禁用;– gid <number>:以指定的GID运行haproxy,建议使用专用于运行haproxy的GID,以免因权限问题带来风险;– group <group name>:同gid,不过指定的组名;– log <address> <facility> [max level [min level]]:定义全局的syslog服务器,最多可以定义两个;– log-send-hostname [<string>]:在syslog信息的首部添加当前主机名,可以为“string”指定的名称,也可以缺省使用当前主机名;– nbproc <number>:指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy;默认只启动一个进程,鉴于调试困难等多方面的原因,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式;– pidfile:– uid:以指定的UID身份运行haproxy进程;– ulimit-n:设定每进程所能够打开的最大文件描述符数目,默认情况下其会自动进行计算,因此不推荐修改此选项;Linux默认单进程打开文件数为1024个– user:同uid,但使用的是用户名;– stats:用户访问统计数据的接口– node:定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时;– description:当前实例的描述信息;* 性能调整相关的参数– maxconn <number>:设定每个haproxy进程所接受的最大并发连接数,其等同于命令行选项“-n”;“ulimit -n”自动计算的结果正是参照此参数设定的;– 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存在;– spread-checks <0..50, in percent>:在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统一对众服务器进行健康状况检查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长;– tune.bufsize <number>:设定buffer的大小,同样的内存条件小,较小的值可以让haproxy有能力接受更多的并发连接,较大的值可以让某些应用程序使用较大的cookie信息;默认为16384,其可以在编译时修改,不过强烈建议使用默认值;– tune.chksize <number>:设定检查缓冲区的大小,单位为字节;更大的值有助于在较大的页面中完成基于字符串或模式的文本查找,但也会占用更多的系统资源;不建议修改;– tune.maxaccept <number>:设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐率,默认在单进程模式下为100,多进程模式下为8,设定为-1可以禁止此限制;一般不建议修改;– tune.maxpollevents <number>:设定一次系统调用可以处理的事件最大数,默认值取决于OS;其值小于200时可节约带宽,但会略微增大网络延迟,而大于200时会降低延迟,但会稍稍增加网络带宽的占用量;– tune.maxrewrite <number>:设定为首部重写或追加而预留的缓冲空间,建议使用1024左右的大小;在需要使用更大的空间时,haproxy会自动增加其值;– tune.rcvbuf.client <number>:– tune.rcvbuf.server <number>:设定内核套接字中服务端或客户端接收缓冲的大小,单位为字节;强烈推荐使用默认值;– tune.sndbuf.client:– tune.sndbuf.server:* Debug相关的参数1.- debug2.- quiet* 超时时长1.timeout http-request :在客户端建立连接但不请求数据时,关闭客户端连接2.timeout queue :等待最大时长3.timeout connect:定义haproxy将客户端请求转发至后端服务器所等待的超时时长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宕机时,会将会话重新定向至某一上游服务器,必须使用的选项* 实现访问控制:1.http-request: 7层过滤2.tcp-request content: tcp层过滤,四层过滤2.4 代理代理相关的配置可以如下配置段中。