让我们先看看Web2.0和Web1.0在哪些方面有重大区别。现在各种各样的网站,包括博客、论坛、门户网站、社区网站、视频网站等等,都可以在里面找到WEB2.0的影子。在WEB2.0的网站中,有以下几个特点和负载均衡有关:
第一, Web2.0网站的内容变成海量的内容。以前一个网站可能就是几百个G就算多的了,但是现在不一样,现在一个使用WEB2.0技术的网站,内容可能就变成一个几个T、几十个T甚至更多。这是WEB2.0的一个普遍特点,就是内容变成海量了。
第二, Web2.0网站的用户访问、交互性更强。Web1.0网站访问时,也有一定的交互,比如输入域名按回车,那时候有一些交互,内容拿下来就是存在本地页面的内容,在点击刷新或变更地址后才向后台请求新的内容出来。WEB2.0不一样,不断有一些交互性的内容,特别是动态变化内容,比如你看到一个股市变化行情的页面的时候,发现老是在变,行情老是在变,图线经常会变化,随着实时的行情,这就是利用了WEB2.0很多技术在里面,而这种应用的特点,带来的就是给后台服务器的压力就变大了。
第三, WEB2.0网站是以用户为中心,个性化的服务。像博客、播客,是我们自己每个人提供内容,让所有人来看,就变得整个WEB网站服务特点,由一种原来简单集中提供内容,大家浏览的模式,变成我们每个人都可以提供东西,每个人在找我们个性的东西,然后每个人通过寻找个性东西,寻找自己需要的信息。
由于以上特点,很可能会因为Web服务器的性能和相关应用系统的性能,成为外部终端用户访问的瓶颈,所带来的是网络访问的响应延迟,甚至是链接中断。这将大大影响作为网络信息提供者在网络用户中的形象,从而影响到企业关键业务的开展,这将是企业所不希望发生的。
针对以上特点,目前很多Web2.0网站采取利用Cache技术实现负载均衡来减轻Web服务器的压力。也就是在Web服务器的前面摆上一堆SQUID CACHE,SQUID CACHE重复内容会缓冲在CACHE里面,所以下一次有人同样访问同一个内容,就会由CACHE来反映,服务器压力就变轻了,以前访问搜狐,搜狐上面有图片广告,第一个人访问之后,会存在CACHE,第二个人访问的时候,就会从CACHE把这个广告传给了第二个人,CACHE能够很好降低系统压力的手段。
但是,这里面有一个很重要问题,就是Web2.0网站内容可能是由几百个G变成T,甚至上百个T内容,而根据CACHE的工作原理,最后导致CACHE服务器里面的内容会趋于一致!比如有10台CACHE服务器,每个都是100G的存储空间,从系统设计容量来看,可以认为,整个容量应该是1000G(10x100G)。但是CACHE的工作原理是只要访问的东西,就会都存下来。从长期积累来看,最后造成这10台CACHE服务器存储的内容都变成一样的内容,同样的图片在10台上都有。在这种情况下,可以想像一下,随着时间的积累,最后整个网站的CACHE服务器的容量,就不是10台乘100G,而是还是100G,因为内容都一样,实际上缓存内容的总量就是100G。
所以,这种负载均衡方式只是推迟了产生负载压力的时间,没有从根本上解决问题,经过一段时间后,99%的请求还是会回到Web服务器上来的。并且会浪费大量的投资。
那么问题找到了,如何解决这个问题呢?
我们在研究市场上现有产品的时候,梭子鱼公司的负载均衡的解决方案可以很好的来帮助用户解决难题。简单来说就是利用一种负载均衡算法,根据用户访问的URL的不同,可以把请求发送到不同的Cache服务器上,同一个请求精确保证发送到同一个Cache服务器上。这样,按照前面的案例,最后整个系统设计容量基本上就是1000G了。也就真正使每台服务器投资发挥了效果,企业在CASH上的投资真正发挥了效率。
这种解决方案的另外一个好处就是:由于CASH的设计容量,比原来提高了,所以就减少了很多回服务器的请求,进而降低的服务器的负载,用户的响应速度就会变快,用户体验满意度也会随之增加,不会影响到企业关键业务的开展,彻底解决Cache方案带来的问题。
这篇实用文章介绍如何将pfSense 2.0配置成你那些Web服务器的负载均衡器。这篇实用文章假设你已经安装了一个pfSense设备和至少两台Apache服务器,并且运行在你的网络上;还假设你具备了pfSense方面的一些知识。要求
一台设备用于安装pfSense 2.0(如果这是你的边缘防火墙,我会建议物理机器)。
至少两台Apache2服务器(这些可以是虚拟服务器)。
对Apache服务器进行了配置,以便以某种方式同步Web文件(rsync/corosync或通过Web服务器维持文件版本最新的另一个选项)。
配置pfSense
pfSense使用负载均衡器,将某些类型的流量带来的负载分摊到多台服务器上;如果你有多台服务器用于托管运行应用程序,这很好;你可以将负载分摊到所有服务器上,而不是把负载全扔给一台服务器、导致不堪重负。
可以入手了,先点击“Services”(服务),然后点击“Load Balancers”(负载均衡器),然后点击“Monitor”(监视器)选项卡。
要添加一个新条目,点击“Plus”(添加)按钮,指定“Name”(名称)和“Description”(描述,在这个示例中,我会使用ApacheClusterMon作为名称和描述),将类型设成“HTTP”,然后为“Host”(主机)设置一个未使用的IP地址(我们随后会创建虚拟服务器的IP,以便分配给故障切换服务器组),任由“HTTP Code”(HTTP代码)设成“200 OK”。需要的话,然后点击“Save”(保存),使更改生效。
现在我们要创建服务器池。点击“Pools”(服务器池)选项卡,点击“Plus”(添加)按钮,即可添加新的服务器池。
指定一个名称(ApacheSrvPool将用在我的示例中)。将“Mode”(模式)设成“Load Balance”(负载均衡),然后将“Port”(端口)设成“80”(你可以让pfSense对其他端口上的其他应用程序实现负载均衡),将“Monitor”(监视器)设成你之前创建的监视器配置,并且指定你希望在服务器池中的所有Web服务器的IP地址,需要的话,点击“Save”(保存),使更改生效。
接下来点击“Virtual Servers”(虚拟服务器)选项卡,点击“Plus”(添加)按钮,添加一个新条目。指定“Name”(名称)和“Description”(描述),然后用你之前选择的未使用IP地址来设置“IP Address”(IP地址),将“Port”(端口)设成“80”,然后将“Virtual Server Pool”(虚拟服务器池)设成你之前创建的服务器池,点击“Submit”(提交),使更改生效。
就这样,你刚配置好了pfSense,对你的Web服务器之间的网络流量实现负载均衡。
顺便提一下,如果任何一台服务器没有给出200 OK状态这样的回应(pfSense定期向你的Web服务器发送请求,以确定它们是否正常运行),服务器池就会处于离线停运状态。要避免出现停运,最好的办法就是配置故障切换系统(下一篇文章会有介绍)。
HAProxy是一款反向代理服务器工具,通过它,可以实现负载均衡。它支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。新的1.3引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend.利用HAPorxy实现负载均衡
1. 利用HAProxy实现负载均衡
192.168.169.137 (haproxy)———负载均衡———-(192.168.169.117192.168.169.118)
安装配置HAproxy
cd /usr/local/
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.2.tar.gz
tar zxvf haproxy-1.3.14.2.tar.gz
mv haproxy-1.3.14.2 haproxy
cd haproxy
make TARGET=linux26
2. 创建配置文件
# vi haproxy.cfg
global
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 2 #通过nbproc多设置几个haproxy并发进程,这样每个进程的task_queue相对就会短很多,性能自然就能提高不少
#pidfile /var/run/haproxy-private.pid
defaults
log global
mode http
option httplog
option dontlognull
log 127.0.0.1 local3
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webfarm 0.0.0.0:80
mode http
stats uri /haproxy-stats #监控haproxy状态
stats realm Haproxy\ statistics
stats auth netseek:52netseek #设置状态监控的用户名为netseek密码为52netseek
balance roundrobin #负载均衡算法
cookie SERVERID insert indirect
option httpclose #
option forwardfor #apache日志转发功能
option httpchk HEAD /check.txt HTTP/1.0 #健康检测
server app_bbs1 192.168.169.117:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server app_bbs2 192.168.169.118:80 cookie app1inst2 check inter 2000 rise 2 fall 5
syslog.conf里加一行
local3.* /var/log/haproxy.log
# touch /var/log/haproxy.log
# chown haproxy:haproxy /var/log/haproxy.log
# chmod u+x /var/log/haproxy.log
# tail –f /var/log/harpoxy.log 监控日志
# ./haproxy -f haproxy.cfg 启动服务.
监控状态图示http://192.168.169.137/haproxy-stats ,输入用户名密码查看状态。
后端apache日志处理
配置httpd.conf
LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %b ” combined
CustomLog /var/log/httpd/access_log combined
虚拟主机不记录检测日志:
SetEnvIf Request_URI “^/check\.txt$” dontlog
LogLevel warn
ErrorLog /var/log/httpd/vhost_error.log
CustomLog /var/log/httpd/vhost_access.log combined env=!dontlog
相关介绍
#./haproxy –help //haproxy相关命令参数介绍.
haproxy -f <配置文件>[-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p <pid文件>] [-s] [-l] [-dk]
[-ds] [-de] [-dp] [-db] [-m <内存限制M>] [{-sf|-st} pidlist...]
-d 前台,debug模式
-D daemon模式启动
-q 安静模式,不输出信息
-V 详细模式
-c 对配置文件进行语法检查
-s 显示统计数据
-l 显示详细统计数据
-dk 不使用kqueue
-ds 不使用speculative epoll
-de 不使用epoll
-dp 不使用poll
-db 禁用后台模式,程序跑在前台
-sf <pidlist>
程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
-st <pidlist>
程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)