企业架构LNMP高可用负载均衡服务器之Nginx:
1)能够描述负载均衡的作用;loadbalance LB。
2)能够了解负载均衡常见的实现方式;
3)能够使用nginx实现负载均衡;
4)能够描述nginx的常见的负载均衡调度算法;
业务背景描述:
时间:2011.6 ~ 2013.9
发布产品类型:互联网动态站点 电商
用户数量:4000~8000 (用户数量猛增)
PV: 16000-100000:(24小时访问次数)
QPS:50~100 (每秒访问次数)
DAU:400-800 (每日活跃用户数)
随着业务量增加,之前单点服务器,已经不能满足业务的需要。如果主服务器宕机,备用服务器提供服务,因为流量太大,备用服务器也宕机。需要多台服务器同时提供服务。
模拟运维设计方案:
以上架构服务器,已经不能满足以上提到的业务需求,架构发生如下变化:
调度服务器:负载均衡服务器。由它确定把请求转发到不同的web服务器。
调度作用。把流量尽量平均分配到后端的web服务器上。请求分发。
服务器基本环境部署:
克隆复制虚拟机:
server04 lb loadbalance 192.168.17.110
智能负载均衡。
基本环境配置:
网卡IP、主机名称、hosts解析;
负载均衡服务器搭建:
引入负载均衡技术:
负载均衡技术,load balance,LB,是一种概念,把资源的使用进行平均分配。
搞集群要掌握HA和LB两个技术。
负载均衡:分发流量,请求到不同的服务器。使流量平均分配。(理想的状态)。
作用:
服务器容灾,流量分发。
主要作用:
1)流量分发,请求平均,降低单机的压力。
其他作用:
1)安全:隐藏后端真实服务;
2)屏蔽非法请求(七层负载均衡);不合法,请求拒绝。防火墙。四层只有连接的概念。
负载均衡的分类:
1)二层负载均衡(mac)
根据OSI模型分的二层进行负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后,再分配后端实际的MAC地址响应 LVS。
2)三层负载均衡(ip)
一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后,再分配后端实际的IP地址响应
3)四层负载均衡(tcp) 网络运输层面的负载均衡
在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器
4)七层负载均衡(http) 智能型负载均衡
根据虚拟的url或IP,主机接收请求,再转向(反向代理)相应的处理服务器
最常见的是四层和七层。
常见的实现方式:
实现方式分类:
1)软件级别:性价比高、可控性强;
2)硬件级别:性能好、价格高,几万到几十万不等。
互联网公司更多的是通过软件级别。
硬件实现方式:
F5 BIG-IP。500万并发数。F5是公司,BIG-IP是他们的一款产品。四层和七层都可以做。
软件实现方式:
OSI分层 | 实现方式 |
七层 | Nginx、HAproxy |
四层 | LVS、HAproxy、Nginx(1.9版本后) |
四层与七层对比:
性能四层高、七层性能中。
安全性:四层低,七层高。可以防御SYN、Cookie以及SYN flood等攻击。
TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。