pablo cesar aimar 巴勃罗·塞萨尔·艾玛尔

“窗寒西岭千秋雪,门思东雾万里床!”

BlogJava 首页 新随笔 联系 聚合 管理
  16 Posts :: 3 Stories :: 6 Comments :: 0 Trackbacks

2006年1月16日 #

随着各行业信息化建设的发展,使人们对网络服务器的处理能力、高可用性提出了更高的要求。尤其是高度信息化的企业中,关键性网络服务已经成为企业生成过程中的重要环节,服务的中断意味着生产的中断,机会的丧失。
    负载平衡不但可以有效地解决单服务器的性能限制,而且可以实现故障的快速转移,保证服务的高可用性以及灵活的扩展性。于是,负载平衡几乎是每个网络管理员的必修课。本文章主要讲述windows2003在网络负载平衡(Network Load Balancing )方面的应用。
    Windows的负载平衡主要是依靠组建网络负载平衡群集来实现的,支持WEB、FTP、Proxy、VPN、Windows Media、Telnet等服务器的负载平衡。
    负载平衡的原理
    NLB其实就是提供相同服务的一系列服务器同时监听服务请求,并允许在同一时间运行多个应用程序实例。NLB的核心是位于网络适配器驱动和网络层之间的WLBS.SYS的筛选器驱动。NLB把每个IP数据包分发到所有群集节点,并根据数据包的源地址、目标地址、传输层协议、端口、群集的配置参数以及算法做出由某个节点处理而其他节点丢弃此数据包的统一决定。
负载平衡的概念
    配置负载平衡之前,需要理解几个重点概念。
    群集IP 地址和子网掩码:群集的虚拟IP地址,是表现在客户面前的"外部"地址。
    专用IP 配置和子网掩码:群集各节点的本地IP地址,唯一标识群集的各节点。
    完整Internet名:能够访问此群集的DNS名称,比如cluster.it.com.cn。
    群集操作模式:在方案的选择中详细讲述。
    端口规则:windows2003中新加的功能,细化了控制微粒,可以阻止某节点特定应用程序的流量,而在windows2000中这是不能实现的。
    优先级(单一主机标识符):范围在1-32之间(32是一个群集的最大节点数)。此值决定如何处理没有包含在任何为群集定义的端口规则中的传入网络通讯。具有最高优先级的主机(优先值最小)将处理所有这种通讯。
负载平衡的要求
    操作系统的要求 在windows2003的所有版本系统中,NLB都是可用的。群集可以兼容以前的windows服务器操作系统(比如2000,NT4.0)。
    网络结构的要求
    NLB可以在连接到FDDI(光纤分布式数据接口),以太网,吉比特以太网的服务器上运行,但不能在Token Ring(令牌环)网络上运行。
    网卡的要求
    所有的网络适配器必须在Windows2003的硬件兼容列表中。一般情况下,服务器的网卡都会符合要求。
    交换机和路由器的要求
    当计划使用VLAN来防止交换数据洪水时,必须确保交换机支持VLAN设置;当使用多播时,部分路由器不支持把单播IP地址映射为一个多播MAC地址,需要手工设置。
    通讯协议的要求
    绑定到群集的网络适配器只能安装TCP/IP协议,可以必须静态分配,不支持DHCP。
    应用程序的要求
    首先必须是TCP或UDP通讯,而且确定当前应用程序或服务必须支持NLB。
