nginx集群

1.集群(Cluster)介绍

1.1 概念

所谓集群,指一组(多台)相互独立的计算机利用高速通信网络组成的一个规模较大的计算机服务系统,每个集群节点(即集群中的一台服务器)都是运行各自服务的独立服务器。这些服务器之间相互连接,协同为用户提供应用程序、数据资源,并以单一系统的模型进行管理。当用户请求集群系统时,集群给用户的感觉就像是一台独立的服务器在为客户提供服务,而实际上处理客户请求的这个步骤是由很多台服务器共同实现的。

1.2 优点

①高性能(Performance)

②价格有效性(Cost-effectiveness)

在达到同样性能需求的条件下,采用计算机集群架构比采用同等运算能力的大型计算机具有更高的性价比。

③可伸缩性(Scalability)

当服务负载、压力增长时,针对集群系统进行较简单的扩展即可满足需求,且不会降低服务质量。

④高可用性(Availability)

在集群系统中,尽管部分硬件和软件也会发生故障,但整个系统的服务可以是7×24小时可用的。

⑤透明性(Transparency)

多个独立计算机组成的松耦合集群系统构成一个虚拟服务器;用户或客户端程序访问集群系统时,就像访问一台高性能、高可用的服务器一样,集群中一部分服务器的上线下线不会中断整个系统服务,这对用户也是透明的。

1.3 集群的类型

  • LB/负载均衡(Load Balancer)集群
  • HA/高可用(High Available)集群
  • HPC/高性能运算(High Performance Computer)集群 无论哪种集群、都至少包括两台节点服务器,而且对外表现为一个整体,只提供一个访问入口(域名或IP)

LB/负载均衡集群

以提高应用系统的响应能力、尽可能处理更多的访问请求,减少延迟为目标获得高并发、高负载的整体性能。例如,“DNS轮询”、“应用层交换”、“反向代理”等都可以用作负载均衡集群。

HA/高可用集群

以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集群技术。HA的工作方式包括双工和主从两种模式,双工即所有节点同时上线,而主从只有主节点在线提供服务,当主节点出现问题后备接替出故障的主节点为用户提供服务。

HPC/高性能运算集群

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。例如“云计算”、“网格计算”也可视为高性能运算的一种。

1.4 集群实现的方式

在企业中一般通过软件、硬件两种方式来实现集群

企业中常用的开源集群软件有:Nginx、LVS、Haproxy、Keepalived、Heartbeat等

企业中常用的商业集群硬件有:F5、Netscaler、Radware、A10等

1.5 负载均衡、高可用的分层结构

在典型的负载均衡集群中,主要包括三个层次的组件。

前端至少有一个负载调度器(Director) 负责响应并分发来自客户机的访问请求;后端有大量独立节点服务器(Real Server)构成服务器池(Server Pool)提供实际的应用服务,整个集群的伸缩性通过增加、删除节点服务器来完成,而这些过程对客户机都是透明的;为了保持服务、数据的一致性,所有节点使用共享存储设备。

第一层,负载均衡调度器 这是访问整个集群系统的唯一入口,对外使用所有服务器的共有VIP(Virtual IP)地址,也称为集群IP地址。通常会配置主、备两台调度器实现双机热备效果,当主调度器失效后,可以平滑替换至备用调度器,从而确保高可用性。

第二层,服务器池 集群所提供的应用服务(如web、ftp等)由服务器池承担,其中每个节点具有独立的RIP(Real IP,真实IP)地址,只处理调度器分发过来的客户机请求,当某个节点暂时失效时,负载调度器的容错机制将会将其隔离,等待错误排除后再重新加入服务器池。

第三层,共享存储 为服务器池中的所有节点提供稳定、一致的文件存储服务,确保整个集群的统一性。在Linux/UNIX环境中,共享存储可以使用NAS设备,或者提供NFS(网络文件系统)共享服务的专用服务器。

2.Nginx负载均衡群集

