pablo cesar aimar 巴勃羅·塞薩爾·艾瑪爾

          “窗寒西嶺千秋雪,門思東霧萬里床!”

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            16 Posts :: 3 Stories :: 6 Comments :: 0 Trackbacks

          2006年1月21日 #

          隨著各行業信息化建設的發展,使人們對網絡服務器的處理能力、高可用性提出了更高的要求。尤其是高度信息化的企業中,關鍵性網絡服務已經成為企業生成過程中的重要環節,服務的中斷意味著生產的中斷,機會的喪失。
              負載平衡不但可以有效地解決單服務器的性能限制,而且可以實現故障的快速轉移,保證服務的高可用性以及靈活的擴展性。于是,負載平衡幾乎是每個網絡管理員的必修課。本文章主要講述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 閱讀(413) | 評論 (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 閱讀(732) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 清涧县| 乌兰县| 濮阳县| 定日县| 绥江县| 仪征市| 晋州市| 庆城县| 五河县| 吉水县| 潮安县| 黔东| 侯马市| 运城市| 抚远县| 清水河县| 溧阳市| 新巴尔虎左旗| 凯里市| 松潘县| 娄底市| 通海县| 新蔡县| 阿荣旗| 大厂| 柳州市| 涡阳县| 子长县| 连江县| 武功县| 星子县| 巫溪县| 呼和浩特市| 万山特区| 泗洪县| 北海市| 江北区| 巫山县| 札达县| 咸阳市| 清远市|