单播

在单播模式下,NLB重新对每个NLB节点中启用NLB的网络适配器分配MAC地址(此MAC地址称为群集MAC地址),并且所有的NLB节点均使用相同的MAC地址(均使用群集MAC地址),同时NLB修改所有发送的数据包中的源MAC地址,从而使交换机不能将此群集MAC地址绑定在某个端口上。 工作在单播模式下的NLB可以在所有网络环境下正常运行,但是由于它的工作特性,具有以下两个限制: 由于NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,所以所有的NLB通讯均通过在交换机的所有端口上广播进行,而不管此端口是否连接了NLB节点,这造成了额外的网络流量负担; 由于所有的NLB节点具有相同的MAC地址,NLB节点之间不能通过自己原有的专用IP地址进行通讯。若我们在NLB创建时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改为此MAC地址。

 

多播

在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通讯(此MAC地址称为群集MAC地址),这样NLB节点之间可以通过自己原有的专用IP地址进行通讯。但是在多播模式中,NLB节点发送的针对群集IP地址MAC地址ARP请求的ARP回复会将群集IP地址映射到多播MAC地址,而许多路由器或者交换机(包括CISCO的产品)会拒绝这一行为。当出现这种情况时,你必须在路由器和交换机上手动添加静态映射,将群集IP地址映射到群集的多播MAC地址。 Windows Server 2003提供了一个新的特性,称为IGMP 多播,它可以通过使用IGMP协议支持来使交换机只将NLB通讯发送到连接NLB节点的端口,而不是所有交换机端口。但是此特性必须要求交换机支持IGMP侦听,并且要求群集工作在多播模式下。若我们在NLB创建时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间可以互相通信。

如何选择

一般来说,在NLB的创建时,单网卡多播,双网卡单播。双网卡单播时,因为主机之间不能互相通信,将设置内网通讯的网卡,也就是群集设置中的心跳。在微软 官方推荐在NLB设置时,首先考虑单播模式,除非单播不能满足其要求,若要解决流量扩展的方法,推荐使用VLAN。

两种模式存在的问题及解决办法

单播:

1、由于NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,所以所有的NLB通讯均通过在交换机的所有端口上广播进行,这就出现了交换机泛洪的现象,可以通过将所有NLB节点添加到一个VLAN中隔离广播的办法解决。

2、由于所有的NLB节点具有相同的MAC地址,所以NLB节点之间不能通过自己原有的专用IP地址进行通讯。 (节点之间就无法ping通)。我们可以采用双网卡来解决节点间通信问题,一块网卡用于启用负责均衡,一块网卡用于节点间通讯。

多播:

1、多播模式下NLB节点之间可以通过自己原有的专用IP地址进行通讯,但是群集IP对应一个多播MAC进行通讯,可能会被不支的路由器或一些交换机拒绝,必须通过在网络设备中添加静态数据的方法解决。

2、由于交换机所有端口中都是使用各个节点实际IP与MAC注册而群集使用多播MAC,所以交换机收到群集的数据包发现交换机没有一个端口是对应群集多播MAC就仍然会广播到所有端口,这样就仍然有交换机泛洪的问题。解决方法也可以采用和单播一样的使用VLAN解决,此外还可以通过勾选IGMP 多播来解决交换机泛洪,但是需要交换机支持此功能。

最后建议如果NLB节点服务器只有一块网卡,请使用多播模式;如果NLB节点服务器拥有多块网卡,或者网络设备(如二层交换机与路由器)不支持多播模式,则可以采用单播模式。

最新文章

  1. 算法与数据结构(十七) 基数排序(Swift 3.0版)
  2. 史上最全最强SpringMVC详细示例实战教程
  3. retrofit2 上传图片
  4. POJ1226:Substrings(后缀数组)
  5. c++ insert iterators 插入型迭代器
  6. sql查询所有表以及表名的模糊查询
  7. 【PyQuery】PyQuery总结
  8. iOS9/iOS8界面对比 XCode7
  9. jQuery练习一好友列表变色
  10. python异常以及面向对象编程
  11. centos 火狐浏览器安装adobe flash player插件
  12. 使用AFNetworking时, 控制器点击返回销毁了, 但还是会执行请求成功或失败的block, 导致野指针异常
  13. 绘图工具graphviz学习使用
  14. git创建版本库以及使用
  15. django 项目中遇到的问题(持续更新中)
  16. 分布式集群Session共享 简单多tomcat8+redis的session共享实现
  17. XamarinAndroid组件教程RecylerView动画组件使用动画(2)
  18. html中用href 实现点击链接弹出文件下载对话框
  19. 第二次作业 --- 我对QQ的评测
  20. centos 6.5内核编译步骤及配置详解

热门文章

  1. 基于easyUI实现权限管理系统(三)——角色管理
  2. 读EntityFramework.DynamicFilters源码_心得_示例演示02
  3. C# WCF服务入门
  4. 任务十六:零基础JavaScript编码(四)
  5. 使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录
  6. 在线官网Spring Initializr 或 IntelliJ IDEA 快速搭建springboot项目
  7. 关于cookie的详解
  8. 两个知识点的回顾(const指针和动态链接库函数dlopen)
  9. oracle 插入大于4000字符的 clob代码
  10. 获取所有权windows目录所有权