haproxy高级配置

合集下载

2,haproxy的配置文件说明

2,haproxy的配置文件说明

2,haproxy的配置⽂件说明实验环境也很简单:HAProxy IP:192.168.4.192 Centos5.5-64bitWeb1 IP:192.168.4.45 Centos5.4-64bitWeb2 IP:192.168.21.45 FreeBSD8.0-64bithaproxy 的⽇志需要⾃⼰去rsyslog.conf 配置1 haproxy.cfg配置⽂件下⾯只是写了部分需要记住的配置:global log 127.0.0.1:514 local0 info # local3是指接收设备,指定使⽤127.0.0.1:514的syslog服务中的local0⽇志设备,514是指syslog chroot /application/haproxy-1.8.4/var/chroot #出现漏洞,这个会起到安全防护作⽤ pidfile /var/run/haproxy.pid #存放启动进程的进程号 user haproxy #设置服务运⾏的⽤户和组 group haproxy daemon #守护进程运⾏ maxconn 20480 #定义每个进程的最⼤连接数listen www 10.0.0.7:80 #www监听的名字,第⼆个为监听的ip和端⼝ mode http #模式 stats enable #激活webjiemian stats uri /admin?stats #web界⾯的uri stats auth proxy:oldboy #⽤户和密码 server www01 10.0.0.9:80 check server www02 10.0.0.80:80 check# ⼀个listen 就把他看做是⼀个虚拟主机。

Haproxy配置项及配置实例-Haproxy入门教程

Haproxy配置项及配置实例-Haproxy入门教程

Haproxy配置项及配置实例-Haproxy⼊门教程常⽤配置选项:OPTION 选项:option httpclose :HAProxy会针对客户端的第⼀条请求的返回添加cookie并返回给客户端,客户端发送后续请求时会发送此cookie到HAProxy,HAProxy会针对此cookie分发到上次处理此请求的服务器上,如果服务器不能忽略此cookie值会影响处理结果。

如果避免这种情况配置此选项,防⽌产⽣多余的cookie信息。

option forwardfor :如果服务器上的应⽤程序想记录发起请求的客户端的IP地址,需要在HAProxy上配置此选项,这样HAProxy会把客户端的IP信息发送给服务器,在HTTP请求中添加"X-Forwarded-For"字段。

option originalto :如果服务器上的应⽤程序想记录发起请求的原⽬的IP地址,需要在HAProxy上配置此选项,这样HAProxy 会添加"X-Original-To"字段。

option dontlognull :保证HAProxy不记录上级负载均衡发送过来的⽤于检测状态没有数据的⼼跳包。

BALANCE 选项:balance source :如果想让HAProxy按照客户端的IP地址进⾏负载均衡策略,即同⼀IP地址的所有请求都发送到同⼀服务器时,需要配置此选项。

balance roundrobin :HAProxy把请求轮流的转发到每⼀个服务器上,依据每台服务器的权重,此权重会动态调整。

最常见的默认配置。

COOKIE 选项:cookie JSESSIONID prefix :如果客户端只⽀持⼀个cookie,并且服务器上的应⽤程序已经对返回设置了cookie,HAProxy设置此选项可以改写应⽤程序设置的cookie信息,把服务器的信息添加到原cookie中去。

cookie SERVERID indirect :HAProxy会删除添加的cookie信息,避免此cookie信息发送到服务器。

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配置文件详解

HAProxy配置文件详解

HAProxy配置⽂件详解⼀、HAProxy简介1.HAProxy 是⼀款提供⾼可⽤性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应⽤的代理软件,⽀持虚拟主机,它是免费、快速并且可靠的⼀种解决⽅案。

2.HAProxy 实现了⼀种事件驱动、单⼀进程模型,此模型⽀持⾮常⼤的并发连接数。

3.HAProxy ⽀持全透明代理(已具备硬件防⽕墙的典型特点): 可以⽤客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使⽤. 这个特性也使得为某特殊服务器处理部分流量同时⼜不修改服务⼆、HAProxy⼯作原理HAProxy由前端(frontend)和后端(backend),前端和后端都可以有多个。

也可以只有⼀个listen块来同时实现前端和后端。

