转载  高可用HA和横向扩容的负载均衡方案(DNS+KEEPALIVED+LVS+VIP)及原理

分类:架构 2021-08-02T22:42:31    87人阅读   

一、什么是负载均衡:

负载均衡:是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。

负载均衡解决了大量并发访问服务问题,其目的就是用最少的投资获得接近于大型主机的性能。

二、基于DNS负载

优点:实现简单、实施容易、成本低、适用于大多数应用

缺点:不能诊断后端服务器状态,做到动态剔除无效实例。


三、基于四层协议的负载

四层负载均衡设备只是起到一个类似路由器的转发请求动作,client发送请求至4层负载均衡器,4层负载均衡器根据负载策略把client发送的报文目标地址(原来是负载均衡设备的IP地址)修改为后端服务器(可以是web服务器、邮件服务等)IP地址,这样client就可以直接跟后端服务器建立TCP连接并发送数据。


代表产品:LVS(开源软件),F5(硬件,也支持7层协议)

优点:性能高、支持各种网络协议

缺点:负载智能化方面没有7层负载好(比如不支持对url个性化负载),F5硬件性能很高但成本也高。


四、基于七层协议的负载

七层负载均衡也叫“内容交换”, 七层负载均衡服务器起了一个代理服务器的作用,client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,响应时webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client。


代表产品: nginx、apache

优点: 负载智能方案多(比如可根据不同的url进行负载)

缺点: 网络协议有限,nginx和apache支持http负载,性能没有4层负载高


五、VIP

虚拟IP: 就是一个未分配给真实主机的IP,即:对外提供服务的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有外部项目配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。

实现原理:TCP/IP的ARP协议,因为ip地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关 系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。这就是整个实现的关键。

应用场景:实现HA,一般采用两台机器互为主备,使用VIP完成故障自动切换。


举例:

下边是测试电脑上的arp缓存的内容。

(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

其中:

192.168.1.217(主)、192.168.1.218(热备)是两台真实的电脑,

192.168.1.219为虚IP。

219、217的MAC地址是相同的。

再看看那217宕机后的arp缓存

(192.168.1.219) at 00:21:5A:DB:7F:C2 [ether] on bond0

(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0

(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0 

当218 发现217宕机后会向网络发送一个ARP数据包,告诉所有主机192.168.1.219这个IP对应的MAC地址是00:21:5A:DB:7F:C2,这样所有发送到219的数据包都会发送到mac地址为00:21:5A:DB:7F:C2的机器,也就是218的机器。


六:keepalived

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。


七:LVS

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。有三种调度方式 :

NAT(Network Address Translation网络地址转换)、

TUN(tunnel 隧道)、

DR(direct route 直接路由)

1、LVS-DR

说明:

a. 请求经由:User->LVS->RS(RealServer) -> User, 返回时不经过LVS;

b. LVS与RS要绑定同一个VIP,请求过来时,LVS只需要将网络帧的MAC地 址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的 源IP和目标IP都没变,RS收到LVS转发来的包,发现MAC是自己的,发现 IP也是自己的,于是这个包被合法地接受,而当RS返回响应时,只要直接向 源IP(即用户的IP)返回即可,不再经过LVS。

c.由于RS直接输出响应给用户,性能非常高。

2、LVS-NAT

说明:

a. 请求经由:User->LVS(DNAT)->RS(RealServer) -> LVS(SNAT)->User.

b. NAT(Network Address Translation)是一种网络地址映射的技术。NAT模式下,LVS需要作为RS的网关,当网络包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP,这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,对于客户端只知道是LVS直接返回给它的。

c. NAT模式请求和响应都需要经过lvs,性能没有DR模式好

3、 LVS-TUN

说明:TUN模式是通过ip隧道技术减轻lvs调度服务器的压力,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量。相比NAT性能要高的多,比DR模式的优点是不限制负载均衡器与RS在一个物理段上。但是它的不足需要所有的服务器(lvs、RS)支持"IP Tunneling"(IP Encapsulation)协议。


八、keepalived+lvs+vip 实现主备切换

初始状态


主宕机


主恢复


九、dns+keepalived+lvs+vip 实现双主

主备方案只有一台lvs工作,造成资源浪费,采用双主结构,让两台lvs都进行工作。


初始状态:每台lvs绑定一个vip,共两个vip,DNS设置域名对应这两个vip,通过DNS轮询每次解析到不同的vip上即解析到不同的lvs上


一主宕机:每台lvs上安装的keepalived会检测到对方宕机,将宕机一方的vip漂移至活动的lvs服务器上,这样DNS轮询全部到一台lvs继续对外提供服务


主机恢复:当主机恢复又回到初始状态,每个vip绑定在不同的lvs上


十、dns+keepalived+lvs+vip 实现多主

上面讲的是一组双主结构,可以采用多组双主结构达到横向扩展lvs的目的,此方案需要每台lvs都绑定一个vip,DNS设置域名轮询多个vip。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

服务器费用不足...

网上书店HTML模板_Bootstrap网上书城电商HTML5模板 - BookStore

Bootstrap电商系统管理模板_换肤HTML5后台系统UI框架 - AdminDesigns1.5

响应式图文博客网站HTML模板

svg旋转动画loading特效

仿微信聊天主界面html

手机短信验证码注册H5页面

手机端邀请好友统计页面

jquery产品介绍列表切换

仿天猫购物详情页h5页面

unicorn后台管理模版

2048小游戏html代码

挂号预约手机端页面Vue代码

layui房产物业管理系统OA模板

微信助力活动模板 bootstrap框架手机网页模板

新闻列表jquery.SuperSlide整体切换

3套CRM,CMS,etc系统后台模板 bootstrap数据管理页面 - Adminto v1.5

layui后台HTML框架管理系统模板

INSPINIA - 响应CRM后台模板 附加前端单页滚动模板

jquery顶部导航浮动二级菜单

5套响应式大型在线商城HTML5模板_各行业电商模板HTML框架 - MyStore

服务器费用不足...
 工具推荐 更多»