负载均衡和高可用
负载均衡
通常被称为四层或七层交换机
OSI七层协议
- 应用层L7: 基于URL等应用层信息的负载均衡,负载的种类比较多,如修改IP和PORT,或根据URL、语言等;
- 传输层L4: 基于IP和PORT的负载均衡,TCP、UDP,修改数据包的地址信息--包括
IP和PORT
,实现负载均衡 - 网络层L3: 基于IP的负载均衡,提供相同VIP,不同机器的
IP
地址不同:负载均衡算法路由到不同的IP机器 - 链路层L2: 基于MAC的负载均衡,提供相同VIP,不同机器的
MAC
地址不同:改写报文的目标MAC地址 - 物理层
四层负载均衡,本质是转发
主要根据报文中的目标地址和端口(NAT方式)
或 修改MAC地址(DR方式:direct route)
七层负载均衡,本质是内容交换和代理
负载均衡器需要与前端和后端都建立连接。
主流负载均衡器
LVS: linux virtual Server 四层负载均衡
抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
Haproxy:四层和七层负载均衡
可提供TCP和HTTP应用的负载均衡;
HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡
Nginx:七层负载均衡,反向代理,Http缓存
Nginx仅能支持http、https和Email协议
正向代理 vs 反向代理
正向代理: proxy在Internet前面(在防火墙前面),如工作中使用的跳板机;
反向代理: proxy在Internet后面,适合做负载均衡;
高可用
Keepalived实现原理: VRRP协议(虚拟路由冗余协议)
Keepalived + Haproxy
解决负载均衡器自身单节点的问题