这⾥主要讲⼀下frontend和backend⼯作模式。

前端(frontend)区域可以根据HTTP请求的header信息来定义⼀些规则,然后将符合某规则的请求转发到相应后端(backend)进⾏处理。

三、HAProxy性能HAProxy借助于OS上⼏种常见的技术来实现性能的最⼤化,所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载,甚⾄于在⾮常⾼的负载场景中,5%的⽤户空间占⽤率和95%的系统空间占⽤率也是⾮常普遍的现象,这意味着HAProxy进程消耗⽐系统空间消耗低20倍以上。

因此,对OS进⾏性能调优是⾮常重要的。

即使⽤户空间的占⽤率提⾼⼀倍,其CPU占⽤率也仅为10%,这也解释了为何7层处理对性能影响有限这⼀现象。

由此,在⾼端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备。

在⽣产环境中,在7层处理上使⽤HAProxy作为昂贵的⾼端硬件负载均衡设备故障故障时的紧急解决⽅案也时长可见。

硬件负载均衡设备在“报⽂”级别处理请求,这在⽀持跨报⽂请求(request across multiple packets)有着较⾼的难度,并且它们不缓冲任何数据,因此有着较长的响应时间。

HAProxy详解

HAProxy详解

HAProxy详解1. HAProxy概述1.1 HAProxy简介HAProxy提供负载均衡以及基于TCP和HTTP应⽤的代理HAProxy只是http协议的反向代理,不提供缓存功能,但额外⽀持对tcp层对基于tcp通信的应⽤做LBhttp协议的反向代理tcp层的LBHAProxy的特性:HAProxy实现了⼀种事件驱动、单⼀进程模型,此模型⽀持⾮常⼤的并发连接数HAProxy中保存了数据的数据结构为弹性⼆叉树结构代理服务器的调度算法:取模法⼀致性哈希算法LB负载均衡器:TCP:lvs,haproxy,nginxapplication layer:http:haproxy,nginx,ats,apachemysql:mysql-proxy1.2 HAProxy性能上的优势单进程、事件驱动模型显著降低了上下⽂切换的开销及内存占⽤O(1)事件检查器(event check)允许其在⾼并发连接中对任何连接的任何时间实现即时探测在任何可⽤的情况下,单缓冲(single buffering)机制能以不复制任何数据的⽅式完成读写操作,这会节约⼤量的CPU时钟周期及内存带宽借助于Linux 2.6 (>= 2.6.27.19)上的splice()系统调⽤,HAProxy可以实现零复制转发(Zero-copy forwarding)在Linux 3.5及以上的OS中还可以实现零复制启动(zero-starting)内存分配器在固定⼤⼩的内存池中可以实现即时内存分配,这能够显著减少创建⼀个会话的时长树型存储:侧重于使⽤弹性⼆叉树,实现了以O(log(N))的低开销来保持计数器命令、保持运⾏队列命令及管理轮询及最少连接队列优化的HTTP⾸部分析:优化的⾸部分析功能避免了在HTTP⾸部分析过程中重读任何内存区域精⼼地降低了昂贵的系统调⽤,⼤部分⼯作都在⽤户空间完成,如时间读取、缓冲聚合及⽂件描述符的启⽤和禁⽤等1.3 负载均衡器的性能评估1. 会话率:会话建⽴的速率2. 会话并发能⼒:整体服务器的会话并发能⼒3. 数据率:在所有会话上数据传输速率1.4 正向代理与反向代理正向代理中,proxy和client同属⼀个LAN,对server透明反向代理中,proxy和server同属⼀个LAN,对client透明1.5 代理和缓存的作⽤代理的作⽤:web缓存(加速)、反向代理、内存路由(根据流量及内容类型等将请求转发⾄特定服务器)、转码器有些CDN会在代理服务器上添加Via⾸部缓存的作⽤:减少冗余内容传输节省带宽、缓解⽹络瓶颈降低了对原始服务器的请求压⼒降低了传输延迟2. HAProxy配置⽂件详解2.1 配置⽂件格式2.1.1 配置⽂件配置⽂件:/etc/haproxy/haproxy.cfg主程序:/usr/sbin/haproxyHAProxy的配置处理3类来主要参数来源:最优先处理的命令⾏参数,global配置段,⽤于设定全局配置参数proxy相关配置段,如“defaults”、“listen”、“frontend”和“backend”2.1.2 简单的配置格式:frontend # 前端,指明它要监听在某个地址的某个端⼝上,能够接受客户端的请求的use_backend # 指明所调⽤的后端组default_backend # 指明的默认的后端组backend # 后端,定义后端服务器组balance # 指定调度算法server # 指定主机serverlisten:# 指明监听的地址和端⼝server # 然后直接指明地址default # 默认的2.1.3 简单的配置⽰例配置⼀个监听在所有接⼝的80端⼝上HTTP Proxy服务,它转发所有的请求⾄后端监听在127.0.0.1:8000上的"server" globaldaemonmaxconn 25600defaultsmode httptimeout connect 5000mstimeout client 50000mstimeout server 50000msfrontend http-inbind *:80 # 监听在80端⼝上default_backend servers # 默认转发到后端的servers组内backend servers # 定义后端的servers组server server1 127.0.0.1:8080 maxconn 322.2 global配置内容详解2.2.1 简单的global配置# 这⾥⽇志只是转交给本地的local2设备,要在rsyslog中添加上local2的设备条⽬,记录到指定的⽂件中log 127.0.0.1 local2chroot /var/lib/haproxy # 切换根⽬录,haproxy是被切换到这个⽬录下以安全模式运⾏的pidfile /var/run/haproxy.pid # pid⽂件的保存位置maxconn 4000 # 最⼤连接数,这⾥⽐较保守,可以按需调整user haproxy # 进程启动时以haproxy⽤户的⾝份运⾏group haproxydaemon # 启动为守护进程# turn on stats unix socketstats socket /var/lib/haproxy/stats # 本地访问统计数据时可以基于共享内存的⽅式进程通信注意:记录⽇志时,要开启rsyslog服务,开启514/tcp和514/udp端⼝然后要加上对应设备的条⽬,以记录⽇志到指定的⽂件中:local2.* /var/log/haproxy.log2.2.2 global配置进阶进程管理及安全相关的参数:chroot <dir>修改haproxy的⼯作⽬录⾄指定的⽬录在放弃权限之前执⾏chroot()操作,可以提升haproxy的安全级别要确保指定的⽬录为空⽬录且任何⽤户均不能有写权限daemon:让haproxy以守护进程的⽅式⼯作于后台log <address> <facility> [max level [min level]]定义全局的syslog服务器,最多可以定义两个nbproc:指定启动的haproxy进程的个数,只能⽤于守护进程模式的haproxy默认只启动⼀个进程,鉴于调试困难等多⽅⾯的原因,⼀般只在单进程仅能打开少数⽂件描述符的场景中才使⽤多进程模式ulimit-n:设定每进程所能够打开的最⼤⽂件描述符数⽬,默认情况下其会⾃动进⾏计算,因此不推荐修改此选项性能调整相关的参数:maxconn <number>设定每个haproxy进程所接受的最⼤并发连接数,其等同于命令⾏选项 “-n”“ulimit -n” ⾃动计算的结果正是参照此参数设定的spread-checks <0..50, in percent>在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统⼀对众服务器进⾏健康状况检查可能会带来意外问题此选项⽤于将其检查的时间间隔长度上增加或减⼩⼀定的随机时长0到50是百分⽐,可以选择向前百分之五⼗或者向后百分之五⼗2.3 代理配置详解代理相关的配置可以如下配置段中defaults <name>“defaults”段⽤于为所有其它配置段提供默认参数,这配置默认配置参数可由下⼀个“defaults”所重新设定frontend <name>“frontend”段⽤于定义⼀系列监听的套接字,这些套接字可接受客户端请求并与之建⽴连接backend <name>“backend”段⽤于定义⼀系列“后端”服务器,代理将会将对应客户端的请求转发⾄这些服务器listen <name>“listen”段通过关联“前端”和“后端”定义了⼀个完整的代理,通常只对TCP流量有⽤Fronted和backend的组合体,⽐如haproxy实例状态监控部分配置组合的⽅式直接定义frontend及相关的backend代理名称的使⽤规则:所有代理的名称只能使⽤⼤写字母、⼩写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)ACL名称会区分字母⼤⼩写3. HAProxy配置⽂件中的关键字详解3.1 balance3.1.1 ⽤法balance <algorithm> [ <arguments> ]balance url_param <param> [check_post [<max_wait>]]3.1.2 作⽤定义负载均衡算法,可⽤于“defaults”、“listen”和“backend”<algorithm>⽤于在负载均衡场景中挑选⼀个server其仅应⽤于持久信息不可⽤的条件下或需要将⼀个连接重新派发⾄另⼀个服务器时指明调度算法:动态:权重可动态调整静态:调整权重不会实时⽣效3.1.3 ⽀持的算法roundrobin:动态基于权重进⾏轮询,动态算法,权重可以在运⾏时进⾏调整每个后端主机最多⽀持4128个连接static-rr:静态基于权重进⾏轮询,静态算法,在运⾏时调整其服务器权重不会⽣效每个后端主机⽀持的数量⽆上限leastconn:动态新的连接请求被被派发⾄具有最少连接数⽬的后端服务器较长时间会话的场景中推荐此算法,如LDAP,SQL等其不适⽤于较短会话的应⽤层协议,如HTTPsource:将请求的源地址进⾏hash运算,并由后端服务器的权重总数相除后发⾄某匹配的服务器这可以使得同⼀个客户端IP的请求始终被发派⾄特定的服务器但当服务器权重总数发⽣变化时,如果某服务器宕机,许多客户端的请求可能会被派发⾄与此前请求不同的服务器常⽤于负载均衡⽆cookie功能的基于TCP的协议其默认为静态,不过也可以使⽤hash-type修改此特性,hash-type如果是map-based则就是静态的,consistent则为动态使⽤⽰例:balance sourceserver web1 172.16.100.68:80 check weight 1server web2 172.16.100.69:80 check weight 3uri:对URI的左半部分或整个URI进⾏hash运算,并由服务器的总权重相除后派发⾄某匹配的服务器这可以使得对同⼀个URI的请求总是被派发⾄特定的服务器,除⾮服务器的权重总数发⽣了变化此算法常⽤于代理缓存或反病毒代理以提⾼缓存的命中率此算法仅应⽤于HTTP后端服务器场景其默认为静态算法,不过也可以使⽤hash-type修改此特性使⽤⽰例:balance urihash-type consistenturl_param:通过argument为Url指定的参数在每个HTTP GET请求中将会被检索如果找到了指定的参数且被赋予了⼀个值,那么此值将被执⾏hash运算并被服务器的总权重相除后派发⾄匹配的服务器在url中添加⼀个参数,然后把url中的url_param指定的那个参数的值做hash运算,并处除以总权重此算法可以通过追踪请求中的⽤户标识进⽽确保同⼀个⽤户ID的请求将被送往同⼀个特定的服务器,除⾮服务器的总权重发⽣了变化如果某请求中没有出现指定的参数或其没有有效值,则使⽤轮叫算法对相应请求进⾏调度此算法默认为静态的,不过可以使⽤hash-type修改此特性hdr(<name>):对于每个HTTP请求,通过<name>指定的HTTP⾸部将会被检索(根据请求报⽂中指定的http⾸部的值来进⾏调度,把指定的header的值做hash计算)如果相应的⾸部没有出现或其没有有效值,则使⽤轮叫算法对相应的请求进⾏调度此算法默认为静态的,不过其也可以⽤hash-type修改此特性使⽤⽰例:balance hdr(User-Agent)hash-type consistent3.2 hash-type3.2.1 ⽤法hash-type <method>3.2.2 作⽤定义⽤于将hash码映射⾄后端服务器的⽅法其不能⽤于frontend区段可⽤的⽅法有map-based和consistent,在⼤多数场景下推荐使⽤默认的map-based⽅法3.2.3 可⽤的⽅法map-based:(其实就是取模算法)hash表是⼀个包含了所有在线服务器的静态数组。

