Linux系统下配置HTTP负载均衡系统以扛流量增加
随着网络流量的增加,服务器开始面临繁重负载,这时就需要搭配一套HTTP负载均衡系统了,那么Linux下该如何配置HTTP负载均衡系统呢?随小编一起来学习一下吧。
如今对基于互联网的应用和服务的要求越来越大,这给广大的IT管理员施加了越来越大的压力。面对突如其来的流量猛增、自生的流量增加或者是内部挑战(比如硬件故障和紧急维护),不管怎样,你的互联网应用都必须保持随时可用。连现代化的开发运营和持续交付做法也会危及互联网服务的可靠性和一贯表现。
无法预测或缺乏一贯的表现是你所无法承受的。那么,我们如何能消除这些缺点呢?在大多数情况下,一套合适的负载均衡解决方案有望满足这个要求。今天我将为各位介绍如何使用HAProxy搭建一套HTTP负载均衡系统。
HTTP负载均衡简介
HTTP负载均衡是一种网络解决方案,负责在托管相同应用内容的几台服务器之间分配进入的HTTP或HTTPS流量。由于在多台可用服务器之间均衡了应用请求,负载均衡系统就能防止任何应用服务器变成单一故障点,因而提高了整体的应用可用性和响应能力。它还让你可以随着不断变化的工作负载,轻松地缩小/扩大部署的应用系统的规模,只需添加或删除额外的应用服务器。
哪里使用负载均衡、何时使用?
由于负载均衡系统改进了服务器的利用率,最大限度地提高了可用性,只要你的服务器开始面临繁重负载,或者正为一个较庞大的项目规划架构,就应该使用它。事先规划好负载均衡系统的用途是个好习惯。那样,未来你需要扩展环境规模时,它会证明其用途。
HAProxy是什么东东?
HAProxy是一种流行的开源负载均衡和代理系统,面向GNU/Linux平台上的TCP/HTTP服务器。HAProxy采用了单一线程的事件驱动型架构而设计,它能够轻松地处理10G网卡线路速度,现广泛应用于许多生产环境中。其功能特性包括:自动检查健康状况、可定制的负载均衡算法、支持HTTPS/SSL以及会话速率限制等。
我们在本教程中要达到什么样的目的?
在本教程中,我们将逐步介绍为HTTP网站服务器配置基于HAProxy的负载均衡系统这个过程。
前提条件
你至少需要一台(最好是两台)网站服务器来证实所搭建负载均衡系统的功能。我们假设,后端HTTP网站服务器已经搭建并运行起来。
将HAProxy安装到Linux上
就大多数发行版而言,我们可以使用你所用发行版的软件包管理器来安装HAProxy。
将HAProxy安装到Debian上
在Debian中,我们需要为Wheezy添加向后移植功能。为此,请在/etc/apt/sourceslistd中创建一个名为“backportslist”的新文件,其内容如下:
deb http://cdndebiannet/debian wheezybackports main
更新你的软件库数据,并安装HAProxy。
# apt get update # apt get install haproxy
将HAProxy安装到Ubuntu上
# apt get install haproxy
将HAProxy安装到CentOS和RHEL上
# yum install haproxy
配置HAProxy
在本教程中,我们假设有两台HTTP网站服务器已搭建并运行起来,其IP地址分别为1921681002和1921681003。我们还假设,负载均衡系统将在IP地址为1921681004的那台服务器处进行配置。
为了让HAProxy发挥功用,你需要更改/etc/haproxy/haproxycfg中的几个项目。这些变更在本章节中予以描述。万一某个配置对不同的GNU/Linux发行版而言有所不同,会在相应段落中加以注明。
1 配置日志功能
你首先要做的工作之一就是,为你的HAProxy建立合适的日志功能,这对将来进行调试大有用处。日志配置内容位于/etc/haproxy/haproxycfg的global部分。下面这些是针对特定发行版的指令,用于为HAProxy配置日志。
CentOS或RHEL:
要想在CentOS/RHEL上启用日志功能,把:
log 127001 local2
换成:
log 127001 local0
下一步,在/var/log中为HAProxy创建单独的日志文件。为此,我们需要改动当前的rsyslog配置。为了让配置简单而清楚,我们将在/etc/rsyslogd/中创建一个名为haproxyconf的新文件,其内容如下。
$ModLoad imudp $UDPServerRun 514 $template Haproxy,“%msg%/n” local0=info /var/log/haproxylog;Haproxy local0notice /var/log/haproxystatuslog;Haproxy local0 ~
该配置将把基于$template的所有HAProxy消息隔离到/var/log中的日志文件。现在,重启rsyslog,让变更内容生效。
# service rsyslog restart
Debian或Ubuntu:
要想在Debian或Ubuntu上为HAProxy启用日志功能,把:
log /dev/log local0 log /dev/log local1 notice
换成:
log 127001 local0
下一步,为HAProxy配置单独的日志文件,编辑/etc/rsyslogd/中一个名为haproxyconf的文件(或者Debian中的49-haproxyconf),其内容如下。
$ModLoad imudp $UDPServerRun 514 $template Haproxy,“%msg%/n” local0=info /var/log/haproxylog;Haproxy local0notice /var/log/haproxystatuslog;Haproxy local0 ~
该配置将把基于$template的所有HAProxy消息隔离到/var/log中的日志文件。现在,重启rsyslog,让变更内容生效。
# service rsyslog restart
2 设置默认值
下一步是为HAProxy设置默认变量。找到/etc/haproxy/haproxycfg中的defaults部分,把它换成下列配置。
log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 20000 contimeout 5000 clitimeout 50000 srvtimeout 50000
上述配置推荐HTTP负载均衡器使用,但可能不是最适合你环境的解决方案。如果那样,请参阅HAProxy参考手册页,进行适当的改动和调整。
3 网站服务器集群的配置
网站服务器集群(Webfarm)的配置定义了可用的HTTP服务器集群。我们所建负载均衡系统的大部分设置都将放在这里。现在,我们将创建一些基本的配置,我们的节点将在这里加以定义。把从frontend部分到文件末尾的所有配置换成下列代码:
listen webfarm :80 mode http stats enable stats uri /haproxy?stats stats realm Haproxy/ Statistics stats auth haproxy:stats balance roundrobin cookie LBN insert indirect nocache option httpclose option forwardfor server web01 1921681002:80 cookie node1 check server web02 1921681003:80 cookie node2 check
“listen webfarm :80”这一行定义了我们的负载均衡系统将侦听哪些接口。出于本教程的需要,我将该值设为“”,这让负载均衡系统侦听我们的所有接口。在实际场景下,这可能不合意,应该换成可从互联网来访问的某个接口。
stats enable stats uri /haproxy?stats stats realm Haproxy/ Statistics stats auth haproxy:stats
上述设置声明,可以在http://《load-balancer-IP》/haproxy?stats处访问负载均衡系统的统计数字。这种访问由简单的HTTP验证以及登录名“haproxy”和密码“stats”来确保安全。这些设置应该换成你自己的登录信息。如果你不想让这些统计数字被人看到,那么可以完全禁用它们。
下面是HAProxy统计数字的一个例子。
“balance roundrobin”这一行定义了我们将使用哪种类型的负载均衡。在本教程中,我们将使用简单的轮叫调度算法,这对HTTP负载均衡来说完全绰绰有余。HAProxy还提供了其他类型的负载均衡:
•leastconn:连接数最少的服务器优先接收连接。
•source:对源IP地址进行哈希处理,用运行中服务器的总权重除以哈希值,即可决定哪台服务器将接收请求。
•uri:URI的左边部分(问号前面)经哈希处理,用运行中服务器的总权重除以哈希值。所得结果决定哪台服务器将接收请求。
•url_param:变量中指定的URL参数将在每个HTTP GET请求的查询串中进行查询。你基本上可以将使用蓄意制作的URL(crafted URL)的请求锁定于特定的负载均衡节点。
•hdr(name):HTTP头《name》 将在每个HTTP请求中进行查询,被定向到特定节点。
“cookie LBN insert indirect nocache”这一行让我们的负载均衡系统存储持久性cookie,这让我们得以准确查明集群中的哪个节点用于某一个会话。这些节点cookie将与指定的名称一并存储起来。在我们这个例子中,我使用了“LBN”,但你可以指定自己喜欢的任意名称。节点将为该cookie把字符串作为一个值而存储起来。
server web01 1921681002:80 cookie node1 check server web02 1921681003:80 cookie node2 check
上述部分对网站服务器节点集群进行了定义。每台服务器都用内部名称(比如web01和web02)、IP地址和独特的cookie串来表示。cookie串可以定义为你需要的任何名称。我使用了简单的node1、node2 。。。 node(n)。
启动HAProxy
你完成了配置工作后,可以启动HAProxy,验证一切按预期运行。
在Centos/RHEL上启动HAProxy
使用下列指令,让HAProxy能够在系统启动后启动,并打开它:
# chkconfig haproxy on # service haproxy start
当然,别忘了启用防火墙中的端口80,如下所示。
CentOS/RHEL 7上的防火墙:
# firewallcmd permanent zone=public addport=80/tcp # firewallcmd reload
CentOS/RHEL 6上的防火墙:
把下面这一行添加到/etc/sysconfig/iptables中的这部分“:OUTPUT ACCEPT”:
A INPUT m state state NEW m tcp p tcp dport 80 j ACCEPT
然后重启iptables:
# service iptables restart
在Debian上启动HAProxy
使用下列指令启动HAProxy:
# service haproxy start
别忘了启用防火墙中的端口80,为此把下面这一行添加到/etc/iptablesuprules:
A INPUT p tcp dport 80 j ACCEPT
在Ubuntu上启动HAProxy
让HAProxy能够在系统启动后启动,只要在/etc/default/haproxy中将“ENABLED”选项设为“1”:
ENABLED=1
启动HAProxy:
# service haproxy start
然后启用防火墙中的端口80:
# ufw allow 80
测试HAProxy
为了检查HAproxy是否在正常工作,我们可以执行下列步骤:
首先,用下列内容准备好testphp文件:
《?php header(‘Content-Type: text/plain’); echo “Server IP: ”。
该PHP文件将告诉我们哪台服务器(即负载均衡系统)转发请求,哪台后端网站服务器实际处理请求。
把该PHP文件放到这两台后端网站服务器的根目录下。现在,使用curl命令,从负载均衡系统(1921681004)提取这个PHP文件。
# chkconfig haproxy on # service haproxy start nbsp;curl http://1921681004/testphp
我们多次运行这个命令时,应该会看到下面两个输出交替出现(由于轮叫调度算法)。
Server IP: 1921681002
X-Forwarded-for: 1921681004
Server IP: 1921681003
X-Forwarded-for: 1921681004
如果我们停止这两台后端网站服务器中的其中一台,curl命令应该仍会执行,将请求定向到另一台可用的网站服务器。
结束语
至此,你应该有了一套完全实用的负载均衡系统,能够在轮叫循环模式下为你的网站节点提供请求。与往常一样,你可以随意更改配置,让它更适合自己的基础设施。希望本教程帮助你让自己的网站项目具有更强的抗压力和更高的可用性。
正如大家已经注意到的那样,本教程所含的设置适用于仅仅一套负载均衡系统。这意味着,我们把一个单一故障点换成了另一个单一故障点。在实际场景下,你应该部署至少两套或三套负载均衡系统,以防范可能出现的任何故障,但这不在本教程的讨论范围之内。
上面就是Linux系统下配置HTTP负载均衡系统的方法介绍了,这里主要使用的是HAProxy,且只介绍了配置一套负载均衡系统的方法,赶紧试试看吧。
Internet的规模每一百天就会增长一倍,客户希望获得7天24小时的不间断可用性及较快的系统反应时间,而不愿屡次看到某个站点“Server Too Busy”及频繁的系统故障。
网络的各个核心部分随着业务量的提高、访问量和数据流量的快速增长,其处理能力和计算强度也相应增大,使得单一设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量的需求。于是,负载均衡机制应运而生。
负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
什么是负载均衡
负载均衡(Load Balance)
由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。
负载均衡技术主要应用
1、DNS负载均衡
最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。
2、代理服务器负载均衡
使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
3、地址转换网关负载均衡
支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。
4、协议内部支持负载均衡
除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的层。
5、NAT负载均衡
NAT(Network Address Translation 网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。
6、反向代理负载均衡
普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
7、混合型负载均衡
在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,我们可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。
哪些地方需要使用负载均衡
在国内的环境中有三个地方可以使用到这个功能,首先应该是网吧,网吧对带宽的要求较高,而因为国内ISP混乱的情况,有些网吧也会用到多线路接入,所以负载均衡对网吧是很实用的功能,其次是企业和小区运营商。企业也会有这样的需求,有些企业对网络要求也很高,甚至没有网络就不能办公。另外就是小区运营商了,小区运营商也有很多使用多线路接入,这样负载均衡也就很适合了。
如何使用负载均衡
现在很多路由都带有负载均衡功能,可以直接在路由上设置然后使用,比如软路由海蜘蛛、ROS等,硬路由有侠诺,飞鱼星等。需要注意的是在使用前了解清楚路由的具体的型号支不支持。
要判断服务器负载主要是处理器,内存,磁盘,网络几个方面来决定1,处理器,简单的办法就是打开任务管理器,看CPU的使用率,一般长期保持在60%以上,就是负载比较重的表现。2,内存,也是打开内存处理器,看物理内存总数和认可用量总数,始终保
通过负载均衡可以解决以下问题:
1、解决网络拥塞问题,服务就近提供。
2、为用户提供更好的访问质量。
3、提高服务器响应速度。
4、提高服务器及其他资源的利用效率。
网络负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。
通过负载均衡技术,将外部发送来的请求,均匀分配到对称结构中的每一台服务器上,而接收到请求的服务器则独立地回应客户的请求。
网络负载均衡的主要应用
1、DNS负载均衡
在DNS中为多个地址配置同一个名字,查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。
2、代理服务器
代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
3、负载均衡器
负载均衡器采用各种分配算法把网络请求分散到一个服务器集群中的可用服务器上去,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间。
有些则以两块网络适配器将负载均衡功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。当Web服务器为图像服务、安全套接层会话或数据库事务而进行优化时,负载均衡器可以发挥特别功效。
你好,你说的这种方式最常用的就是DDOS攻击,DDOS攻击就是通过不停的要求服务器给予响应,然后自己不做出回应,通过无数多的这样的无效访问来使服务器的应答机制彻底丧失机能。但是这要取决于你的电脑的性能,是否可以把一台服务器拖垮。。。现在的服务器性能,通过ping是不可能ping死的。。
斗鱼吐泡泡了该做什么
斗鱼直播是目前国内用户数量最多的游戏直播平台之一,但是最近传出斗鱼出现了许多弹出错误“吐泡泡”的问题,引起了广大用户的不满,那么斗鱼吐泡泡了该做什么呢?
1、提高服务器稳定性
斗鱼直播的吐泡泡问题是由于服务器压力过大、稳定性差所导致的,因此,要解决这个问题就要提升服务器的稳定性。首先,斗鱼直播应该增加服务器的负载能力,让直播流畅的同时,也能够支持更多的观众同时在线。其次,可以通过优化线路、网络配置等方面来保障服务器的稳定运行。
这样既可以满足用户高清流畅观看的需求,也可以保证直播过程中不会出现吐泡泡等问题。
2、完善系统及应急机制
当直播平台出现问题时,用户第一时间会想到联系客服或得到及时的处理,但是如果斗鱼客服无法处理该问题时,就需要及时采取应急措施。这就要求斗鱼直播点对点的解决问题,比如可以建立专业的技术团队来对这些问题进行分析、解决。同时,斗鱼直播还要完善自身的维护系统,加强系统的监视巡查和技术支持体系的建设,通过预防和排除可能出现的故障,保障用户观看的顺利性。
3、加强用户体验及服务
除了提高服务器稳定性、完善系统及应急机制外,还需要加强用户体验及服务。对于吐泡泡问题,我们不仅需要解决问题,还需要加强与用户的沟通。斗鱼直播可以通过博客、微博、社区、活动等多方位,与用户建立尽可能多的沟通渠道。这样不仅可以让用户更好的了解斗鱼直播,同时也方便用户提出建议、反馈问题,并得到相应的解决。
另外,斗鱼直播也应该注意提高客户服务质量,增加客服人员的数量和服务效率,及时解决用户遇到的问题和疑问,使用户的使用和观看过程更加愉悦。
4、合理引导用户行为
斗鱼直播应该在运营上加大对用户行为的引导,尤其是在直播过程中一些不当行为的干扰对流畅观看的影响。比如,对于用户投诉频道刷屏、恶意链接等不良行为的,需要及时进行处罚处理。同时,也要设计更多互动玩法,例如开启用户送礼的互动活动,增加用户的粘性,提高平台的用户活跃度。
总结
通过以上几个方面的措施,可以有效解决斗鱼直播吐泡泡等问题。斗鱼直播作为游戏直播行业的一匹黑马,要想得到更多用户的满意和支持,需要多方位加强优化和服务。只有让用户满意了,才能得到更好的发展。
随着网站、应用访问量的增加,一台服务器已经不能满足应用的需求,而需要多台服务器集群,这时就会用到负载均衡
它的好处
负载均衡优化了访问请求在服务器组之间的分配,消除了服务器之间的负载不平衡,从而提高了系统的反应速度与总体性能;
负载均衡可以对服务器的运行状况进行监控,及时发现运行异常的服务器,并将访问请求转移到其它可以正常工作的服务器上,从而提高服务器组的可靠性采用了负均衡器器以后,可以根据业务量的发展情况灵活增加服务器,系统的扩展能力得到提高,同时简化了管理。
负载均衡有分硬件负载和软件。
1
硬件方面,可以用F5做负载,内置几十种算法。
2
软件方面,可以使用反向代理服务器,例如apache,Nginx等高可用反向代理服务器。
利用DNSPOD智能解析的功能,就可以实现多台机器负载均衡
首先你用一台高配置的机器来当数据库服务器然后把网站的前端页面复制成多份,分别放在其他的几台机器上面再用DNSPOD做智能解析,把域名解析指向多个服务器的IP,DNSPOD默认就有智能分流的作用,也就是说当有一台机器的资源不够用时会自动引导用户访问其他机器上这是相对来讲比较简单的实现负载均衡的方法
0条评论