2014年8月18日星期一

nginx+keepalived¨÷úíˇń÷

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
nginx+keepalived¨÷úíˇ�÷  阅读原文»

用户名:zys467754239 文章数:71 评论数:17
访问量:8733:1340:836:4 注册日期:2012-04-18

nginx+keepalived构建主备负载均衡代理服务器

一、架构

wKiom1Pw4VeguISrAAXfAzjemJ0744.jpg

二、唠叨一会原理:

1、nginx

Nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,

从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。

2、keepalived

Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接,作用:

主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现

3、单点故障

Nginx有很强代理功能,但是一台nginx就形成了单点,现在使用keepalived来解决这个问题,keepalived的故障转移时间很短.

Nginx+keepalived双机实现nginx反向代理服务的高可用,一台nginx挂掉之后不影响应用也不影响内网访问外网.

4、此架构需要考虑的问题

1)Master没挂,则Master占有vip且nginx运行在Master上

2)Master挂了,则backup抢占vip且在backup上运行nginx服务

3)如果master服务器上的nginx服务挂了,则vip资源转移到backup服务器上

4)检测后端服务器的健康状态

5、叙述

Master和Backup两边都开启nginx服务,无论Master还是Backup,当其中的一个keepalived服务停止后,vip都会漂移到keepalived服务还在的节点上,

如果要想使nginx服务挂了,vip也漂移到另一个节点,则必须用脚本或者在配置文件里面用shell命令来控制。

首先必须明确后端服务器的健康状态检测keepalived在这种架构上是无法检测的,后端服务器的健康状态检测是有nginx来判断的,但是nginx的检测机制有一定的缺陷,后端服务器某一个宕机之后,nginx还是会分发请求给它,在一定的时间内后端服务响应不了,nginx则会发给另外一个服务器,然后当客户的请求来了,nginx会一段时间内不会把请求分发给已经宕机的服务器,但是过一段时间后,nginx还是会把分发请求发给宕机的服务器上。

三、准备工作

系统版本:CentOS6.464bit
nginx版本:nginx-1.4.7.tar.gz
keepalived版本:keepalived-1.2.7.tar.gz
nginx+keepalived主192.168.0.189master
nginx+keepalived辅192.168.0.200badkup
vip 192.168.0.250vip

四、安装nginx和keepalived服务

1、安装nginx服务[分别在master机器和backup机器安装nginx服务]

#time2014-08-18
yum-yinstallgccgcc-c++makeunzipwgetvimopenssh-clients
#支持重写rewrite,正则表达式
unzippcre-8.33.zip
./configure--prefix=/usr/local/pcre
make&&makeinstall
tarxfzlib-1.2.8.tar.gz
./configure--prefix=/usr/local/zlib
make&&makeinstall
tarxfopenssl-1.0.0l.tar.gz
cdopenssl-1.0.0l
./config--prefix=/usr/local/openssl
make&&makeinstall
tarxfnginx_mod_h264_streaming-2.2.7_update.tar.gz
#创建运行nginx服务的账号和组
groupadd-rnginx
useradd-gnginx-r-s/sbin/nologinnginx
tarxfnginx-1.4.7.tar.gz
--group=nginx\
--prefix=/usr/local/nginx\
--with-pcre=../pcre-8.33\
--with-zlib=../zlib-1.2.8\
--with-openssl=../openssl-1.0.0l\
--with-http_stub_status_module\
--pid-path=/var/run/nginx/nginx.pid\
--lock-path=/var/lock/nginx.lock\
--with-http_gzip_static_module\
--http-proxy-temp-path=/var/tmp/nginx/proxy/\
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/\
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi\
--http-scgi-temp-path=/var/tmp/nginx/scgi\
RAID?  阅读原文»

传统RAID的性能瓶颈点在哪里?

众所周知,传统RAID在数据重构方面表现极差,当一块盘发生故障之后,需要几十个小时才能将故障盘中的数据恢复。特别在数据重构的过程中,上层文件系统的性能也会受到极大的影响。并且在应用数据压力的情况下,数据重构的IO和应用的IO交错在一起,导致恶性循环,使得数据重构和应用IO性能都表现极差。