HAProxy日志输出及配置

HAProxy日志输出及配置

HAProxy⽇志输出及配置正所谓,没有软件敢说没有bug,⼈⽆完⼈,software is not perfect software。

是软件就可能存在bug,那么如果出现bug,我们就要分析对我们业务的影响及可能如何避免bug的再现。

HAProxy也不例外,也可能在特殊场景下出现bug,因此我们就有必要记录下必要的⽇志信息。

今天来聊下HAProxy的⽇志输出及对应参数配置。

HAProxy⽀持两种主要的代理模式:"tcp"也即4层(⼤多⽤于邮件服务器、内部协议通信服务器等),和7层(HTTP)。

在4层模式下,HAproxy仅在客户端和服务器之间转发双向流量。

7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)⾥指定内容来控制协议,这种操作要基于特定规则。

说到四层模式及七层模式,我们就要回忆下,在RabbitMQ集群搭建过程中,有没有使⽤到四层模式呢?答案是有的,使⽤TCP协议进⾏双向的通信代理使⽤的就是四层协议。

HAProxy配置⽂件可以分为五部分,在上次RabbitMQ集群搭建也简单聊了下,1global: 全局配置参数段,主要⽤来控制Haproxy启动前的进程及系统相关设置2 defaults: 配置⼀些默认参数,如果frontend,backend,listen等段未设置则使⽤defaults段设置3 listen:监听配置4 frontend: ⽤来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理5 backend: 定义后端服务器集群,以及对后端服务器的⼀些权重、队列、连接数等选项的设置HAProxy的安装我们不再介绍,在安装完毕以后,进⾏的⽇志输出配置:根据实际需求,更改配置⽂件,我的配置如下global #全局设置log 127.0.0.1 local3 #local3是设备,对应于 /etc/rsyslog.conf中的配置,默认回收info的⽇志级别#log loghost local0 infomaxconn 4096 #最⼤连接数chroot /usr/local/haproxyuid 99 #所属运⾏的⽤户uidgid 99 #所属运⾏的⽤户组daemon #以后台形式运⾏haproxynbproc 2 #启动2个haproxy实例pidfile /usr/local/haproxy/haproxy.pid #将所有进程写⼊pid⽂件#debug#quiet defaults #默认设置#log globallog 127.0.0.1 local3 #⽇志⽂件的输出定向mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OKoption httplog #⽇志类别,采⽤httplogoption dontlognulloption forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ipoption httpclose #每次请求完毕后主动关闭http通道,haproxy不⽀持keep-alive,只能模拟这种模式的实现retries 3 #3次连接失败就认为服务器不可⽤,主要通过后⾯的check检查option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器maxconn 2000 #最⼤连接数stats uri /stats #haproxy 监控页⾯的访问地址 浏览器中输⼊haproxy监控地址:http://10.10.100.39/stats查看状态contimeout 5000 #连接超时时间clitimeout 50000 #客户端连接超时时间srvtimeout 50000 #服务器端连接超时时间stats auth admin:admin #设置监控页⾯的⽤户和密码:Frankstats hide-version #隐藏统计页⾯的HAproxy版本信息frontend http-in #前台bind *:80mode httpoption httploglog globalacl web1 hdr(host) -i #acl后⾯是规则名称,-i是要访问的域名,如果访问 这个域名就分发到下⾯的webserver1 的作⽤域。

