本篇文章给大家谈谈web服务器集群,以及企业为什么搭建群集环境和web网站对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
一、企业为什么搭建群集环境和web网站
兄弟您好上海献峰Web服务器集群搭建如下
一需求分析:
1.整体需求:搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实时监控。
2.详细需求分析:
根据需求,计划根据以下拓扑搭建运行环境:
二详细功能描述:
1.前端服务器采用nginx实现反向代理和负载均衡,用keepalive实现HA。此部分由centos1和centos4实现,centos1作为主服务器,centos4作为热备服务器。Nginx会根据不同的请求ip机会均等地把请求发送到后端两台服务器,并且以ip hash的方式保持各个ip的会话。
2.后端服务器构建在centos2与centos3上,采用apache作为web发布软件,mysql作为数据库,测试网页用Django来实现。两台服务器的数据库能够自动同步。
3.作为热备服务器,centos4在centos1没有故障时并没有业务流量,处于相对空闲的状态,因此在centos4上配置nfs使它成为文件共享服务器,网站文件放在这台服务器上。
4.centos5作为监控服务器,运行nagios监控各服务器状态。出现告警时通过告警通知管理员。另外centos5还作为saltstack的服务器,其他主机的软件安装、文件传输、命令运行等操作均通过saltstack批量实现。
三总体部署描述:
1.各个服务器均安装centos6.4 64位版本,采用cobbler实现批量自动安装。
2.各个软件均安装最新的稳定版,centos自带的软件也要进行升级,例如python,Centos自带的版本比较久,会影响Django的运行。
四详细部署描述:
1.nginx设置
Nginx在这里的作用主要是反向代理、作为用户以及服务器之间的缓存、以及以负载均衡的方式把请求发送到后端两台服务器。
采用编译安装的方式安装nginx,具体过程就不在此记述了,不过为了更好地抵挡*,建议编译前修改一下安装文件,使*者难以查出nginx的版本号,修改安装文件中的nginx.h,把相关字段修改如下:
NGINX_VERSION"1.0" NGINX_VER"webserver" NGINX_VERSION
Nginx的配置文件如下:
212800
default_type lication/octet- zone=20;
send_timeout 20;
client_body_buffer_size 1k;
client_header_buffer_size 1k;
large_client_header_buffers 2 1k;
server_tokens off;
client_body_timeout 20;
client_header_timeout 20;
ip_hash;
server 10.0.0.3;
server 10.0.0.280///100;
limit_rate 500k; 500 502 503 504/=/
因为后端测试网页是用Django写的,因此nginx就不用处理php等动态网页的请求了。
设置完毕后,把nginx设置为开机启动,可以用如下方式:
echo“/usr/local/nginx/sbin/nginx”>>/etc/rc.local
2.Keeplive设置
Keeplive的作用是在两台服务器(centos1、centos4)之间,以VRRP协议实现HA。通过虚拟出一个Virtul IP(本例子中是192.168.00.000)来对外发布业务。两台服务器中的任一台退服了,keeplive会自动把业务转到另一台上。在这里centos1是主服务器,centos4是备用服务器。平时的数据流量只会通过centos1,只有centos1退服了,数据流量才会割接到centos4上。
centos1上的keepalive配置:
! Configuration @127.0.0.130
virtual_router_id 51192.168.48.139
priority 100
advert_int 1 1111192.168.48.138
对于从服务器centos4,只需要把以上配置文件的部分内容修改即可:
192.168.48.14090
同样,配置好配置文件后,把keepalive添加到开机启动中。
对于keepalive,由于是使用VRRP协议来检查对端是否在线的,只要对端能ping通,那么keeplive就会认为对端在线。但也有一种情况是对端服务器没有宕机,但nginx出错关闭了,这种情况下keepalive仍然会判断对端在线,不会把业务割接到备用服务器。因此我们需要在服务器上运行一个脚本,监控nginx进程的状态。假如nginx进程关闭了,先尝试重启nginx,无法重启时就关闭keepalive的进程,使业务割接到备用端。
二、ISSweb服务器的集群技术
集群技术的出现和IA架构服务器的快速发展为社会的需求提供了新的选择。它价格低廉,易于使用和维护,而且采用集群技术可以构造超级计算机,其*的处理能力可以取代价格昂贵的中大型机,为行业的高端应用开辟了新的方向。
集群技术是一种相对较新的技术,通过集群技术,可以在付出较低成本的情况下获得在*能、可靠*、灵活*方面的相对较高的收益。
目前,在世界各地正在运行的超级计算机中,有许多都是采用集群技术来实现的。
集群是由一些互相连接在一起的计算机构成的一个并行或分布式系统。这些计算机一起工作并运行一系列共同的应用程序,同时,为用户和应用程序提供单一的系统映射。从外部来看,它们仅仅是一个系统,对外提供统一的服务。集群内的计算机物理上通过电缆连接,程序上则通过集群软件连接。这些连接允许计算机使用故障应急与负载平衡功能,而故障应急与负载平衡功能在单机上是不可能实现的。
服务器集群系统通俗地讲就是把多台服务器通过快速通信链路连接起来,从外部看来,这些服务器就像一台服务器在工作,而对内来说,外面来的负载通过一定的机制动态地分配到这些节点机中去,从而达到超级服务器才有的高*能、高可用。
集群的优点
高可伸缩*:服务器集群具有很强的可伸缩*。随着需求和负荷的增长,可以向集群系统添加更多的服务器。在这样的配置中,可以有多台服务器执行相同的应用和数据库操作。
高可用*:高可用*是指,在不需要操作者干预的情况下,防止系统发生故障或从故障中自动恢复的能力。通过把故障服务器上的应用程序转移到备份服务器上运行,集群系统能够把正常运行时间提高到大于99.9%,大大减少服务器和应用程序的停机时间。
高可管理*:系统管理员可以从远程管理一个、甚至一组集群,就好像在单机系统中一样。
三、web服务器和应用服务器的区别
一、指代不同
1、web服务器:叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。
2、应用服务器:指通过各种协议把商业逻辑曝露给客户端的程序。
二、功能不同
1、web服务器:可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。
2、应用服务器:提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样。
三、特点不同
1、web服务器:传送(serves)页面使浏览器可以浏览。
2、应用服务器:应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。
参考资料来源:百度百科-应用服务器
参考资料来源:百度百科-web server
四、分布式与集群的区别是什么
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
例如:
如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。
采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)
而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,10小后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务!
以下是摘抄自网络文章:
一、集群概念
1.两大关键特*
集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展*与可用*的服务平台。在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了以下两个关键特*:
·可扩展*--集群的*能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的*能。
·高可用*--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用*。
2.两大能力
为了具有可扩展*和高可用*特点,集群的必须具备以下两大能力:
·负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。
·错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。
负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。
3.两大技术
实现集群务必要有以下两大技术:
·集群--集群由多个服务实体组成,集群客户端通过访问集群的集群获取集群内部各服务实体的功能。具有单一集群(也叫单一影像)是集群的一个基本特征。维护集群的设置被称为负载均衡器。负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群向内部服务实体的转换。有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转向另外一个服务实体。
·内部通信--为了能协同工作、实现负载均衡和错误恢复,集群各实体间必须时常通信,比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。
具有同一个集群使得客户端能访问集群提供的计算服务,一个集群下隐藏了各个服务实体的内部,使得客户要求的计算服务能在各个服务实体之间分布。内部通信是集群能正常运转的基础,它使得集群具有均衡负载和错误恢复的能力。
二、集群分类
Linux集群主要分成三大类(高可用集群,负载均衡集群,科学计算集群)
高可用集群(High *ailability Cluster)
负载均衡集群(Load Balance Cluster)
科学计算集群(High Performance Computing Cluster)
具体包括:
Linux High *ailability高可用集群
(普通两节点双机热备,多节点HA集群,RAC, shared, share-nothing集群等)
Linux Load Balance负载均衡集群
(LVS等....)
Linux High Performance Computing高*能科学计算集群
(Beowulf类集群....)
三、详细介绍
1.高可用集群(High *ailability Cluster)
常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如"双机热备","双机互备","双机"。
高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。(请注意高可用集群既不是用来保护业务数据的,保护的是用户的业务程序对外不间断提供服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度)。
2.负载均衡集群(Load Balance Cluster)
负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。
负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
3.科学计算集群(High Performance Computing Cluster)
高*能计算(High Perfermance Computing)集群,简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。
3.1高*能计算分类
3.1.1高吞吐计算(High-throughput Computing)
有一类高*能计算,可以把它分成若干可以并行的子任务,而且各个子任务彼此间没有什么关联。象在家搜寻外星人( SETI@HOME-- Search for Extraterrestrial Intelligence at Home)就是这一类型应用。这一项目是利用Inter上的闲置的计算资源来搜寻外星人。SETI项目的服务器将一组数据和数据模式发给Inter上参加SETI的计算节点,计算节点在给定的数据上用给定的模式进行搜索,然后将搜索的结果发给服务器。服务器负责将从各个计算节点返回的数据汇集成完整的数据。因为这种类型应用的一个共同特征是在海量数据上搜索某些模式,所以把这类计算称为高吞吐计算。所谓的Inter计算都属于这一类。按照 Flynn的分类,高吞吐计算属于SIMD(Single Instruction/Multiple Data)的范畴。
3.1.2分布计算(Distributed Computing)
另一类计算刚好和高吞吐计算相反,它们虽然可以给分成若干并行的子任务,但是子任务间联系很紧密,需要大量的数据*。按照Flynn的分类,分布式的高*能计算属于MIMD(Multiple Instruction/Multiple Data)的范畴。
四、分布式(集群)与集群的联系与区别
分布式是指将不同的业务分布在不同的地方;而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。
而分布式,从窄意上理解,也跟集群差不多,但是它的组织比较松散,不像集群,有一个组织*,一台服务器垮了,其它的服务器可以顶上来。
分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了。