负载均衡热备模式下服务器网卡的主备切换问题

简介:

今天讨论拓扑中负载均衡部署在冗余网络结构下,服务器双网卡的切换问题。

122727326.png

图一

图一拓扑中四台服务器与负载均衡直接相连,每台服务器双网卡各连接一台负载均衡,负载均衡热备模式部署,服务器双网卡也绑定为主备模式。当负载均衡发生主备切换时,服务器的主备网卡也跟随切换。其实这样的应用需求非常的普遍,但实际网络拓扑更常见是的如图二所示结构。服务器不直接与负载均衡连接,服务器数量也不必受到负载均衡物理接口数量的限制,这样的网络架构,一对负载均衡设备可以为几百台服务器提供应用交付。

122836349.png

图二

先看看图二中主备切换时,服务器网卡是如何切换的。服务器双网卡绑定为主备模式,主备网卡的切换条件通常配置为链路检测,发现链路中断时,主备网卡自动切换。从服务器的角度看,冗余链路的主备切换分两种,第一种,服务器到交换机连接链路down掉的主备切换,交换机死机和链路故障都属于这类切换,此时服务器网卡也会进行主备切换;第二种,连接链路是up时的主备切换,此时服务器主备网卡不发生切换,但交换机之间启用VRRPHRSP协议,两台交换机之间的连接线除了传输交换机的状态信息外,也可以传输业务数据。服务器数据报文传输链路如图三所示,网络发生主备切换时,服务器依然能正常接入网络。

123006784.png

图三

但第二种主备切换发生在图一拓扑中时就会遇到问题,原因是负载均衡HA心跳线只传输ha相关数据,不传输业务数据,因此当负载均衡主备切换,而服务器网卡不能主备切换时,服务器是无法接入网络的。

这里提供两种解决方案:

方案一、改变服务器双网卡主备模式的检测方法:以linux服务器为例,服务器双网卡绑定在网络上常见的配置参数如下,millmon=100是对链路状态检测的配置项,这也是上述无法主备切换的原因。

/etc/modprobe.d/bonding.conf 

alias bond0 bonding

options bond0 mode=1 miimon=200

mode=1表示主备模式

millmon=100,表示每100ms监测一次链路连接状态

 

可以将链路状态检测改为arp请求检测,当负载均衡发生主备切换时,主网卡向原来的主负载均衡发送arp请求,由于floating-ip已经漂移到新的主设备上,原来的主设备不会回应服务器的arp请求,服务器arp请求超时后,主备网卡发生切换。服务器双网卡绑定检测方式更改如下:

/etc/modprobe.d/bonding.conf 

alias bond0 bonding

options bond0 mode=1 arp_interval=60 arp_ip_target=2.2.2.1 arp_validate=all

mode=1表示主备模式

arp_interval =100表示100毫秒发一次arp请求

arp_ip_target=2.2.2.1表示主网卡发出的arp请求,IP一般是服务器网关地址,这网关地址在图一拓扑中是负载均衡的floating-ip

arp_validate=all arp保持验证,一定要配置不然无法实现预期的网卡切换。

方案二、负载均衡实现服务器vlan的数据透传:当服务器受操作系统或其他原因限制,无法通过更改服务器配置实现双网卡主备切换时,可以采用此解决方案。两台负载均衡设备之间除了HA心跳线,还需要一条打通主备负载均衡上服务器段vlan的链路,最简单方法是在两台设备之间再增加一条连接链路,其作用是实现如图三所示的数据传输。

负载均衡新增配置较为简单,主备设备只需将新增链路接口划入服务器所在vlan,接口类型为tagged即可。

vlan 10

untagged ethernet 1 to 4

tagged ethernet 7

router-interface ve 10

name " servers"

从整体上来说,方案一实现服务器双网卡的主备切换更为合理,方案二是非常规环境下,负载均衡设备完全通过自身配置调整的解决之道,是没有办法的办法。


本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/1227388



相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
22天前
|
域名解析 移动开发 负载均衡
阿里云DNS常见问题之DNS负载均衡调加权模式失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
25天前
|
弹性计算 运维 监控
slb后端服务器组(Backend Server Group)关联
阿里云SLB的后端服务器组提供逻辑分组、精细化路由、端口隔离、权重分配与会话保持等功能,便于资源管理、流量控制和故障隔离。通过监听规则、健康检查、标签和API关联,实现灵活的后端资源配置,适应多变的业务需求,确保服务稳定性和资源利用率。
15 1
|
29天前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
25 3
|
30天前
|
存储 弹性计算 编解码
ecs实例规格工作负载模式
阿里云ECS实例有多种工作负载模式:计算密集型(适合高性能计算)、内存密集型(适用于内存数据库)、通用型(平衡资源,多场景适用)、大数据型(优化大数据分析)、共享型(低成本,轻负载)和企业级实例(高稳定性和隔离性)。用户依据业务需求选择实例规格,结合SLB和ESS服务可优化架构,应对动态负载。
22 4
|
4月前
|
负载均衡 网络协议 网络架构
VRRP负载均衡模式配置实用吗?
VRRP负载均衡模式配置实用吗?
65 0
|
4月前
|
存储 设计模式
用反应器模式和epoll构建百万并发服务器
用反应器模式和epoll构建百万并发服务器
36 0
|
4月前
|
移动开发 前端开发 JavaScript
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
|
28天前
|
弹性计算 负载均衡
slb添加后端服务器
阿里云SLB服务用于流量分发,提升系统可用性和响应速度。添加ECS实例到SLB的步骤包括:登录控制台,选择“弹性计算”->“负载均衡”,找到目标SLB实例,进入详情页,点击“添加后端服务器”。挑选ECS实例,可按ID、名称或标签筛选,设置权重(默认100),并确保ECS实例状态正常,与SLB在同一地域,安全组允许SLB连接。添加后可考虑配置健康检查等高级选项。
14 1
|
28天前
|
弹性计算 负载均衡 网络安全
slb创建后端服务器组
在阿里云SLB服务中创建后端服务器组,需登录控制台,选择目标SLB实例,进入监听器设置,添加后端服务器。选择ECS实例或ENI,设定服务器端口和权重,然后保存设置。此操作将ECS实例纳入SLB的负载均衡与健康检查管理。
15 1
|
1月前
|
弹性计算 负载均衡
slb添加后端服务器
阿里云SLB服务实现流量分发,提升业务可用性和响应速度。添加后端服务器步骤包括:登录控制台,选择“弹性计算”->“负载均衡”,点击目标SLB实例进入详情,点击“后端服务器”->“添加ECS实例”。筛选并选择ECS实例,设置权重,确认后点击“确定”。添加后检查健康检查状态,确保ECS实例状态正常,同地域、可用区,并配置好安全组规则。
16 2