HAproxy均衡负载部署和配置文件详解

HAproxy均衡负载部署和配置文件详解

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.3 是处于活跃开发阶段的版本, 它支持如下新特性:●内容交换: 可以根据请求(request)的任何一部分来选择一组服务器, 比如请求的URI , Host头(header) , cookie , 以及其他任何东西.当然,对那些静态分离的站点来说,对此特性还有更多的需求。

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这两个地址组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用rchs集群套件基于conga界面配置apache高可用集群电源设备采用“virtual machine fencing”Conga是一个基于web界面的c/s架构的配置集群的工具c 集群节点作为被服务管理集群配置的客户端节点s 专门用于管理集群、配置集群的一个服务端节点在S服务端上安装luci的服务端软件,打开该软件提供的一个web界面,进行集群的配置(配置的步骤跟使用rhel5上的system-config-cluster雷同),唯一的区别是,服务端(本机)本身并不参与集群,并不属于集群中的成员。

在c客户端上安装ricci服务,该服务会与服务端的luci建立连接,接受服务端的集群管理操作。

客户端才是集群中的成员。

准备:FQDN、静态IP 、hosts文件clients||----------------|node1 node2192.168.29.11192.168.29.12资源:vip 192.168.29.10httpdOS :rhel6准备:静态IP、FQDN、hosts暂时关闭iptables ,selinux[Base]name=Basebaseurl=file:///soft/el63enabled=1gpgcheck=0[HighAvailability]name=LoadBalancerbaseurl=file:///soft/el63/HighAvailabilityenabled=1gpgcheck=0[ResilientStorage]name=ResilientStoragebaseurl=file:///soft/el63/ResilientStorageenabled=1gpgcheck=0[ScalableFileSystem]name=ScalableFileSystembaseurl=file:///soft/el63/ScalableFileSystemenabled=1gpgcheck=0一、在宿主机上模拟fence设备# yum install fence-virt.x86_64 fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -yfence-virt 实际用于fence设备工具:实际用于关机、重启、启动客户机的工具fence-virtd 模拟fence设备的服务:负责接受集群中的节点(客户机)fence指令fence-virtd-libvirt.x86_64 <----操作虚拟化的接口库fence-virtd-multicast.x86_64 组播的方式在宿主机(fence-virtd服务)和客户机(集群节点)之间传达电源指令《---以模块的形式存在软件安装完毕后,存在一个配置文件/etc/fence_virt.conf向导配置# fence_virtd -cModule search path [/usr/lib64/fence-virt]:Listener module [multicast]: 《----必须是组播模块Multicast IP Address [225.0.0.12]:Multicast IP Port [1229]:Interface [virbr6]: virbr6 《---根据当前实验集群节点所在的虚拟化网络Key File [/etc/cluster/fence_xvm.key]:Backend module [libvirt]: 《---必须是libvirt模块Libvirt URI [qemu:///system]:Replace /etc/fence_virt.conf with the above [y/N]? y创建/etc/cluster/fence_xvm.key# dd if=/dev/random of=/etc/cluster/fence_xvm.key bs=1 count=4096 随机数据产生的速度依赖本机的IO的繁忙情况实验的化,可以随便创建4KB的数据# dd if=/dev/sda2 of=/etc/cluster/fence_xvm.key bs=1 count=4096必须把该文件同步到使用该fence设备的所有集群节点上。

