HAProxy的安装部署详细
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。
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 #由于后端同组的机器只有⼀台,这⾥就设置⼀台;如果后端是多台的话,就都加上,进⾏负载。
