转载 

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

分类:架构    336人阅读    IT小君  2021-08-02 22:42

一、什么是负载均衡:

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

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

二、基于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。

点击广告,支持我们为你提供更好的服务

html5图标下拉搜索框自动匹配代码

响应式时尚单品在线商城网站模板

jQuery右端悬浮带返回顶部特效

响应式太阳能能源公司网站模板

html5 canvas彩色碎片组合球形旋转动画特效

html5 svg夜空中星星流星动画场景特效

响应式咖啡饮品宣传网站模板

HTML5 Canvas竖直流动线条背景动画特效

中小型创意设计服务公司网站模板

css鼠标跟随文字模糊特效

canvas炫酷鼠标移动文字粒子特效

HTML5现代家居装潢公司网站模板

js+css3抽奖转盘旋转点餐代码

小众时尚单品在线电子商务网站模板

html5 canvas进度条圆环图表统计动画特效

css+js实现的颜色渐变数字时钟动画特效

有机水果蔬菜HTML5网站模板

HTML5数字产品服务公司网站模板

网页设计开发公司网站模板

现代时尚家具公司网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务