2.1 反向代理与负载均衡概念简介

Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以称之为Nginx负载均衡。

2.2 nginx负载均衡核心组件介绍

ngx_http_proxy_module

proxy代理模块,用于把请求转发给节点服务器

ngx_http_upstream_module

可以实现网站的负载均衡功能及节点的健康检查

2.2.1 upstream模块

Nginx的负载均衡功能依赖于ngx_http_upstream_module模块,所支持的代理方式包括proxy_pass、fastcgi_pass、memcached_pass等。ngx_http_upstream_module模块允许Nginx定义一组或多组节点服务器,使用时可以通过proxy_pass代理方式把网站的请求发送到事先定义好的对应upstream组上,具体写法为“proxy_pass http://www_pools”,其中www_pools就是一个upstream节点服务器组名字。

基本的upstream配置案例

http {
        upstream www_pools {			//www_pools为集群组名称
                server 192.168.1.12:80 weight=10;
                server 192.168.1.13:80 weight=20;
                server 192.168.1.14:80 backup;		//其他服务器不可以时启用该服务器
        }
}

2.2.2 http_proxy_module模块

proxy_pass指令属于ngx_http_proxy_module模块,此模块可以将请求转发到另一台服务器,在实际的反向代理工作中,会通过location功能匹配指定的URI,然后把接收到的符合匹配URI的请求通过proxy_pass抛给定义好的upstream节点池。

配置案例

server {
        location / {
                proxy_pass www_pools;
        }
 }

2.2.3 调度算法

调度算法一般分为以下两类:

静态调度算法:即负载均衡器根据自身设定的规则进行分配,不需要考虑后端节点服务器情况。例如:rr、wrr、ip_hash都属于静态调度算法。

动态调度算法:即负载均衡器会根据后端节点的当前状态来决定是否分发请求。例如:连接数少的优先获得请求,响应时间短的优先获得请求,least_conn、fair等都属于动态调度算法。

常用的调度算法:

(1)rr轮询(默认调度算法,静态调度算法) 按客户端请求顺序把客户端的请求逐一分配到不同的后端节点服务器,这相当于LVS中的rr算法,如果后端节点服务器宕机(默认情况下Nginx只检测80端口),宕机的服务器会被自动从节点服务器池中剔除,以使客户端的用户访问不受影响。新的请求会分配给正常的服务器。

(2)wrr(权重轮询,静态调度算法) 在rr轮询算法的基础上加上权重,即为权重轮询算法,当使用该算法时,权重和用户访问成正比,权重值越大,被转发的请求也就越多。可以根据服务器的配置和性能指定权重值大小,从而有效解决新旧服务器性能不均带来的请求分配问题。

(3)fair(动态调度算法) 此算法会根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配。这是更加智能的调度算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair调度算法的,如果需要使用这种调度算法,必须下载Nginx的相关模块upstream_fair

(4)least_conn(动态调度算法) least_conn算法会根据后端节点的连接数来决定分配情况,哪个机器连接数少就分发给哪个节点。

3.反向代理多虚拟主机实现

实现客户访问www.nginx.com访问到节点服务器的www.nginx.com内容,访问www.apache.com访问到节点服务器的www.apache.com内容

题目

1.nginx的反向代理和lvs的负载均衡有什么区别?

nginx反向代理:重新生成用户的请求再发送至节点服务器,所以节点服务器看到的来访者IP为nginx服务器的IP。

LVS等的负载均衡是转发用户请求的数据包,而Nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。

nginx工作在七层能够针对域名、目录做特定转发,功能更全面

lvs工作在四层,只转发请求不涉及流量,效率更高

2.基于域名的访问,当客户端访问同一台服务器的不同域名时,服务器如何实现将正确域名对应的网页内容交给客户端?

客户端访问服务端时,会带着IP和访问时的域名,通过域名比较服务器的虚拟主机配置,来决定由哪部分虚拟主机的配置来响应客户端的请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值