解析负载均衡-四层交换-七层交换-软交换-硬交换-F5-nginx的关系

    • 解析负载均衡-四层交换-七层交换-软交换-硬交换-F5-nginx的关系
    • 一七层网路协议
    • 二四层交换和七层交换
    • 三F5负载均衡
    • 四项目实践
          • 场景1后端只有一套程序对性能无要求只要求主备两台即可如何简单的做负载均衡
          • 场景2后端只有一套程序对性能和稳定性有很高要求要求能够随业务量增长不断增加程序套数如何做负载均衡
          • 场景3后端不止一套程序而是由很多子程序组成的服务群对性能和稳定性要求较高要求随业务量增长需要不断增加服务群的套数如何做负载均衡
    • 五参考资料

解析负载均衡-四层交换-七层交换-软交换-硬交换-F5-nginx的关系

一、七层网路协议

OSI中的层 功能 TCP/IP协议族
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
表示层 数据格式化,代码转换,数据加密 没有协议(加密,ASCII等)
会话层 解除或建立与别的接点的联系 没有协议(SQL等)
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,OSPF,EIGRP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

二、四层交换和七层交换

也称作是四层负载均衡和七层负载均衡,含义是通过七层协议的那一层来决定哪些流量需要做负载均衡。

一般常见的是基于三层IP、四层port和七层http协议来做负载均衡;

一般采用软交换、硬交换和软硬结合(一般七层才会采用软硬结合模式,如四层硬交换+七层软交换)

除了四层交换和七层负责均衡,还有其它层的一些负责均衡,如:

  • 二层负载均衡:基于MAC地址的二层负载均衡
  • 三层负载均衡:基于IP地址的三层负载均衡
  • 四层负载均衡:四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器。四层是基于三层IP交换+4层的端口
  • 七层负载均衡:七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。七层是基于四层交换+七层的url

三、F5负载均衡

  • 四层交换只是理论,不是具体可用的产品
  • F5是实现四层交换的一款产品,属于硬交换,价格贵性能好
  • 四层交换软件除了F5,还有LVS(软交换)等其它同类型产品
  • 除了四层交换软件,还有七层交换软件如haproxy,MySQL Proxy,nginx等

四、项目实践

场景1:后端只有一套程序,对性能无要求,只要求主备两台即可,如何简单的做负载均衡?

思路:客户端通过代码简单实现:
if(condition1){
IP_1+port_1
}else{
ip_2 + port_2
}

场景2:后端只有一套程序,对性能和稳定性有很高要求,要求能够随业务量增长不断增加程序套数,如何做负载均衡?

思路:通过四层交换实现,即IP+port,比如使用四层交换产品F5(硬交换)或者LVS(软件换)

场景3:后端不止一套程序,而是由很多子程序组成的服务群,对性能和稳定性要求较高,要求随业务量增长,需要不断增加服务群的套数,如何做负载均衡?

思路:通过七层交换实现,即IP+port+url,比如使用四层负载均衡的F5+七层负载均衡的Nginx(静态资源七层分流也可以选Varnish,缓存加速能力强)

整体系统架构变为:F5(一个)+nginx(N个,每个nginx负责一套程序群)+程序群(M套),F5作为总入口,通过IP+端口将请求负责均衡分发给N个nginx,每个Nginx拿到被分配的请求后,通过url将请求分发给它负责管理的程序群的具体某个子程序。

五、参考资料:

  1. 四层和七层负载均衡的区别
  2. 网络七层协议

你可能感兴趣的:(系统架构)