根据规模的增加,不同的阶段需要使用不同的技术和架构,具体的需求需要具体分析,如果是中小型的Web应用。
如果每天的活动少于1000万,使用nginx.就可以完全满足
大型网站或重要服务,而且有很多服务,可以考虑使用LVS.
Nginx(“引擎x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
nginx的特点是占有内存少,并发能力强,在同类型的web服务器中,Nginx的并发性更好。
Nginx的简单架构:
Nginx的架构设计是模块化的,基于事件驱动、异步、单线程和无阻塞(epoll模型)。
Nginx使用多路复用和事件通知。Nginx启动后,在系统中作为后台守护进程运行,后台守护进程包括一个主进程和n(n1)个工作进程。
所有进程都是单线程(也就是只有一个主线),进程间通信主要使用共享内存.
主进程用于接收外部请求,向工作进程发送信号,并监控工作进程的工作状态。
工作进程用于处理外部请求信息。请求只能在一个工作进程中处理。一个工作进程只有一个主线程,同时只能处理一个请求。.
Nginx负载均衡是在七层网络通信模型的应用层(HTTP,HTTPS)进行的。
Nginx是反向代理的负载均衡。
反向代理:代理服务器接收用户的请求,然后将请求发送到内部网络上的服务器,并将服务器上的结果返回给请求客户端。此时,代理服务器是一个服务器。
负载均衡:它是将这些客户端的请求按照一定的处理策略分发到后台的几个服务器上。
Nginx的上游目前支持六种算法分配方式:
轮询
最基本的配置方式,也就是上游模块默认的负载均衡策略。每个请求都按照时间顺序逐一分配给不同的后端服务器。
具有以下参数:
如果30秒内错误次数超过2次,则认为服务器不可访问,下次不会访问机器。
服务器10 . 168 . 226 . 1:8080 max _ failed=2 fail _ time out=30s;
服务器10 . 168 . 226 . 2:8080 max _ failed=2 fail _ time out=30s;
weight
方法,根据轮询策略指定轮询的概率。
服务器10.168.226.1:8080权重=1;
服务器10.168.226.2:8080权重=2;
注意:
权重越高,需要处理的请求就越多。
这种策略更适合服务器硬件配置差异较大的情况。
ip_hash
指定基于客户端IP的负载均衡器的分配方式。此方法确保同一客户端的请求始终发送到同一服务器,以确保会话会话。
这样,每个访问者都可以定期访问一个后端服务器,可以解决会话不能跨服务器的问题。
ip _ hash#确保每个访问者都可以固定访问后端服务器。
>server 10.168.226.1:8080 weight=1 ;server 10.168.226.2:8080 weight=2;
注意:
ip_hash在nginx1.3版本之后才有的 ip_hash不能与backup同时使用这种策略适合有状态服务,比如session 当有服务器需要剔除,必须手动down掉。
least_conn
把请求转发给连接数较少的后端服务器,轮询算法是把请求平均的转发给各个后端服,使它们的负载大致相同。
但是,有些请求占用的时间很长,会导致所在的后端负载较高,这种情况下,least_conn这种方式就可以达到更好的负载均衡效果least_conn;
server 10.168.226.1:8080 weight=1;
server 10.168.226.2:8080 weight=2;
注意:
这种负载均衡策略适合请求处理时间长短不一致造成服务器过载的情况
第三方策略
第三方的负载均衡策略的实现需要安装第三方插件(upstream_fair)
LVS 就是 Linux 虚拟(Virtual Server)服务器。从 Linux 内核 2.4 之后,内置了 LVS 的各个功能模块,就可以直接 使用 LVS 提供的功能。
LVS 架构 的服务器集群系统有三个部分 组成:
LVS 是四层负载均衡,建立在 OSI 模型的第四层——传输层之上,传输层有 TCP/UDP,相对于其它高层负载均衡的方法,比如 DNS 域名轮询解析,应用层负载的调度,客户端的调度等,它的效率都非常高。
LVS 的转发主要通过修改 IP 地址(NAT 模式,分为源地址修改 SNAT 和目标地址修改 DNAT)、修改目标 MAC(DR 模式)来实现。
DS:Director Server。指的是前端负载均衡器节点。
RS:Real Server。后端真实的工作服务器。
VIP:向外部直接面向用户请求,作为用户请求的目标的 IP 地址。
DIP:Director Server IP,主要用于和内部主机通讯的 IP 地址。
RIP:Real Server IP,后端服务器的 IP 地址。
CIP:Client IP,访问客户端的 IP 地址
NAT(network address transaction)是外网和内网地址映射的技术。
NAT 模式下,网络数据的进出都要经过 LVS 处理,LVS 需要作为真实服务器的网关。
DR 模式下需要 LVS 和 RS 集群绑定同一个 VIP,与 NAT 的不同点在于:
请求由 LVS 接受,由真实提供服务的服务器(RS)直接发放给用户,返回的时候不经过 LVS。
一个请求过程中,LVS 只需要将网络帧的 Mac 地址修改为某一台 RS 的 MAC,该请求就去会被转发到响应的 RS 处理,此时的源 IP 和目标 IP 都没有变。
RS 收到 LVS 转发来的请求时,链路层发现 Mac 地址是自己的,当上面的网络层,也发现 IP 是自己的,于是这个包被合法的接受,RS 感知不到前面有 RS 的存在。当 RS 返回响应时,只要直接向源 IP 返回即可,不再经过 LVS。
DR 负载均衡模式数据分发过程中不修改 IP 地址,只修改 Mac 地址,由于实际处理请求的真实物理 IP 地址和 数据请求目的 IP 地址一致,所以不需要通过负载均衡服务器进行地址转换,就可以将响应数据直接返回给浏览器,避免服务器网卡带宽成为瓶颈。
DR 模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡。