首页 > 编程知识 正文

windows服务器负载均衡,windows网络负载均衡和均衡

时间:2023-05-04 09:47:17 阅读:216227 作者:3899

最近有用户投诉某服务器上的应用程序在某段时间反应缓慢。(其实这个问题之前一直存在,只是最近比较频繁。)服务器组的同事对服务器检查,DBA对数据库检查均无结果,最后只能怀疑网络了。按理来说,核心用两台华为9712支持200多台服务器网络不该承受不了。可怀疑来了,就必须找出理由说明不是我们的问题,不是网络问题!

查找现象,这是找出任何问题的根据。让值班的同事在问题发生的时候对产生问题的服务器及服务器段的交换机以及其他服务器做ping包测试。结果是,ping问题服务器延时很大。ping网关正常。ping其他服务器,部份正常,部分延时很大。客户段机器互ping正常。

问题服务器延时大,部分服务器也延时大。难道真是网络的问题?立即对延时大的服务器及问题服务器进行抓包分析。对问题服务器连接的交换机进行流量及cpu使用率的监控。从数据来看交换机的各项参数正常,问题服务器的流量也不高,只在数据备份的时候有比较大的数据流量通过。那为什么会出现网络延时达800ms的现象呢?几近无果的时候,发现一奇怪现象。每次对服务器的抓包都捕获一对机器间的流量,虽然流量不大,但不应该在该抓包机器上出现。为什么?为什么在每台服务器上的抓包都有该对机器的流量存在?马上对该问题流量进行解码,从数据包上没看出有什么特殊的地方。毕竟目标,源ip明确,目标mac,源mac地址明确。可这种行为只有广播包才会发生,不该在一对明确目标的机器之间发生呀。但有明确的目标地址,有明确的mac地址,却是广播包!会是哪里的问题呢?对,只有在目标mac地址不存在于交换机的mac-address table时才会发生。果然,show mac-address-table 在9712上没找到该mac地址,但show arp 里却存在。难道,数据包的目标mac是假的?为证实该情况,找来服务器组的同事,登录到发出问题流量的机器进行mac 地址的核查。可在机器上使用ipconfig   /all 证实了mac地址是存在的。既然存在,为什么在交换机上查询不到?难道交换机出故障了?在跟服务器同事谈服务器反应缓慢问题时,无意中了解到,我查看mac地址的机器用了微软的NLB来实现负载均衡,两台服务器共用1个虚拟ip地址。两台服务器共用1个ip地址?那是不是两台服务器共用1个虚拟mac地址?果然,经查看,用了同一个虚拟mac地址。那就是说,在一台交换机上至少有两个端口出现了同一个mac地址。所以mac-address table 里没办法记录。没有相应的绑定的交换机端口,交换机只能广播,交换机的每个端口都能收到该对机器数据。呵呵,谜团解开了。

可是,这跟反应缓慢有什么关系呢?不知道!因为在检查期间往采用NLB机器写进数据流量不大。那好,我把流量放大,看看对实际环境有什么影响。当我往NLB机器上拷贝2GB的数据时,用户来电话投诉服务器上的应用程序反应缓慢!呵呵,还立马生效了。

虽然导致问题的根源找到了,可为什么影响的只是部分服务器,按理广播是对整个2层交换机生效的。为什么部分服务器却不受影响?这个问题,看来还得花时间好好检查一下。对NLB的处理方法?一,取消使用NLB,呵呵,不是所有管服务器都同意的。二,采用NLB的多播模式,效果还没测试过。三,把虚拟地址绑定到一个端口上。我就是采用这个方法。有什么好处?网络是我权力范围,做任何改动不需要跟人协商,想改就改。呵呵,开玩笑的。因为使用NLB的不是重要服务器!有什么坏处?NLB就不再是NLB咯,跟取消使用没分别。四,为使用NLB的服务器提供一台专用的Hub或交换机连接。五,跟四的原理一样,在交换机上为使用NLB的服务器划分一个单独的Vlan.

PS:服务器的同事要求做组播NLB,除了要改变服务器的选项外,还要在交换机上 arp X.X.X.X XXX.XXX.XXX.XXX arpa 进行相应的IP与mac地址邦定就可以了。

后记:问题的原因终于比较清晰了,受NLB影响的机器,都是比较繁忙的服务器(实际上正如NLB原理,在同一网段的机器都会受影响)。这些繁忙的服务器,一方面要处理本身的应用数据,及网络流量;另一方面又要处理NLB带来的非自身所需的网络信息。最终,处理速度远远小于接收速度,造成了机器的极大延迟!

NLB:

单播:在每个集群成员上,NLB 覆盖网络适配器上制造商提供的 MAC 地址。NLB 对所有成员都使用相同的单播 MAC 地址。这种模式的优点是它可以无缝地与大多数路由器和交换机协同工作。缺点是到达集群的流量会扩散到交换机虚拟 LAN (VLAN) 上的所有端口,并且主机之间的通信不能通过 NLB 绑定到的适配器,也即实体主机间不可以互相通信。若我们在NLB创建时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改为此MAC地址。

多播:保留原厂 MAC 地址不变,但是向网络适配器中增加了一个第 2 层多播 MAC 地址。所有入站流量都会到达这个多播 MAC 地址。优点是这种方法可以通过在交换机的“内容可寻址存储器”(CAM) 表中创建静态项,从而使得入站流量仅到达群集中的主机。缺点是因为 CAM 项必须静态关联一组交换机端口,如果没有这些 CAM 项,入站流量仍然会扩散到交换机 VLAN 上的所有端口。还有一个缺点就是很多路由器不会自动将单播 IP 地址(集群的虚拟 IP 地址)与多播 MAC 地址关联起来。如果进行静态配置的话,一些路由器可以存在这种关联。若我们在NLB创建时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。在选择多播模式时,后面还有个复选项“IGMP Multicast(IGMP多播)”,若复选此项,就像多播操作模式一样,NLB 保留原厂 MAC 地址不变,但是向网络适配器中增加了一个 IGMP 多播地址。此外,NLB 主机会发出这个组的 IGMP 加入消息。如果交换机探测到这些消息,它可以使用所需的多播地址来填充自己的 CAM 表,这样入站流量就不会扩散到 VLAN 上的所有端口。这是这种群集模式的主要优点。缺点是有一些交换机不支持 IGMP 探测。除此之外,路由器仍然支持单播 IP 地址到多播 MAC 地址的转换。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间可以互相通信。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。