保持路径一致# rsync -alvR /etc/cluster/fence_xvm.key 192.168.29.11:/# rsync -alvR /etc/cluster/fence_xvm.key 192.168.29.12:/启动虚拟化的fence服务# fence_virtd# ps -ef | grep fenceroot 6536 1 0 15:19 ? 00:00:00 fence_virtd停止服务:# skill -9 fence_virtd默认不会开机启动,可以把启动命令保存在rc.local验证fence_virtd可以直接管理节点(客户机)的电源# fence_xvm -H www-virt2 <---看到www-virt2的客户机被强制重启二、在宿主机器上部署luci服务,充当集群中的管理节点# yum install luci -y启动luci,进行集群配置# service luci start正在启动saslauthd:[确定]Start luci... [确定]Point your web browser to https://:8084 (or equivalent) to access luci打开浏览器https://:8084登录帐号与系统的root帐号一样三、部署rhcs集群节点1、所有成员节点(node1,node2)都安装集群套件前提:必须配置好yum源# yum groupinstall "High Availability" -y 《---不是必须的,可以交给后面ricci服务进行安装# yum install ricci -y <---必须的# chkconfig ricci on2、给ricci服务对应的操作执行有效身份ricci用户设定密码。

# passwd ricci提醒:在两个集群中的成员节点上都必须修改。