负载平衡的设计
    由于网络负载平衡不能根据CPU和内存利用率来分配流量,而且性能并不是随着节点数量的增加而线性变化的(因为随着规模的增大,由此产生的网络开销,CPU开销也随着增大),,所以正确的设计和规划负载平衡是至关重要的。
    群集的实现需要群集内部的通讯(比如心跳信息和聚合通讯)以及管理和内容复制的数据传输。这部分通讯占用了网络的可用带宽。为了克服单网卡的局限性,可以使用双网卡,一个用于负载客户端的通讯,另一个用于传输内部通讯,管理和内容的数据。
    群集操作模式的选择是设计的重要一步。单播模式是指各节点的网络适配器被重新指定了一个虚拟MAC(由02-bf和群集IP地址组成确保此MAC的唯一性)。由于所有绑定群集的网络适配器的MAC都相同,所以在单网卡的情况下,各节点之间是不能通讯的,这也是推荐双网卡配置的原因之一。为了避免交换机的数据洪水,应该结合VLAN使用。
    多播模式下,网络适配器在保留原有的MAC地址不变的同时,还分配了一个各节点共享的多播MAC地址。所以,即使单网卡的节点之间也可以正常通讯。但单网卡的带宽占用、竞争网络适配器等缺点仍然存在。
    此外,部分路由器(特别是Cisco产品)还不支持单播IP地址和多播MAC的ARP映射的自动创建,需要手工配置。IGMP多播(只有在选中多播时,才可以选择此项),在继承多播的优点之外,NLB每隔60秒发送一次IGMP信息,使多播数据包只能发送到这个正确的交换机端口,避免了交换机数据洪水的产生。
    端口规则是windows2003的新特性。NLB提供3种筛选模式,可以针对端口规则采取禁止、多主机负载平衡和单主机的特殊处理。其中,多主机筛选模式提供了真正意义上的负载平衡,并且可以根据节点的实际处理能力进行负载量的分配。
    单个群集的最大节点数为32,如果还不能满足需要,可以使用Round-Robin Domain Name Service把请求映射到多个群集上(但也因此引入了单点故障DNS,除非DNS冗余)。
负载平衡的安装与配置
    Windows2003引入了网络负载平衡管理器(控制面板->管理工具),使负载平衡的安装和配置更加简单。管理器可以容易的实现群集的建立、删除,节点的添加、 删除、修改以及故障的检测。
    运行网络负载平衡管理器,选择 群集 -> 新建 ,弹出"群集参数"对话框,按需要配置。如下:


下一步,系统会提示添加附加群集IP,如果不需要可直接按下一步进行端口配置。以web群集配置为例,其典型端口配置如下图所示:如果会话状态不保存在该群集上,则相似性选择无,否则选择单一或者类C

之后,指定一台主机连接,并选择一个可用的网络接口,进行主机参数的设置:

点击完成,管理器会自动连接到主机上进行相关配置来创建一个新的群集。可以双击日志项目,了解NLB管理器都进行了什么配置。

    虽然,使用NLB管理器是一个微软推荐的方法,但使用NLB.EXE命令行仍然有它独特的优点:反应快,便于批处理。因此,掌握NLB命令也是快速部署的需要。

负载平衡的安全考虑

    群集的远程管理特性允许管理员在远程计算机上使用NLB.EXE管理群集。但启用此功能后,会带来安全风险,比如密码泄露和DOS (拒绝服务攻击)。如果启用,请确保密码足够复杂,并且根据需要在防火墙上进行访问策略的配置(比如封锁UDP端口17172504)。

    总结

    负载平衡负载平衡是一项综合的技术,在实施过程中往往伴随着其他技术的应用。比如网络负载平衡群集和服务器群集的结合,甚至与存储区域网络或网络附加存储相关联都是一个不错的主意。

posted @ 2006-02-17 11:39 pablo cesar aimar 阅读(403) | 评论 (0)编辑 收藏

import java.io.*;

public class Test {
    public static void main(String[] args) {
        try {
            Process process = Runtime.getRuntime().exec("ipconfig /all");
            InputStreamReader ir = new InputStreamReader(process
                    .getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            String line;
            while ((line = input.readLine()) != null)
                if (line.indexOf("Physical Address") > 0) {
                    String MACAddr = line.substring(line.indexOf("-") - 2);
                    System.out.println("MAC address = [" + MACAddr + "]");
                }
        } catch (java.io.IOException e) {
            System.err.println("IOException " + e.getMessage());
        }
    }
}
posted @ 2006-01-21 10:20 pablo cesar aimar 阅读(722) | 评论 (0)编辑 收藏

 
 
 
       近来在网上经常见有人问起Mac地址的问题,那么究竟Mac地址是什么?在现行的网络中,扮演什么角色呢?下面我们就一同来探讨一下关于Mac地址的知识。
       什么是Mac地址?

