192.168.1.1-路由器设置 > 192.168.1.1 > 192.168.1.100 >

使用Nginx、Keepalived构建文艺负载均衡

文章摘要

对于一个访问量日益增加的网站架构而言,从单机到集群、从集群到分布式,架构演化是必然的。笔者现在的在刚接手时算是单机LAMP。在单机LAMP时,由于访问量逐渐变大,网站会经常出现打不开的情况,到后来为了满足业务访问需求,将架构改为CDN+Nginx负载均衡+LNMP+代码层请看如下

 

  对于一个访问量日益增加的网站架构而言,从单机到集群、从集群到分布式,架构演化是必然的。笔者现在的在刚接手时算是单机LAMP。在单机LAMP时,由于访问量逐渐变大,网站会经常出现打不开的情况,到后来为了满足业务访问需求,将架构改为CDN+Nginx负载均衡+LNMP+代码层缓存+MySQL主从,从而将网站整体负载性能提升15倍。

  AD:

  【51CTO独家特稿】面对网站服务器端负载增大的问题,是“拿15万¥买一台服务器”来解决,还是靠“加三倍服务器”来解决?还是用其它一些办法?

  对于一个访问量日益增加的网站架构而言,从单机到集群、从集群到分布式,架构演化是必然的。

  接手,分析瓶颈,扩展架构

  笔者现在的在刚接手时算是单机LAMP。在单机LAMP时,由于访问量逐渐变大,网站会经常出现打不开的情况,为了解决这个问题在LAMP前端临时加了一台vanish来缓存一些静态文件,从而减轻了web服务器的负载。再到后来为了满足业务访问需求,将架构改为CDN+Nginx负载均衡(反向代理)+LNMP+代码层缓存+MySQL主从,从而将网站整体负载性能提升15倍,且访问速度也得到很大提升。

  负载均衡为什么要选择使用Nginx呢?

  普通负载均衡用LVS,文艺负载均衡用Nginx/F5/HAproxy,负载均衡用NLB

  LVS:四层负载均衡的典型代表,目前已经被添加到linux发行版的内核。LVS用于较为成熟,因此不再做类述,在此推荐一篇不错的LVS文章:《互联网运营智慧》第六章负载均衡及服务器集群(LVS)。

  Nginx/F5/HAproxy:均为七层负载均衡,F5为商业设备,功能强大,但价格不菲,所以在此不做讨论;HAproxy为重量级的七层负载均衡/反向代理程序,一般应用于大中型站点;而Nginx虽然属于轻量级产品,但是功能毫不逊色与HAproxy,如可以对静态文件可以实现缓存、可以通过URL、目录结构、静动分离对网站实现分流,还可以实现对后端服务器状态码健康检测、对网络依赖较小、对虚拟主机支持友好等等,这也是笔者选择Nginx来做负载均衡的原因。

  NLB:windows下的东东,性能、可操作性可想而知。在此也提醒一下各位同仁,针对HTTP类的应用千万不要选择使用windows,如同样的业务放linux上只需两台服务器,而放windows上可能会需要三台甚至更多,运维/硬件采购成本也会增加,同时license也是一笔不小的费用。国内较大的一些web站点后端架构为windows的分别有京东商城、当当网、凡客诚品、麦包包。

  使用Nginx构建负载均衡时需要注意的几个问题

  Session同步:由于笔者所的架构硬件预算受限,所以在整个架构中没有共享存储,针对于session处理,笔者使用ip_hash来解决后端服务器session问题。另外,关于存储session,推荐使用redis或memcached(感谢小卫、小灰狼两位兄弟的)。

  网站代码存储:还是由于没有共享存储,所以笔者每台web服务器本地均存放一份代码,为了多台web服务器的代码数据一致性,使用rsync+inotify实现动态同步(具体实现方在后面的文章中介绍)。倘若硬件条件允许的情况下,推荐使用NFS来存储;若考虑到NFS无法满足性能需求,可以将NFS的硬盘换成SSD或者使用分布式文件系统来解决。

  负载均衡模式选择:在不受session困扰的情况下,负载均衡模式可以使用weight,因为ip_hash会有导致后端服务器负载不均的情况出现。

  开始部署Nginx和Keepalived

  为了避免负载均衡出现单点故障,所以使用keepalived对Nginx负载均衡做了HA,也就是说当主负载均衡发生软硬件故障时,负载均衡服务将有备用负载均衡服务器自动接管服务,拓扑如下:

  Vip:192.168.1.100

  Nginx-proxy-master:192.168.1.101

  http 192.168.1.100Nginx-proxy-backup:192.168.1.102

  安装Nginx与Keepalived

  在Nginx-proxy-master和Nginx-proxy-backup上分别安装Nginx、Keepalived,两台主机安装步骤相同

  安装Nginx

  #yum-yinstallpcrepcre-devel#useraddwww-s/sbin/nologin#tarzxvfnginx-0.7.62.tar.gz#cdnginx-0.7.62#./configure\--prefix=/usr/local/nginx\--user=www\--group=www\--with-http_stub_status_module\--with-http_ssl_module#make&&makeinstall

分享到:

tags:http 192.168

最近更新-关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明
CopyRight2009-2011 All Rights Reserved 192.168.1.1 路由器设置jmqy.com