3、启动ricci服务,等待服务端luci连接过来进行集群自动化部署。

# service ricci start4、成员节点都必须关闭NetworkManager 服务,并且设定它开机不启动# service NetworkManager stop# chkconfig --level 2345 NetworkManager off <---必须的提示:如果之前已经配置过集群,想重新配置,必须把现有的配置文件删除或者改名。

# rm -rf /etc/cluster/cluster.conf说明:集群如果已经配置好了,并且已经运行了,ricci服务并不是必须要开启的。

但是如果不开启的化,管理节点就无法管理、查看集群的运行状态。

5、把涉及到一些资源准备好、测试apache 安装、启动、测试、关闭四、在管理节点上luci的web界面上配置集群总结:如果需要让集群开机自动启动集群服务cman,需要手工:# chkconfig cman on=============================================================================== =使用Haproxy 实现七层负载均衡集群常见负载均衡的软件:lvs 四层调度(传输层:tcp/udp)nginx 七层调度Haproxy 四层/七层调度,更专业的七层调度七层调度:可以理解客户端请求的第七层(应用层)的数据的具体内容,根据内容做调度。

可以根据客户端浏览器的版本、操作系统的版本、语言、访问的是什么页面(是静态还是动态页面)进行调度|br0Haproxyvirbr6|--------------------|node1 node2node1192.168.29.11node2192.168.29.12Haproxybr0 10.1.1.21virbr6 192.168.29.1一、部署haproxy1、安装确定系统的架构# uname -a安装高版本的pcre(perl 格式的正则),性能会有2-10倍的提升。

