1.1 什么是集群

简单来说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序、系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就像一个单一独立的服务器,而实际上用户请求的是一组集群服务器。

打开谷歌、百度的页面,看起来好简单,也许感觉几分钟就能制作出相似的网页,而实际上,这个页面的背后是由成千上万台服务器集群协同工作的结果。而这么多的服务器维护和管理,以及相互协调工作就是我们未来的工作职责。

若要用一句话描述集群,即一堆服务器合作做同一件事,这些机器可能需要整个技术团队架构、设计和统一协调管理,这些机器可以分布在一个机房,也可以分布在全国全球各个地区的多个机房。

1.2 不同种类的集群介绍

1.2.1 负载均衡集群

负载均衡集群为企业提供了更为实用、性价比更高的系统架构解决方案。负载均衡集群可以把很多客户集中的访问请求负载压力尽可能平均地分摊在计算机集群中处理。客户访问请求负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合使用同一组应用程序为大量用户提供服务的模式,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。

负载均衡集群运行时,一般是通过一个或多个前端负载均衡器将客户访问请求分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。

负载均衡集群的作用:

1.分担用户访问请求及数据流量(负载均衡)

2.保持业务连续性,即7*24小时服务(高可用性)

3.应用于Web业务及数据库从库等服务器的业务

负载均衡集群典型的开源软件包括LVS、Nginx、Haproxy等。

1.2.2 高可用性集群

一般是指在集群中任意一个节点失效的情况下,该节点上的所有任务会自动转移到其他正常的节点上。此过程并不影响整个集群的运行。

当集群中的一个节点系统发生故障时,运行着的集群服务会迅速做出反应,将该系统的服务分配到集群中其他正在工作的系统上运行。考虑到计算机硬件和软件的容错性,高可用性集群的主要目的是使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了故障,那么这段时间内将由备节点代替它。备节点通常是主节点的镜像。当它代替主节点时,它完全接管主节点(包括IP地址及其他资源)提供服务,因此使集群系统环境对于用户来说是一致的,即不会影响用户的访问。

高可用性集群使服务器系统的运行速度和响应速度会尽可能的快。它们经常利用在多台机器上运行的冗余节点和服务来互相跟踪。如果某个节点失败,它的替补者将在几秒钟甚至更短的时间内接管它的职责。因此,对于用户而言,集群里的任意一台机器宕机,业务都不会受影响(理论情况下)

高可用性集群的作用:

1.当一台机器宕机时,另外一台机器接管宕机的机器的IP资源和服务资源,提供服务。

2.常用于不易实现负载均衡的应用,比如负载均衡器,主数据库、主存储对之间。

高可用性集群常用的开源软件包括Keepalived、Heartbeat等。

1.3 企业运维中常见的集群软硬件产品

互联网企业常用的开源集群软件有:Nginx、LVS、Haproxy、Keepalived、Heartbeat。

互联网企业常用的商业集群硬件有:F5、Netscaler、Radware、A10等,工作模式相当于Haproxy的工作模式。

淘宝、赶集网、新浪等公司曾使用过的Netscaler负载均衡产品。集群硬件Netscaler的产品相关指标,需自行查询相关资料。

1.4 如何选择开源集群软件产品

中小企业互联网公司网站并发访问和总访问量不是很大的情况下,建议首选Nginx负载均衡,理由是Nginx负载均衡配置简单、使用方便,安全稳定,社区活跃,使用的人逐渐增多,呈流行趋势,另外一个实现负载均衡的类似产品为Haproxy(支持L4和L7负载,同样优秀,但社区不如Nginx活跃)

如果要考虑Nginx负载均衡的高可用功能,建议首选Keepalived软件,理由是安装、配置简单、使用方便,安全稳定和Keepalived服务类似的高可用软件还有Heartbeat(使用比较负载,不建议初学者使用)

如果是大型企业互联网公司,负载均衡产品可以使用LVS+Keepalived在前端做四层转发(一般是主备或主主,如果需要扩展可以使用DNS或前端使用OSPF),后端使用Nginx或者Haproxy做7层转发(可以扩展到百台),再后面是应用服务器,如果是数据库和存储的负载均衡和高可用,建议选择LVS+Heartbeat,LVS支持tcp转发且dr模式效率很高Heartbeat可以配合drbd,不但可以进行VIP的切换,还可以支持块设备级别的数据同步(drbd),以及资源服务的管理。

第2章 Nginx反向代理搭建

2.1 Nginx常用模块

ngx_http_ssl_module       https

ngx_http_log_module       日志模块

ngx_http_status_module    状态模块

ngx_http_upstream_module  创建服务器组

ngx_http_proxy_module     根据不同条件把用户的请求抛到upstream服务器组

2.2 Nginx反向代理使用的模块

实现Nginx负载均衡的组件主要有两个

Nginx负载均衡的组件模块

Nginx http 功能模块 模块说明
ngx_http_proxy_module proxy代理模块,用于把请求后抛给服务器节点或upstream服务器池
ngx_http_upstream_module 负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查。

2.3 反向代理搭建

修改lb01的nginx.conf配置文件

[root@lb01 conf]# vim nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;
    
    default_type  application/octet-stream;
    
    sendfile        on;
    
    keepalive_timeout  65;
    
    upstream web_pools {
    
    server  10.0.0.7:80;
    
    server  10.0.0.8:80;
    
    }

server {

    listen       80;

    server_name  bbs.etiantian.org;

    location / {

    proxy_pass http://web_pools;

    }

}
}