大容量磁盘对传统RAID的最大挑战就在于此。两年前或者更早,存储界的很多公司开始寻找下一代磁盘RAID的技术,其中最有可能和新意的就是DDPDynamic Disk Pool),国内的华为将这种技术称之为RAID2.0DDP最大的特征在于将RAID构建在一系列随意的CHUNK之上,而不是将若干个磁盘做成RAID。这些CHUNK是磁盘中的资源块,可以是1GB或者更大的容量。在DDP中普遍会存在Storage Pool的概念,这个概念会将这些CHUNK资源块组织起来,池化。在这个池中通过一定的算法获取一些资源块CHUNK,然后在这些CHUNK的基础上组建RAID。目前,应该有很多的存储公司都在研发这种新型的RAID。咋看一眼,这种技术好像很简单,其实在现象的表面隐藏了很多的技术问题,并且不是很容易解决的。

本文不想过多的讨论DDP的技术细节,最主要想讨论一下为什么采用DDP就能解决传统磁盘RAID的问题,到底磁盘RAID的性能瓶颈点在哪里?

为了分析得出这个问题的答案,先来看一下磁盘RAID数据重构的过程。

wKiom1Pwz3myIBSgAAEIUKigAsk986.jpg

通过上图我们可以看到,当一块磁盘发生故障以后,处于同一个Disk Group中的其他盘将会存在大量的读操作,去获取条带数据,然后生成故障盘上的数据,最后写入Spare盘。这是一个完整的数据重构过程。所有的读发生在故障盘所处的Disk Group中,写操作只存在Spare上。因此,我们很容易的发现两个性能瓶颈点:

  • Spare盘是写操作性能瓶颈点。如果单盘写入,那么对于SAS盘,其最大的写入带宽可以达到130MB/s左右

  • Disk Group中的幸存盘是读操作性能瓶颈点。由于所有的数据都是从一个Disk Group中的幸存盘上读取,所以,条带的最大读取带宽只能达到130MB/s左右

由于上述两大性能瓶颈点的存在,传统RAID的数据重构带宽理论上限只能达到130MB/s。要想突破这个理论上限值,只能破除这两个性能瓶颈点。

DDP就能破除这两个性能瓶颈点。为什么呢?因为DDP是基于CHUNK来做RAID的,CHUNK又是从一个Storage Pool中获取的。因此,RAID中的CHUNK在磁盘上的布局不再像传统RAIDDisk Group那样非常的规整。也就是说,DDP可以达到:

  • Spare CHUNK的数据写入操作不再局限在一块盘上面,而是可以在整个Storage Pool中任意布局。这样,就不再存在单盘写入性能瓶颈的问题了

  • 重构条带数据读操作也不再局限在一个Disk Pool中了,而是分布在整个Storage Pool上,当Storage Pool中的磁盘数量足够多时,条带读性能将不再局限在单盘性能上了

通过上述两点,DDP完全破除了传统RAID的两大性能瓶颈点,从而可以使得数据重构的性能大幅度提升。下图就是采用DDP技术之后,每块磁盘上的读写IO分布。

wKioL1Pw0ILw06v1AAExun48leY631.jpg

从上图可以看出,在数据重构的过程中,每块磁盘上同时存在读和写操作,而不像传统RAID那样,只有若干块盘存在读操作,一块盘存在写操作。并且由于读写混合之后,磁盘会存在抖动,因此,从单盘的角度来看,无论是读还是写操作性能都大大降低了。但是,从总体来看,由于参与数据重构的磁盘数量增加了,因此,总体的数据重构性能增强了。从这句话里我们也可以理解出来,DDP技术的应用是有局限的,当磁盘数量不是很多的情况下,DDP技术无法发挥性能优势,发而会导致性能下降。当前,SSD技术正在悄然兴起,并且其没有读写混合的性能问题,因此, DDP技术在SSD上面就显得非常合适了。

引入DDP技术之后最大的好处是可以提升RAID的数据重构性能,并且可以做到随者系统中磁盘数量的增加,数据重构性能可以线性扩展。而传统的RAID是没有办法做到这一点的。

wKioL1Pw0Enw9j_0AAEAPwH3F7Y474.jpg

Flash存储如火如荼开展的今天,磁盘存储依然会存在。在未来,很多人估计其存在的最大理由就是在于容量(价格),因此可以通过组建混合存储的方式架构存储系统。在大容量磁盘存储中,我们有理由相信DDP技术会大发光彩,推动着传统RAID技术继续前进。

本文出自 "存储之道" 博客,请务必保留此出处http://alanwu.blog.51cto.com/3652632/1541408

阅读更多内容

没有评论:

发表评论