集群概念、LinuxVirtualServer介绍、LVS-NAT工作原理、LVS-DR工作原理、LVS-TUN工作原理、LVS-FULLNAT工作原理

集群概念

Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统

Linux Cluster类型
LB:Load Balancing,负载均衡
HA:High Availiablity,高可用,SPOF(single Point Of failure)
  MTBF:Mean Time Between Failure 平均无故障时间
  MTTR:Mean Time To Restoration( repair)平均恢复前时间
  A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%,99.999%

HPC:High-performance computing,高性能 www.top500.org

分布式系统
分布式存储: Ceph,GlusterFS,FastDFS,MogileFS
分布式计算:hadoop,Spark

集群与分布式

集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败

集群设计原则

基础设施层面:
提升硬件资源性能—从入口防火墙到后端web server均使用更高性能的硬件资源
多域名—DNS 轮询A记录解析
多入口—将A记录解析到多个公网IP入口
多机房—同城+异地容灾
CDN(Content Delivery Network)—基于GSLB(Global Server Load Balance)实现全局负载均衡,如DNS

业务层面:
分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化
分割:基于功能分割大业务为小服务
分布式:对于特殊场景的业务,使用分布式计算

集群的分类

硬件
F5 Big-IP
Citrix Netscaler
A10 A10

软件
lvs:Linux Virtual Server,阿里四层SLB (Server Load Balance)使用
nginx:支持七层调度,阿里七层SLB使用Tengine
haproxy:支持七层调度
ats:Apache Traffic Server,yahoo捐助给apache
perlbal:Perl 编写
pound

基于工作的协议层次划分
传输层(通用):DPORT
LVS:
nginx:stream
haproxy:mode tcp

应用层(专用):针对特定协议,自定义的请求模型分类
proxy server:
http:nginx, httpd, haproxy(mode http)
fastcgi:nginx, httpd
mysql:mysql-proxy

LinuxVirtualServer介绍

Linux Virtual Server:简称LVS,负载调度器,内核集成,章文嵩(花名 正明)
官网:http://www.linuxvirtualserver.org/
VS: Virtual Server,负责调度
RS: Real Server,负责真正提供服务
L4:四层路由器或交换机
阿里的四层LSB(Server Load Balance)是基于LVS+keepalived实现

工作原理:
VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

iptables/netfilter
iptables:用户空间的管理工具
netfilter:内核空间上的框架
流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
DNAT:目标地址转换; PREROUTING

查看内核支持
grep -i -A 10 “IPVS” /boot/config-3.10.0-862.el7.x86_64

IPVS transport protocol load balancing support
CONFIG_IP_VS_PROTO_TCP=y #开启tcp
CONFIG_IP_VS_PROTO_UDP=y #开启udp
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y #

IPVS scheduler #默认支持的算法
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m

lvs集群类型中的术语

VS:Virtual Server,Director Server(DS),Dispatcher(调度器),Load Balancer
RS:Real Server(lvs), upstream server(nginx),backend server(haproxy)
CIP:Client IP
VIP: Virtual serve IP VS外网的IP
DIP: Director IP VS内网的IP
RIP: Real server IP
访问流程:CIP <–> VIP == DIP <–> RIP

lvs: ipvsadm/ipvs
ipvsadm:用户空间的命令行工具,规则管理器,用于管理集群服务及RealServer
ipvs:工作于内核空间netfilter的INPUT钩子上的框架

lvs集群的类型

lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
lvs-dr:操纵封装新的MAC地址
lvs-tun:在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP

lvs-nat模式工作原理

lvs-nat:
本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
1.RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
2.请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
3.支持端口映射,可修改请求报文的目标PORT
4.VS必须是Linux系统,RS可以是任意OS系统

NAT模式数据包传输过程
客户端向服务器发送数据

客户端
LVS服务器
交换机
RS服务器1
RS服务器2
RS服务器3

数据包变动
客户端发出的数据包

源地址目标地址端口
CIPVIP80

LVS服务器收到后发出的数据包

源地址目标地址端口
CIPRIP8080

通过交换机后到达某一个RS服务器

服务器向客户端应答数据

RS服务器
交换机
LVS服务器
客户端

数据包变动
RS服务器发出的数据包

源地址目标地址端口
RIPCIP8080

LVS服务器收到后发出的数据包

源地址目标地址端口
VIPCIP80

客户端收到应答数据包

LVS-DR工作原理

LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
1.Director和各RS都配置有VIP
2.确保前端路由器将目标IP为VIP的请求报文发往Director,在前端网关做静态绑定VIP和Director的MAC地址

在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce

3.RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
4.RS和Director要在同一个物理网络
5.请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
6.不支持端口映射(端口不能修败)
7.RS可使用大多数OS系统

DR模式数据包传输过程

客户端
路由器
LVS服务器
RS服务器1
RS服务器2
RS服务器3

各部分IP和MAC示意
客户端
地址:CIP
MAC:C-MAC

路由器
口1:R1-MAC
口2:R2-MAC

LVS服务器
地址:VIP
MAC:LVS-MAC

RS服务器
eth0:RIP
lo:VIP
MAC:RS-MAC

数据包变动
客户端发出的请求数据包

源地址目标地址源MAC目标MAC
CIPVIPC-MACR1-MAC

路由器转发的请求数据包

源地址目标地址源MAC目标MAC
CIPVIPR2-MACLVS-MAC

LVS服务器转发的请求数据包

源地址目标地址源MAC目标MAC
CIPVIPLVS-MACRS-MAC

RS服务器发出的应答数据包

源地址目标地址源MAC目标MAC
VIPCIPRS-MACR2-MAC

路由器发出的应答数据包

源地址目标地址源MAC目标MAC
VIPCPR1-MACC-MAC

LVS-TUN工作原理

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)
1.DIP, VIP, RIP都应该是公网地址
2.RS的网关一般不能指向DIP
3.请求报文要经由Director,但响应不经由Director
4.不支持端口映射
5.RS的OS须支持隧道功能

TUN模式数据包传输过程

客户端
路由器
LVS服务器
RS服务器1
RS服务器2
RS服务器3

数据包变动
客户端发出的请求数据包

源地址目标地址端口
CIPVIP80

LVS服务器转发的请求数据包

TIP源地址目标地址端口
TIPCIPVIP80

RS服务器发出的应答数据包

源地址目标地址端口
VIPCIP80

LVS-FULLNAT工作原理

lvs-fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP --> DIP
VIP --> RIP
1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP
2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client
3.请求和响应报文都经由Director
4.支持端口映射
注意:此类型kernel默认不支持

LVS工作模式总结

lvs-nat与lvs-fullnat:请求和响应报文都经由Director
lvs-nat:RIP的网关要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信

lvs-dr与lvs-tun:请求报文要经由Director,但响应报文由RS直接发往Client
lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发
lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值