pcre-8.01.tar.gz# ./configure --prefix=/usr && make && make install# ldconfigHaproxy根据架构选择适当的编译参数# make TARGET=linux26 CPU=i686 USE_STATIC_PCRE=1 PREFIX=/usr/local/haproxy如果是64位:# make PREFIX=/usr/local/haproxy TARGET=linux26 ARCH=x86_64 USE_STATIC_PCRE=1 # make install PREFIX=/usr/local/haproxy模板配置文件和默认自带的服务启动脚本都在:/usr/src/haproxy-1.4.15/examples/2、配置# groupadd -g 98 haproxy# useradd -u 98 -g 98 haproxy# id haproxyuid=98(haproxy) gid=98(haproxy) groups=98(haproxy)# cp /usr/local/haproxy/share/man/man1/haproxy.1 /usr/share/man/man1/ # man haproxy例子1:实现上述拓扑图,简单的负载均衡模板配置文件:笔记目录下haproxy.cfg.sample# vim /usr/local/haproxy/haproxy.cfggloballog 127.0.0.1 local0 infouser haproxygroup haproxydaemonpidfile /usr/local/haproxy/haproxy.piddefaultslog globalmode httpoption httplogoption dontlognullretries 3option redispatchtimeout client 50000timeout server 50000timeout connect 60000option httpchk HEAD /ok.html HTTP/1.0listen weblb *:80 <---接受到的客户端请求,目标ip随意,只要目标端口是80,就会进行调度option httpcloseoption forwardforbalance roundrobinserver web1 192.168.13.245:80 weight 1 check inter 2000 rise 2 fall 2server web2 192.168.13.246:80 weight 1 check inter 2000 rise 2 fall 2listen stats :8888mode httptransparentstats uri / haproxy-statsstats realm Haproxy \ statisticstats auth admin:admin使用笔记目录下提供的启动脚本# cp 启动脚本/haproxy /etc/rc.d/init.d/# chmod 755 /etc/rc.d/init.d/haproxy# service haproxy startStarting haproxy: [确定]二、部署后端阶段1、安装apache并且启动2、建立健康测试页面测试:# elinks http://192.168.13.248 《----访问haproxyhttp://192.168.13.248:8888/发现当前是论寻的方式进行调度的,如果想实现会话保持,需要告诉haproxy使用cookie 跟踪listen weblb *:80 <---接受到的客户端请求,目标ip随意,只要目标端口是80,就会进行调度cookie SERVERID insert indirect 《----使用cookie实现会话跟踪option httpcloseoption forwardforbalance roundrobinserver web1 192.168.29.11:80 weight 1 cookie node1 check inter 2000 rise 2 fall 2server web2 192.168.29.12:80 weight 1 cookie node2 check inter 2000 rise 2 fall 2 《---- cookie node1 指定cookie的值。

相关文档
最新文档