HAProxy的安装部署详细
HAProxy负载均衡原理及企业级实例部署haproxy集群
HAProxy负载均衡原理及企业级实例部署haproxy集群⼀ HAProxy简介HAProxy是⼀种⾼效、可靠、免费的⾼可⽤及负载均衡解决⽅案,⾮常适合于⾼负载站点的七层数据请求。
客户端通过HAProxy代理服务器获得站点页⾯,⽽代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。
同⼀客户端访问服务器,HAProxy保持回话的三种⽅案:1 HAProxy将客户端ip进⾏Hash计算并保存,由此确保相同IP访问时被转发到同⼀真实服务器上。
2 HAProxy依靠真实服务器发送给客户端的cookie信息进⾏回话保持。
3 HAProxy保存真实服务器的session及服务器标识,实现会话保持功能。
haproxy拓扑结构图⼆配置⽂件解析Haproxy安装后默认没有配置⽂件,需要⼿动创建/etc/haproxy.cfg。
启动haproxy时⽤-f指定配置⽂件路径。
haproxy的配置⽂件包含全局设置段与代理段,global是全局段,defaults、listen、frontend、backend为代理段。
frontend⽤来匹配客户端请求的域名或者URL;backend 定义后端服务器集群haproxy配置⽂件参数详细解析配置项描述global chroot<jail dir>将⼯作⽬录切换到<jail dir>并执⾏chrootdaemon后台⼯作模式uid进程账户id,建议设置为haproxy专⽤账户gid进程组id,建议设置为haproxy专⽤组log<address><facility>配置全局syslog,可以设置两台⽇志服务器nbproc<number>指定后台进程数量pidfile<file>指定pid⽂件ulimit-n<number>设置每个进程最⼤⽂件描述符数量maxconn<number>每个进程⽀持的最⼤并发数tune.bufsize<number>设置buffer⼤⼩,默认16384Bmode可选tcp、http、healthtimeout check<timeout>设置检查超时时间contimeout<timeout>设置连接超时时间balance roundrobin设置轮询负载bind<address>:port定义⼀个或者多个监听地址和端⼝stats auth admin:admin设置监控界⾯的⽤户名和密码stats refresh<number>统计页⾯刷新间隔时间option httplog使⽤http⽇志cookie<name>启⽤cookie的保持连接功能option forwardfor允许插⼊这种数据包头,可以让后端服务器获取客户端ip option abortonclose负载⾼时,⾃动关闭处理时间长的请求option allbackups后端服务器宕机,是否激活全部备机,默认启动第⼀个备机option dontlognull不记录空连接⽇志,主要⽤于不记录健康检查⽇志代理设置option redispatch后端某个机器宕机,强制把请求转发给健康机器monitor-uri<URi>检查uri⽂件是否存在,依次判断主机的健康状态monitor-fail if site_dead服务器宕机时,返回503代码option httpchk<uri>使⽤http协议检查服务器健康状态retries<value>服务器连接失败后的重试次数timeout client客户端最⼤超时时间,单位毫秒timeout server服务器最⼤超时时间,单位毫秒timeout connect最⼤连接超时时间,单位毫秒default_backend默认后端服务器组use_backend当条件满⾜时,指定后端服务器组acl<name><criterion>定义访问控制列表三 Haproxy实例部署本例使⽤listen定义⼀个监控端⼝;使⽤frontend定义⼀个前端80端⼝;通过backend定义名为inside_servers 和 external_servers的服务器组;使⽤default_backend定义默认服务器组external_servers;external_servers包括和 两台服务器inside_servers包含 ⼀台服务器服务器名称⽹络配置 eth0:10.10.10.10eth1:192.168.1.2 eth0:192.168.1.3 eth0:192.168.1.4 eth0:192.168.1.51 ⾸先配置web服务器在web1 web2 web3上安装httpd并配置⽹卡vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticIPADDR=192.168.1.3NETMASK=255.255.255.0GATEWAY=192.168.1.2ONBOOT=yesTYPE=Ethernetservice network restartyum install -y httpdiptables -Fiptables -Xservice iptables savesetenforce 0sed -i s/enforcing/disabled/g /etc/sysconfig/selinuxecho "web1 192.168.1.3" > /var/www/html/index.html service httpd restartchkconfig httpd onweb2 web3机器上执⾏与web1相同步骤,注意修改部分参数2 接着haproxy服务器配置设置两块⽹卡vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticIPADDR=10.10.10.10NETMASK=255.0.0.0ONBOOT=yesTYPE=Ethernetvim /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1BOOTPROTO=staticIPADDR=192.168.1.2NETMASK=255.255.255.0GATEWAY=192.168.1.1ONBOOT=yesTYPE=Ethernetservice network restartservice iptables stop内核调优,修改系统⽂件vim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535配置⽇志⽂件,添加三⾏vim /etc/rsyslog.conf$ModLoad imudp $UDPServerRun 514local3.* /var/log/haproxy.logyum -y install gcctar zxf haproxy-1.6.11.tar.gz -C /usr/src/ cd /usr/src/haproxy-1.6.11/make TARGET=linux2628make installmkdir /var/haproxy3 创建配置⽂件vim /etc/haproxy.cfgglobalmaxconn 4096log 127.0.0.1 local3 infochroot /var/haproxyuid 99gid 99daemonnbproc 1pidfile /var/run/haproxy.pidulimit-n 65535stats socket /var/tmp/statsdefaultslog globalmode httpmaxconn 20480option httplogoption httpcloseoption dontlognulloption forwardforoption redispatchoption abortonclosestats refresh 30retries 3balance roundrobincookie SRVtimeout check 2000mstimeout connect 5000mstimeout server 50000mstimeout client 50000mslisten admin_status #定义haproxy的监控界⾯bind 0.0.0.0:6553mode httplog 127.0.0.1 local3 infostats enablestats refresh 5s #监控页⾯⾃动刷新时间5sstats realm Haproxy\ Statistics #登录监控页⾯提⽰符stats uri /admin?stats #监控页⾯URL路径stats auth admin:123456 #监控页⾯的账户密码stats hide-version #隐藏haproxy版本frontend web_service #定义前端服务器bind 0.0.0.0:80mode httplog globaloption httplogoption httpcloseoption forwardfor#acl inside_src src 192.168.1.0/24 #定义acl#use_backend inside_servers if inside_src #判断acl的源地址,把请求转发到inside_servers组default_backend external_servers #默认服务器组backend external_serversmode httpbalance roundrobin #轮询真实服务器option httpchk GET /index.html #检查index⽂件,判断服务器是否健康##定义后端真实服务器,向cookie中插⼊web1信息,check进⾏健康检查,检查时间间隔为2000ms,##连续两次健康则认为是正常开启的,连续三次检查失败则认为宕机,服务器权重1server web1 192.168.1.3:80 cookie web1 check inter 2000 rise 2 fall 3 weight 1server web2 192.168.1.4:80 cookie web2 check inter 2000 rise 2 fall 3 weight 1#backend inside_servers#mode http#balance roundrobin #轮询真实服务器#option httpchk GET /index.html #检查index⽂件,判断服务器是否健康#server web3 192.168.1.5:80 cookie web3 check inter 2000 rise 2 fall 3 weight 14 启动haproxy服务service rsyslog restart #重启系统⽇志服务haproxy -f /etc/haproxy.cfg #启动haproxy服务echo "/usr/local/sbin/haproxy -f /etc/haproxy.cfg" >> /etc/rc.local5 测试验证浏览器访问监控页⾯多次刷新访问将得到web1和web2 不同页⾯信息。
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的缓存
机制可以通过两种方式来实现,内置缓存和外部缓存。
首先,内置缓存是指HAProxy自身具有一定的缓存能力,可以
在内存中缓存经常请求的内容,以减少对后端服务器的请求。
内置
缓存可以通过配置来启用,可以设置缓存的大小、过期时间、缓存
策略等参数。
当有请求到达时,HAProxy会先检查缓存中是否存在
相应的内容,如果存在且未过期,则直接返回缓存内容,从而减少
了对后端服务器的请求压力。
其次,HAProxy也可以与外部缓存(如Redis、Memcached等)
结合使用,通过在配置中指定外部缓存服务器的地址和端口来实现。
这样可以将缓存数据存储在外部缓存服务器中,实现多个HAProxy
实例之间的共享缓存,提高了缓存的效率和可靠性。
总的来说,HAProxy的缓存机制可以通过内置缓存和外部缓存
来提高性能和减轻后端服务器的负担。
通过合理的配置和使用,可
以有效地提高系统的整体性能和可靠性。
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的组合体。
keepalived haproxy原理
keepalived haproxy原理keepalived和haproxy是常用的负载均衡工具,在实际应用中经常被使用到。
keepalived主要用于实现高可用性、故障转移,而haproxy则主要用于实现负载均衡。
本文将介绍keepalived和haproxy的原理及其应用。
一、keepalived原理keepalived是一个基于VRRP协议实现的高可用性软件,主要用于实现集群的故障转移。
它的原理是通过多台服务器协同工作,将它们构建成一个高可用性的集群,当其中一台服务器发生故障时,其他节点会接管该节点的服务,从而实现服务的不间断运行。
keepalived的原理可以简单概括为以下几个步骤:1. 配置keepalived的节点信息,包括节点的IP地址、优先级等参数。
2. 将节点配置成VRRP协议中的虚拟路由器,并指定一个虚拟IP地址。
3. 当节点正常工作时,其会不断发送VRRP协议的心跳包,以表明自己的存在。
4. 当某个节点发生故障或者不再向外发送心跳包时,其他节点会检测到该节点的异常,并接管该节点的服务。
5. 故障节点恢复后,其他节点会自动将服务归还给该节点。
二、haproxy原理haproxy是一款高性能的负载均衡软件,可以将来自客户端的请求转发到多个后端服务器上,从而实现负载均衡。
haproxy的原理可以简单概括为以下几个步骤:1. 配置haproxy的监听端口和后端服务器地址。
2. 当客户端发送请求时,haproxy会接收并解析请求,然后根据预设的负载均衡算法,选择一个后端服务器进行请求转发。
3. haproxy会将请求转发给所选的后端服务器,并将响应返回给客户端。
4. 如果所选的后端服务器出现故障或者超过预设的最大连接数,haproxy会自动将该服务器从负载均衡池中剔除,并选择其他可用的服务器进行请求转发。
5. 当故障的服务器恢复或者新的服务器加入负载均衡池时,haproxy会自动将其重新加入负载均衡池中,并参与负载均衡。
安装HA过程
安装HA过程查看是否已装,lslpp –l |grep clustersmitty installp 选install software,从光盘安装.或者1. 如果直接从诸如CD-ROM 等安装媒体或从本地存储库进行安装,请输入smitty install_all 快速路径。
SMIT 将显示Install and Update from ALL Available Software 屏幕。
2. 在INPUT device/directory for software 字段中输入安装媒体的设备名称或安装目录,然后按Enter 键。
3. 输入对应的字段值。
要选择希望安装的软件,请按F4 以获得软件清单,或输入all 以安装所有服务器和客户端映像。
根据您的集群配置选择希望安装的软件包。
有些软件包可能需要在您的环境中不可用的软件集(例如,Tivoli Monitoring)。
HACMP Fileset Description本次安装版本为HA5.5,需要安装软件集如下:Cluster.adt.esCluster.doc.en_us.esCluster.es.cfsCluster.es.clientsCluster.cspolCluster.es.nfsCluster.es.serverCluster.worksheetsCluster.licenceCluster.en_us.es注意:如果要安装并发资源管理器(Concurrent Resource Manager) 功能,则必须安装cluster.es.clvm LPP,而且,如果选择cluster.es 和cluster.cspoc,则还必须选择关联的消息软件包。
确保在Accept new license agreements 字段中选择Yes。
必须对此项选择Yes 才能继续进行安装。
建议先预览一次.如果选择No,安装可能会停止,并显示一条关于一个或更多个文件集需要软件许可协议的警告。
haproxy安装和配置超详细步骤(全部流程)
haproxy安装和配置步骤(全部流程)此文档是根据网上查找的资料,并通过测试成功配置haproxy负载均衡器整理出来的,这里我将所有操作步骤一步步列出来,这样可以节省大家很多的时间,而且最主要的是非常适合刚开始接触linux系统的初学者,即使什么都不懂也可以完成配置。
部署在centos 6.5系统软件版本haproxy-1.5.15(1.3.20也可以用过)假设公网ip地址10.10.10.10本人都是以管理员身份进行安装。
下载软件wget /download/1.5/src/haproxy-1.5.15.tar.gz解压tarzxf haproxy-1.5.15.tar.g进入文件夹后开始安装cd haproxy-1.5.15make TARGET=linux26 PREFIX=/usr/local/haproxy#上一条命令如果提示没有gcc编译器,使用下述语句进行安装yum install ncurses-develgccgcc-c++ make rpm-buildmake install PREFIX=/usr/local/haproxycd /usr/local/haproxy/mkdirconfmkdir logscd conf #配置文件放在此目录里以上命令万一有看不懂的哈哈,请上网查一下。
#创建配置文件vimhaproxy.cfg#如果提示没有vim ,使用下述语句进行安装yum install vim复制以下haproxy.cfg配置文件里的代码(可以在windows里创建好文件,用记事本打开编辑好了上传到/usr/local/haproxy/conf文件夹里)globallog 127.0.0.1 local0log 127.0.0.1 local3#log 127.0.0.1 local1 noticemaxconn 60000chroot /usr/local/haproxyuid 501gid 501daemonpidfile /usr/local/haproxy/logs/haproxy.piddefaultslog globaloptionhttplogmode httpbalance sourceoptiondontlognulloption http-server-closeoptionforwardfor except 127.0.0.1optionredispatchretries 3optionredispatchmaxconn 60000timeout http-request 10stimeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout http-keep-alive 10stimeout check 10smaxconn 60000#listen admin_stats#bind 0.0.0.0:80#mode http#option httplog#maxconn 10stats refresh 30sstats uri /haproxy-stats#注释:运行状态、后端服务器监控地址,上面说公网ip地址10.10.10.10那在浏览器里打开网址10.10.10.10/haproxy-stats,输入下面设置帐号密码,即可查看stats auth帐号:密码#注释:这里自己设置帐号和密码,stats hide-version#注释:本人用到acl规则可以一台haproxy分别处理不同的域名frontendweblbbind *:80acl w2017hdr_reg(host) -i ^(||)$acl w2016_web hdr_reg(host) -i #注释:这w2017,www2017就是随便命名的而已别乱就行。
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的算法
haproxy的算法HAProxy是一款高性能的负载均衡器和代理服务器,支持多种负载均衡算法。
以下是HAProxy中常见的负载均衡算法:1. Round Robin(轮询):这是一种最简单的负载均衡算法,按照后端服务器的权重轮流分配请求。
当服务器的处理时间平均分配时,此算法运行最流畅和公平。
2. Static-RR(静态轮询):类似于Round Robin,但不支持运行时调整权重及慢启动机制。
每个服务器根据权重轮流使用,对服务器数量没有限制。
3. Leastconn(最少连接):连接数最少的服务器优先接收连接。
建议用于长会话场景,例如LDAP、SQL等协议,而不适合短会话协议,如HTTP。
4. First(首选):根据服务器在列表中的位置,自上而下进行调度。
前面服务器的连接数达到上限,新请求才会分配给下一台服务器。
一般不设置该调度方法,可以用于测试环境。
5. Source(源地址):根据请求源IP进行负载均衡。
可以确保来自同一个IP的主机使用同一个后端服务器。
6. URI(请求URI):根据请求的URI进行负载均衡。
适用于基于URL 的负载均衡场景。
7. UrlParam(请求URL参数):根据请求的URL参数进行负载均衡。
需要指定参数名称。
8. HDR(请求头):根据HTTP请求头来锁定每一次HTTP请求。
可用于特定场景下的负载均衡。
9. RDp-Cookie(Cookie):根据Cookie值进行负载均衡。
可用于保持会话的一致性。
此外,HAProxy还支持会话保持和Session共享,以解决负载请求分发到不同服务器时可能导致Session会话不同步的问题。
会话保持的方法包括:1. 用户IP识别:将用户IP经过hash计算后,指定到固定的真实服务器上。
2. Cookie识别:将WEB服务端发送给客户端的Cookie作为会话标识,实现会话共享。
综上所述,HAProxy支持多种负载均衡算法,适用于不同场景下的负载均衡和会话保持需求。
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 编译
haproxy 编译
"haproxy 编译"这句话的意思是关于如何将HAProxy的源代码编译为可执行文件或库文件的过程。
在举例说明"haproxy 编译"时,以下是两个可能的例子:
1.在Linux操作系统上,你可以使用以下命令来编译HAProxy:
./configuremakemake install
这个例子中,./configure命令用于配置编译选项,make命令用于编译源代码,make install命令用于将编译后的文件安装到目标目录。
2. 在Windows操作系统上,你可能需要使用Visual Studio或其他C++编译器来编译HAProxy。
你需要下载HAProxy的源代码,并使用适当的编译器和构建工具进行编译。
总结来说,"haproxy 编译"是指将HAProxy的源代码编译为可执行文件或库文件的过程。
这个过程可能因操作系统和编译环境的不同而有所差异。
通过编译HAProxy的源代码,你可以获得可执行文件或库文件,以便在目标系统上运行和部署HAProxy。
反向代理的配置方法
反向代理的配置方法反向代理是一种服务器架构模式,客户端发送的请求首先到达反向代理服务器,然后由反向代理服务器将请求转发给后端的真实服务器,最后将响应返回给客户端。
通过配置反向代理,可以提高网站的性能、安全性和可靠性。
一、安装代理软件1.选择合适的代理软件,如Nginx、Apache、HAProxy等。
2.下载并安装代理软件。
根据软件的不同,安装方法也不同,请参考相关文档。
二、配置代理规则1.打开代理软件的配置文件。
2.配置代理规则,指定前端和后端服务器的IP地址和端口号。
3.根据需要配置转发规则、请求处理方式等。
4.保存配置文件并重新启动代理软件。
三、配置SSL证书1.获取SSL证书。
可以选择购买商业证书或使用免费的证书颁发机构(CA)证书。
2.将SSL证书安装到代理服务器上。
根据证书类型和代理软件的不同,安装方法也不同。
3.配置代理软件,使其支持HTTPS协议,并将请求重定向到HTTPS。
4.测试SSL证书是否生效。
四、配置负载均衡1.确定负载均衡策略,如轮询、最少连接数等。
2.配置代理软件,使其支持负载均衡功能。
3.将前端请求分发到多个后端服务器,实现负载均衡。
4.测试负载均衡是否生效。
五、配置缓存1.打开代理软件的缓存功能。
2.配置缓存规则,指定缓存的位置、有效期等。
3.将经常访问的静态资源(如图片、CSS文件、JS文件等)缓存在代理服务器上,提高网站性能。
4.测试缓存是否生效。
六、测试配置1.通过浏览器或其他工具向代理服务器发送请求,检查代理规则是否生效。
2.检查SSL证书是否生效,确保网站支持HTTPS协议。
3.检查负载均衡是否生效,确保请求能够正确分发到各个后端服务器。
4.检查缓存是否生效,检查静态资源是否能够正确缓存并返回。
5.进行压力测试和性能测试,检查代理服务器的性能和稳定性。
七、监控和日志记录1.监控代理服务器的性能指标,如CPU使用率、内存使用率、请求响应时间等。
可以使用系统自带的监控工具或第三方监控工具进行监控。
haproxy安装及配置端口转发
haproxy安 装 及 配 置 端 口 转 发
一、安装
# tar zcvf haproxy-1.6.7.tar.gz # cd haproxy-1.6.7 # make TARGET=linhaproxy # make install PREFIX=/usr/local/haproxy
defaults log 127.0.0.1 local3 mode http option httplog option httpclose option dontlognull option forwardfor option redispatch retries 2 maxconn 2000 balance roundrobin stats uri /haproxy-stats timeout connect 5000 timeout client 50000 timeout server 50000 frontend web_proxy mode http bind 0.0.0.0:8080
#将haproxy安装到/usr/local/haproxy
二、配置
#cd /usr/local/haproxy/
#mkdir conf logs
#vim conf/haproxy.cfg
输入以下内容,建立一个能让haproxy跑起来的最基本的配置
global log 127.0.0.1 local3 maxconn 4096 chroot /usr/local/haproxy uid 1000 gid 1000 daemon nbproc 1 pidfile /usr/local/haproxy/logs/haproxy.pid
此处意思是:绑定80端口,如果收到tcp连接请求,则延时2秒用于判断,如果是http协议,则转发到8080端口(webserver)。
Haproxy实现Exchange全透明代理服务
一:背景公司最近exchange邮件系统来构建高可用邮件系统架构。
前端负载均衡就是使用了微软的NLB来实现cas的负载均衡。
但是方案实施工程中也发现了一些问题,使用NLB在网络中产生大量广播报,出现丢包严重问题。
后改用haproxy替代NLB实现cas的负载均衡,但也这就导致了一个问题,最明显的就是用户通过Haproxy来访问邮件系统后真正达到邮件系统的地址都是Haproxy 的地址,在垃圾邮件过滤的时候就无法实现基于IP的过滤,并且也无法记录IP 地址信息。
为了解决这个问题我google了很多方案,可以使用硬负载,硬负载可以实现全透明代理让后端邮件服务器获取到用户的真实IP,还有一种解决方案就是 Haproxy的全透明代理。
接下来将会介绍下Haproxy的全透明代理的部署。
二:实验拓扑三:方案部署配置Haproxy#!/bin/bashwget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.25.tar.gz tar zxvf haproxy-1.4.25.tar.gzcd haproxy-1.4.25yum install gcc gcc-c++ autoconf automake -ymake TARGET=linux2628 arch=x86_64 USE_LINUX_TPROXY=1 #重点USE_LINUX_TPROXY=1用于编译支持TPTOXYmake installmkdir /etc/haproxycp examples/haproxy.cfg /etc/haproxycp examples/haproxy.init /etc/init.d/haproxychmod +x /etc/init.d/haproxycp haproxy /usr/sbin/修改配置文件/etc/haproxy/haproxy.cfggloballog 127.0.0.1 local0maxconn 409600chroot /usr/local/share# uid 501# gid 501daemonnbproc 1pidfile /usr/local/haproxy/logs/haproxy.pid # debugdefaultslog globalmaxconn 100000contimeout 500000clitimeout 3600000srvtimeout 3600000option redispatchretries 6frontend mode httpbind 0.0.0.0:80log globaloption tcplogredirect location https:///owafrontend owa_443mode tcpbind 0.0.0.0:443default_backend pool_443log globaloption tcplogbackend pool_443balance sourceoption redispatchoption abortoncloseoption persiststick on srcstick-table type ip size 10240k expire 240m source 0.0.0.0 usesrc clientip #重点,TPROXY需要加上这行。
haproxy server参数
haproxy server参数haproxy server参数指的是配置haproxy服务器时可以使用的参数选项。
haproxy是一个高性能的负载均衡器,可以用于将网络流量分发到多个服务器上,以提高系统的可用性和性能。
以下是一些常用的haproxy server参数以及对其功能的解释:1. global参数:全局参数用于配置haproxy服务器的整体行为。
比如,可以使用global参数来设置服务器的运行模式、日志级别、进程数量等。
2. defaults参数:defaults参数用于配置默认的服务器行为。
可以在defaults参数中设置服务器的超时时间、最大连接数等。
这些设置将被应用于所有后续未明确指定的配置。
3. frontend参数:frontend参数用于配置haproxy服务器的前端监听。
可以在frontend参数中指定服务器监听的IP地址和端口号,并设置相应的协议类型。
此外,还可以配置请求的转发规则,以确定将流量转发到哪些后端服务器上。
4. backend参数:backend参数用于配置haproxy服务器的后端服务器。
可以在backend参数中指定后端服务器的IP地址和端口号,并设置相应的协议类型。
还可以配置负载均衡算法,以确定如何将流量分发到不同的后端服务器上。
5. server参数:server参数用于定义后端服务器的详细信息。
可以在server参数中指定服务器的IP地址和端口号,并设置相应的协议类型。
此外,还可以配置服务器的权重、最大连接数等。
6. listen参数:listen参数用于配置haproxy服务器的监听端口。
可以在listen参数中指定服务器监听的IP地址和端口号,并设置相应的协议类型。
7. balance参数:balance参数用于配置负载均衡算法。
可以在balance参数中指定使用的负载均衡算法,如轮询、加权轮询、源IP哈希等。
8. mode参数:mode参数用于配置服务器的工作模式。
hisuite proxy v3 用法
hisuite proxy v3 用法本篇文章将介绍HiSuite Proxy V3的用法。
HiSuite Proxy V3是一款功能强大的代理工具,可用于手机和电脑之间的数据传输和管理。
本文将详细介绍HiSuite Proxy V3的安装步骤、主要功能及使用方法,并提供一些实用技巧和注意事项。
一、安装步骤1. 下载HiSuite Proxy V3安装包进入HiSuite官方网站,在下载页面选择合适的版本,点击下载按钮开始下载安装包。
2. 执行安装程序找到下载的安装包,双击打开。
按照提示,选择安装目录和其他设置,并点击“下一步”按钮。
等待程序完成安装。
3. 完成安装安装完成后,点击“完成”按钮退出安装程序。
二、主要功能HiSuite Proxy V3具有以下主要功能:1. 数据传输HiSuite Proxy V3可以实现手机和电脑之间的数据传输。
用户可以通过USB连接手机和电脑,并使用HiSuite Proxy V3将各类文件(如照片、音乐、视频)从手机传输到电脑,或者将电脑上的文件传输到手机上。
2. 文件管理HiSuite Proxy V3提供了便捷的文件管理功能,用户可以通过电脑上的界面直接管理手机上的文件。
用户可以对文件进行复制、粘贴、删除等操作,也可以创建文件夹、重命名文件等。
3. 应用管理HiSuite Proxy V3还支持手机应用的管理。
用户可以在电脑上查看已安装的应用列表,并进行应用的安装、卸载、更新等操作。
此外,还可以通过HiSuite Proxy V3备份手机上的应用。
4. 联系人和短信管理HiSuite Proxy V3提供了联系人和短信管理功能,方便用户在电脑上查看和编辑手机中的联系人和短信。
用户可以导出联系人和短信到电脑上的文件,也可以导入电脑上的联系人和短信到手机中。
5. 数据恢复和备份HiSuite Proxy V3具备数据恢复和备份功能,用户可以选择备份手机上的数据到电脑上,以防止数据丢失。
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语法使得系统管理员可以根据实际需求进行灵活的配置,帮助应用实现更高效、更安全的访问控制策略。
docker部署haproxy
docker部署haproxy1.haproxy.cfggloballog 127.0.0.1 local0 info # ⽇志存储到127.0.0.1,以local0输⼊info级别maxconn 4096 # 最⼤连接数,要考虑到ulimit -n的⼤⼩限制daemonnbproc 2 # 进程数defaultslog globalmode tcp # 使⽤tcp4层代理模式option tcplogoption dontlognullretries 3# 在使⽤基于cookie定向时,⼀旦后端某⼀server宕机时,会将会话重新定向⾄某⼀上游服务器,必须使⽤的选项option redispatchmaxconn 4096timeout connect 5stimeout client 60s #客户端空闲超时时间timeout server 15s #服务端超时时间listen rabbitmq_clusterbind 0.0.0.0:5678mode tcpbalance roundrobin #采⽤轮询机制,还可以是其他的负载均衡⽅式#rabbitmq集群节点配置,inter每隔3秒对MQ集群做健康检查,server rabbit1 192.168.1.181:5672 check inter 3000 rise 2 fall 2server rabbit2 192.168.1.182:5672 check inter 3000 rise 2 fall 2#配置haproxy web监控,查看统计信息listen statsbind 0.0.0.0:8999 #这⾥得配置内⽹IP,然后⽤外⽹IP访问即可mode httpoption httplogstats enable#设置haproxy监控地址为http://39.101.209.123:8999/rabbitmq-statsstats uri /stats refresh 3slisten rabbitmq_adminbind 0.0.0.0:8001server rabbit1 192.168.1.181:15672server rabbit2 192.168.1.182:15672docker run -d -p 8999:8999 - p 5678:5678 -p 8001:8001 --name haproxy -v /haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:1.6.15。
Haproxy重定向跳转设置-运维小结
Haproxy重定向跳转设置-运维⼩结前⾯已经详细介绍了 , 今天这⾥再赘述下Haproxy的重定向跳转的设置. haproxy利⽤acl来实现haproxy动静分离,然⽽在许多运维应⽤环境中,可能需要将访问的站点请求跳转到指定的站点上,⽐如客户单端访问需要将请求转发到或将http请求重定向到https请求,再⽐如当客户端访问出错时,需要将错误code代码提⽰请求到指定的错误页⾯,诸如此类需求实现,这种情况下就需要利⽤haproxy的重定向功能来达到此⽬的。
Haproxy是⼀款提供⾼可⽤性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应⽤的代理软件,⽀持虚拟主机,它是免费、快速并且可靠的⼀种解决⽅案。
Haproxy特别适⽤于那些负载特⼤的web站点,这些站点通常⼜需要会话保持或七层处理。
Haproxy运⾏在时下的硬件上,完全可以⽀持数以万计的并发连接。
并且它的运⾏模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web 服务器不被暴露到⽹络上。
Haproxy实现了⼀种事件驱动、单⼀进程模型,此模型⽀持⾮常⼤的并发连接数。
多进程或多线程模型受内存限制、系统调度器限制以及⽆处不在的锁限制,很少能处理数千并发连接。
事件驱动模型因为在有更好的资源和时间管理的⽤户端(User-Space) 实现所有这些任务,所以没有这些问题。
此模型的弊端是,在多核系统上,这些程序通常扩展性较差。
这就是为什么他们必须进⾏优化以使每个CPU时间⽚(Cycle)做更多的⼯作。
Haproxy⽀持连接拒绝 : 因为维护⼀个连接的打开的开销是很低的,有时我们很需要限制攻击蠕⾍(attack bots),也就是说限制它们的连接打开从⽽限制它们的危害。
这个已经为⼀个陷于⼩型DDoS攻击的⽹站开发了⽽且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
⼀. Haproxy实现request请求重定向关于Hproxy 请求重定向主要会⽤到: redirect 和redir这两类重定向配置语法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HAProxy的安装和部署考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统,HAProxy的配置和使用还是比较简单的。
下面是自己安装和部署haproxy的记录,比较重要的一点是解决了haproxy + syslog-ng的日志输出问题。
PS: 这个问题费了我好大神:-|PLATFORM: SUSE Linux Enterprise Server 11 (x86_64)1. haproxy的编译安装获取haproxy的源代码官方地址:http://haproxy.1wt.eu/目前最新的版本:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz命令:wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz考虑到版本的更新,具体的安装属性可能会稍有改变,建议在安装前可以大致浏览下haproxy目录下的README和Makefile两个文件。
编译haproxy进入解压后的haproxy的目录,用下列命令进行编译:make TARGET=os ARCH=arch CPU=cpu USE_xxx=1 ...这里着重说明几个常用的选项。
TARGET指定对目标操作系统在编译的时候进行优化,可选择如下值之一:Generic, linux22, linux24, linux24e, linux26, solaris, freebsd, openbsd,Cygwin, custom。
如果不确定目标系统,可以保留默认值generic。
CPU指定对特定的CPU进行优化,可选择如下值之一:generic, i586, i686, ultrasparc, custom。
默认值为generic。
ARCH指定ARCH值可强制编译生成针对一个特定系统架构的程序。
通常用于在一个系统架构的平台上生成针对另一个不同架构平台的程序,比如在一个64位架构的目标系统上编译生成一个32位的程序。
当前可选的值有:x86_64, i386, i486, i586, i686。
注:若选择上述其中的一个值,”-m32”或”-m64”会被添加到CFLAGS和LDFLAGS选项中。
DEBUG指定生成调试信息,可通过指定DEBUG=-DDEBUG_xxx对特定的代码部分生成调试信息。
当前定义的DEBUG宏有:DEBUG_FULL, DEBUG_MEMORY, DEBUG_FSM, DEBUG_HASH和DEBUG_AUTH。
USE_PCRE, USE_STATIC_PCRE 选项可通过指定”USE_xxx=1”表示使用,指定”USE_xxx=”表示禁用。
指定是否使用libpcre库中的正则表达式实现来代替系统的libc库中的实现,考虑到使用libpcre库的效率要比libc高,因此推荐使用此选项。
注:因libpcre还没有广泛普及,因此在动态链接的时候,需确保目标系统安装有libpcre的动态库。
因libpcre还没有广泛普及,因此在动态链接的时候,需确保目标系统安装有libpcre的动态库。
针对上面的问题,可以使用USE_STATIC_PCRE,指定静态链接libpcre。
使用libpcre库编译时,需先确保系统已安装libpcre库。
若不使用libpcre,则默认使用系统libc库中的标准正则表达式实现。
强烈推荐使用static_pcre。
PREFIX指定安装目录,默认为/usr/local,其他诸如文档之类的文件将会在PREFIX指定的相应目录下。
DESTDIR指定安装目录,默认没有设置,如果想将haproxy安装一个沙盒中则可以指定该属性。
考虑到我们的系统为Linux,内核2.6+版本的,CPU为x86_64的,可以使用如下命令编译:make TARGET=linux26 USE_STATIC_PCRE=1安装 HAProxy可以直接将生成的haproxy程序拷贝到你想安装到的目录。
或者执行命令安装到之前指定或默认的目录:sudo make install2. 配置 HAProxyDoc/目录下提供了一些文档,具体的配置说明可以参考在configuration.txt文件。
下面主要说明下配置过程中日志输出问题和一些需要注意的配置选项。
1). 日志的输出问题。
根据说明,haproxy的日志输出使用了系统的日志程序,比如syslogd, syslog-ng。
这两个日志系统使用上其主要的区别就是其配置文件的格式不同,考虑syslog-ng算是syslog的一个升级版,在性能和功能性上都要优于syslogd,因此这里主要介绍的是配置syslog-ng来实现haproxy的日志输出。
我的机器环境,一如既往:SUSE Linux Enterprise Server 11 (x86_64),日志程序默认是syslog-ng。
I. 编辑系统日志服务的配置文件/etc/sysconfig/syslog,查看SYSLOG_DAEMON的值,这个值指定了所要使用的日志服务程序,默认为空,表示自动检测,如果不确定,可以显式指定SYSLOG_DAEMON = “syslog-ng”。
II. 编辑syslog-ng的配置文件/etc/syslog-ng/syslog-ng.conf,在末尾添加如下代码:# for supporting the logging of "HAProxy"source my_src {## process log messages from network:#udp(ip("0.0.0.0") port(514));};filter f_local0 { facility(local0); };filter custom { program("haproxy"); };destination d_haproxy { file("/var/log/haproxy.log"); };log { source(my_src); filter(f_local0); destination(d_haproxy); };#log { source(my_src); filter(custom); destination(d_haproxy); }; # OK, work too注:这里指定了日志输出到/var/log目录下,工作正常,若指定输出到/home等其他子目录下却会失败,具体原因不详,待查。
另,haproxy的日志也可通过此方法将其发送到某个日志服务器用于统一处理,具体可查看syslog-ng的相关文档。
III. 重启syslog服务,使用如下命令:service syslog restartIV. 编辑haproxy的配置文件,假定名为haproxy.cfg在所需要做日志记录的模块(比如,global, default等)添加如下代码:# 使用系统的syslog记录日志(通过udp,默认端口号为514)log 127.0.0.1 local0注:local0 在两个配置文件中的一致。
这会查看日志基本上就OK了。
tail-f/var/log/haproxy.log注:其他须解决的日志相关问题a. haproxy当前的日志全部记录在一个文件中,考虑按日期将其分段成不同文件存储;b. 日志不能输出到除/var/log/外的其他目录2). 一些常用配置选项的说明如下是我使用的一个配置文件,常用的选项说明都已经注释了,需要更全面的描述请查阅configuration.txt文件。
########################################################################## HAProxy 配置文件#########################################################################global# 使用系统的syslog记录日志(通过udp,默认端口号为514)log 127.0.0.1 local0 # info [err warning info debug]chroot /home/bmc/haproxy#限制单个进程的最大连接数maxconn 65535# 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D # daemon# 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式# nbproc 1# 设置debug模式运行,与daemon模式只能互斥,等同于在命令行添加参数 -d# debugpidfile /home/bmc/haproxy/logs/haproxy.pid # not workdefaults# 在连接失败或断开的情况下,允许当前会话被重新分发option redispatch# 设置在一个服务器上链接失败后的重连次数retries 2# 设置服务器分配算法balance roundrobin# 不记录空连接option dontlognull# 设置等待连接到服务器成功的最大时间timeout connect 5000ms# 设置客户端的最大超时时间timeout client 1800000ms# 设置服务器端的最大超时时间timeout server 1800000ms# Enable the sending of TCP keepalive packets on both sides, clients and servers # NOTE: 在服务器CPU强劲的情况下,最好不要开启保活,这样可减少资源消耗#option tcpka##############################统计页面配置##################################listen admin_stat# 监听端口bind *:8011# http的7层模式mode httpoption httploglog global# 统计页面自动刷新时间stats refresh 30s# 统计页面URLstats uri /admin?stats# 统计页面密码框上提示文本stats realm Haproxy\ Statistics# 统计页面用户名和密码设置stats auth admin:admin# 隐藏统计页面上HAProxy的版本信息stats hide-version###########################TCP连接的监听配置################################listen tcp-inbind *:8012mode tcp# 日志记录选项option tcploglog global# 后台服务器# weight -- 调节服务器的负重# check -- 允许对该服务器进行健康检查# inter -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)# rise -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2# fall -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3# maxconn -- 指定可被发送到该服务器的最大并发连接数server localhost 0.0.0.0:9999 weight 3 check inter 2000 rise 2 fall 3server 211.100.66.6 211.100.66.6:9999 weight 3 check inter 2000 rise 2 fall 3server hyb 203.86.46.51:9999 weight 3 check inter 2000 rise 2 fall 3#########################HTTP连接的监听配置################################listen http-inbind *:8013mode httpoption httploglog global# 设置健康检查模式#option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www#option smtpchk# 后台服务器server localhost 0.0.0.0:9998 weight 3 check inter 2000 rise 2 fall 3server 211.100.66.6 211.100.66.6:9998 weight 3 check inter 2000 rise 2 fall 3server hyb 203.86.46.51:9998 weight 3 check inter 2000 rise 2 fall 3在这个配置文件中,使用了listen块,而没有用frontend和backend。