项目实践中Linux集群的总结和思考

前言:作为一名Linux/unix系统工程师、项目实施工程师,这几年一直在涉及到对外项目,经手过许多小中型网站的架构,F5、LVS及Nginx接触的都比较多,我想一种比较通俗易懂的语气跟大家说明下何谓负载均衡,何谓Linux集群,帮助大家走出这个误区,真正意义上来理解它们,具体项目施工案例请参考我在network.51cto.com上的同类文章。

一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat+NFS的日趋成熟,这问题也不大了.网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。

二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。

三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用
direct方式分流,效果较能得到保证。

四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前
Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑
Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章;但由于我们目前的商务网站要考虑googel收录及域名备案还有其它的因素,暂时只能用单域名,所以只采用了前面的方案;Nginx+keepalived在我们的机房已经稳定运行了一年半了,所以这架构我也一并介绍给大家。

五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开。

六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、
Nginx+Keepalived;如果能保证Heartbeat的心跳线的稳定的话,Heartbeat+DRBD也是成熟的应用,适用于NFS文件服务器或Mysql。

七、LVS的优势非常多:①抗负载能力强;②工作稳定(因为有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx。

八、Nginx对网络的依赖性小,而且它的正则强大而灵活,强悍的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择;我到过许多CDN机房,经常能发现F5的身影。

九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。

十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP;如果是做LVS+Keepalived的纯公网的这种架构,呵呵,那就最好是购买一个IP网段吧。

十一、在实际项目实施过程中发现,Lvs和Nginx对https的支持都非常好,尤其是LVS,相对而言处理起来更为简便。

十二、在LVS+Keepalived及Nginx+Keepalived的故障处理中,这二者都是很方便的;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实web,达到短期处理故障的效果,毕竟广告网站和电子商务网站的PV就是金钱,这也是为什么要将负载均衡高可用设计于此的原因;大型的广告网站我就建议直接上CDN系统算了。

十三、现在Linux集群都被大家神话了,其实这个也没多少复杂;关键看你的应用场景,哪种适用就选用哪种,Nginx和LVS、F5都不是神话,哪种方便哪种适用就选用哪种。

十四、另外关于session共享的问题,这也是一个老生长谈的问题了;Nginx可以用ip_hash机制来解决session的问题,而F5和LVS都有会话保持机制来解决这个问题,此外,还可以将session写进数据库,这也是一个解决session共享的好办法,当然这个也会加重数据库的负担,这个看系统架构师的取舍了。

十五、我现在目前维护的电子商务网站并发大约是1800左右,以前的证券资讯类网站是100左右,大型网上广告网站大约是6000,我感觉web层的并发越来越不是一个问题;现在由于服务器的强悍,再加上Nginx作web的高抗并发性,web层的并发并不是什么大问题;相反而言,文件服务器层和数据库层的压力是越来越大了,单NFS不可能胜任目前的工作,现在好的方案是moosefs和
DRDB+Heartbeat+NFS;而我喜欢的Mysql服务器,成熟的应用方案还是主从;当然我也在尝试一主多从、Master-Master-slaves等多种架构。

十六、现在受张宴的影响,大家都去玩Nginx了(尤其是作web),其实在服务器性能优异,内存足够的情况下,Apache的抗并发能力并不弱(16G内存下Apache过6000问题也不大),整个网站的瓶颈应该还是在数据库方面;我建议可以双方面了解Apache和Nginx,前端用Nginx作负载均衡,后端用Apache作web,效果也是相当的好。

十七、Heartbeat的脑裂问题没有想象中那么严重,在线上环境可以考虑使用;DRDB+Heartbeat算是成熟的应用了,建议掌握。我在相当多的场合用此组合来替代EMC共享存储,毕竟30多万的价格并不是每个客户都愿意接受的。

十八、无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带嘛;有条件的还可以购买专门的商业扫描网站服务,它会每隔一分钟扫描你的网站,如果发现没有alive会向你的邮件发警告信息或直接电话联系。

十九、至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛三层防火墙+天泰web防火墙(或单台Juniper防火墙),DDOS的安全防护一定要到位(国内的DDOS攻击让人烦躁);Linux服务器本身的iptables和SElinux均可关闭,当然,端口开放越少越好。

二十、测试网站的响应时间是用http://tools.pingdom.com,发现上了LVS+Keepalived、Nginx+Keepalived后并不影响速度,这一点大家就不要多虑了,Nginx现在作反向加速也日趋成熟了,大家也可尝试下用Nginx来取代squid。

时间: 2024-12-26 10:50:59

项目实践中Linux集群的总结和思考的相关文章

大数据中Linux集群搭建与配置

因测试需要,一共安装4台linux系统,在windows上用vm搭建. 对应4个IP为192.168.1.60.61.62.63,这里记录其中一台的搭建过程,其余的可以直接复制虚拟机,并修改相关配置即可. 软件版本选择: 虚拟机:VMware Workstation 12 Pro   版本:12.5.9 build-7535481 Linux:CentOS-7-x86_64-DVD-1804 FTP工具:FileZilla-3.37.4 安装CentOS虚拟机 首先安装虚拟机,成功后重启电脑 新

Win7下MyEclipse远程连接到Mac/Linux中Hadoop集群

Win7下MyEclipse远程连接到Mac/Linux中Hadoop集群(也可访问该网页查看:http://tn.51cto.com/article/562 ) 所需软件:(1)下载Hadoop2.5.1到Win7系统下,并解压缩Hadoop2.5.1下载地址:Indexof/dist/hadoop/core/hadoop-2.5.1http://archive.apache.org/dist/hadoop/core/hadoop-2.5.1/ 说明:Win7中下载的是Hadoop2.5.1,

新书《Linux集群和自动化运维》目录

推荐序一 在全球"互联网+"的大背景下,互联网创业企业的数量如雨后春笋般大量产生并得到了快速发展!对"互联网+"最有力的支撑就是Linux运维架构师.云计算和大数据工程师,以及自动化开发工程师等! 但是,随着计算机技术的发展,企业对Linux运维人员的能力要求越来越高,这就使得很多想入门运维的新手不知所措,望而却步,甚至努力了很久却仍然徘徊在运维岗位的边缘:而有些已经工作了的运维人员也往往是疲于奔命,没有时间和精力去学习企业所需的新知识和新技能,从而使得个人的职业发

Linux集群监控工具简介:Ganglia和Nagios

11年时候,曾经对 Ganglia 和 Nagios有一定接触,这是两个用于监视数据中心的工具.这两个工具被大量用于高性能计算(HPC)环境中,但是它们对于其他环境也具有很大的吸引力(例如云.呈现集群和托管中心).此外,两者对监视的定义也采取了不同的侧重点.Ganglia 更多地与收集度量数据并随时跟踪这些数据有关,而 Nagios 一直致力于成为一种报警机制. 真么多年过去了,这两个工具还是挺有用的.,这里有一定的介绍:http://os.51cto.com/art/201104/255361

linux集群系列(1) --- Linux集群系统基础

一.简介     1.1. Linux集群系统包括集群节点和集群管理器两部分. 集群节点有时简称为节点.服务器或服务器节点,是提供处理资源的系统,它进行集群的实际工作.一般来讲,它必须进行配置才能成为集群的一部分,也必须运行集群的应用软件.应用软件可以是专用于集群的软件,也可以是设计用于分布式系统的标准软件. Linux集群管理器则是将节点捆绑在一起,以构成单一系统外观的逻辑结构,它用于将任务分解到所有的节点.集群因多种不同的原因而有着不同的类型,建立Linux集群的最直接原因是共享CPU资源,

Linux集群详解

Linux集群详解 集群或者说是群集:其目的是为了实现将多台计算机组合以来完成特定的任务,比如天气预报,大型网络游戏,这些都需要很大的运算量,单台计算机实现成本太高,而且不显示.那么就需要通过集群的方式,将废弃的或者正在使用的计算机联合起来,结合整体的力量来解决这些问题 集群类型: 1.  负载均衡集群 load blancing ,简称LB 2.  高可用性集群 high availibility,简称 HA 3.  高性能集群 high performance,简称 HP 作用: 1.  负

LINUX 集群学习一

服务器中的集群与网络中的集群虽然都是为了提供冗余的服务能力,但是在实现上有一定的差异,主要原因为网络冗余只需要实现流量有冗余路径,当主的链路故障后,流量可以通过备的链路通行即可.对于有状态的如TCP协议,某些设备如防火墙需要对其进行状态检测,那么只需要在主备设备之间开启会话同步功能即可.但是对于服务器而言较为复杂,主要原因是因为服务器作为流量的终结点,是需要直接对外提供服务的,其上存储的数据则需要被服务访问,不再是流量穿越就可以.本人一起从事网络相关的工作,在第一次接触服务器集群时,对其实现原理

初识Linux集群

Linux集群 Linux集群(cluster)就是一组Linux计算机,它们作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点(node).一个理想的集群,用户是不会意识到集群系统底层的节点的,在他们看来,集群是一个系统,而非多个计算机系统,并且集群系统的管理员可以随意增加和删改集群系统的节点. Linux集群系统的优点主要有4方面:1.易于扩展,管理员可很方便的增加或删除集群系统中的节点.2.高可用性,当集群中某一个节点失效时,其负责的任务可以传递给其他节点,有效避免单点

Linux 集群

原文地址 Linux 集群 计算 Linux 中集群项目的数量就象计算硅谷中创业公司的数量一样.不象 Windows NT 已经受其自身的封闭环境阻碍,Linux 有大量的集群系统可供选择,适合于不同的用途和需要.但确定应该使用哪一个集群的工作却没有因此变得简单. 问题的部分原因在于术语集群用于不同场合.IT 经理可能关心如何使服务器运行时间更长,或使应用程序运行得更快,而数学家可能更关心在服务器上进行大规模数值计算.两者都需要群集,但是各自需要不同特性的群集. 本文调查了不同形式的集群以及许多