  Mac地址就是在媒体接入层上使用的地址,通俗点说就是网卡的物理地址,现在的Mac地址一般都采用6字节48bit(在早期还有2字节16bit的Mac地址)

  前24位由是生产厂家向IEEE申请的厂商地址(这可是要花钱的哦!据说1000美元才能买一个地址块)。后24位就由生产厂家自行定以了。(早期的2字节的却不用申请)

  IP地址和Mac地址有什么联系和区别

  大家都知道,现在有很多计算机都是通过先组建局域网,然后通过交换机和Internet连接的(大学里的校园网就是这样)。然后给每个用户分配固定的IP地址,由管理中心统一管理,这样为了管理方便就需要使用Mac地址来标志用户,防止发生混乱,明确责任(比如网络犯罪)。另外IP地址和Mac地址是有区别的,虽然他们在局域网中是一一对应的关系。IP地址是跟据现在的IPv4标准指定的,不受硬件限制比较容易记忆的地址,而Mac地址却是用网卡的物理地址,多少与硬件有关系,比较难于记忆。

  如何知道自己的Mac地址

  方法比较多,也比较得简单,在这里介绍两种常用的方法,在Win9x 可用:WinIPcfg获得,在2000、XP可用IPconfig -all获得。如果你已经给自己的网卡分配了IP还可以用 nbtstat -A 自己的IP 如下图,后者只能在2000/XP下使用。

如何获得别人的Mac

  其实上面已经涉及到了,如果是2000/XP用户可以用 nbtstat -A IP地址(还可以获得别的东东啊,可别学坏啊)。另外同一局域网内的,你可以用ping IP 或者ping 主机名,然后用arp -a 来获得。

  如何修改自己的Mac地址

  Mac地址是保存在网卡的EPROM里面,通过网卡生产厂家提供的修改程序可以更改存储器里的地址,即使网卡没有这样的设置我们也可以通过间接的方法修改,一般网卡发出的包的源Mac地址并不是网卡本身写上去的,而是应用程序提供的,只是在通常的实现中,应用程序先从网卡上得到Mac地址,每次发送的时候都用这个Mac做为源Mac而已,Windows中,网卡的Mac保存在注册表中,实际使用也是从注册表中提取的,所以只要修改注册表就可以简单的改变Mac

  Win9x中修改:

  打开注册表编辑器,在HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Service\Class\Net\下的0000,0001,0002 Win2000/XP中的修改:同样打开注册表编辑器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果在0000找到,就在0000下面添加字符串变量,命名为"NetworkAddress",值为要设置的Mac地址,例如:000102030405
完成上述操作后重启就好了。

  Linux下的修改:

  1.必须关闭网卡设备,否则会报告系统忙,无法更改。

  命令是:"ifconfig eth0 down"

  2.修改Mac地址,这一步较Windows中的修改要简单。

  命令是:"ifconfig eth0 hw ether 00AABBCCDDEE"

  3.重新启用网卡

  "ifconfig eth0 up"网卡的Mac地址更改就完成了。

  现在还有很多软件提供了修改Mac地址的功能,如:Mac2001

  那么既然IP和Mac地址都可以改,那么怎么防御呢?通过简单的交换机端口绑定(端口的Mac表使用静态表项),可以在每个交换机端口只连接一台主机的情况下防止修改Mac地址的盗用,如果是三层设备还可以提供:交换机端口-IP-Mac 三者的绑定,防止修改Mac的IP盗用,这种方法更有效!还有些方法如配置交换机的VLAN,使用用户认证等,都略显复杂,再次不多浪费笔墨。
posted @ 2006-01-16 14:17 pablo cesar aimar 阅读(495) | 评论 (0)编辑 收藏