比較核心的技術了 虛擬ip的一種實現方式(手工添加和C#添加)


    虛擬IP技術在高可用領域像數據庫SQLSERVER、web服務器等場景下使用很多,很疑惑它是怎么實現的,偶然,發現了一種方式可以實現虛擬ip。它的原理在於同一個物理網卡,是可以擁有多個ip地址的,至於虛擬網卡,也可用通過該方式擁有多個ip。下面,就拿安裝vmware后的虛擬網卡做例子,該網絡連接已具有192.168.32.1的ip,嘗試添加一個192.168.32.6的虛擬ip地址,介紹這兩種方式。

   第一種,手工添加

   1、打開控制面板,在想要添加虛擬ip的網絡連接上右鍵,選擇屬性。在打開的屬性窗口中選中“此連接使用下列項目”中的“Internet 協議版本 4 (TCP/IPv4)”。

    

    2、點擊“屬性”按鈕,進入“Internet 協議版本 4(TCP/IPv4)屬性”窗口,可以看到,該網絡連接設置了固定的ip地址為192.168.32.1。

    3、點擊“高級”按鈕,進入“高級TCP/IP設置”窗口。

    4、點擊在IP地址欄中的添加按鈕,彈出添加IP地址的窗口,輸入192.168.32.6即可,子網掩碼自動生成。

    5、點擊添加按鈕后,一步一步點擊確定按鈕,最后,嘗試ping一下該虛擬ip地址。能ping通,則成功了。

 

 第二種, C#添加虛擬IP

    采用編程方式,可以自動添加和移除該虛擬IP地址,所謂的虛擬IP地址的轉移就是這么來實現的。當擁有虛擬IP的機器故障時,在故障機器上嘗試刪除該虛擬IP並在健康機器上重新添加該虛擬IP。具體的實現就相當復雜了,下面,就列出添加虛擬IP的代碼,供參考。

    需要在該項目上引用“System.Management”程序集。

using System;
using System.Management;

namespace ProJKY{

    public class AddVirtualIpAddress {
        public void Test() {
            ManagementClass findAdapters =
                            new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection adapters = findAdapters.GetInstances();

            foreach (ManagementObject adapter in adapters) {
                // 查找符合條件的網卡
                if ((string)adapter["ServiceName"] != "VMware Virtual Ethernet Adapter for VMnet8")
                    continue;

                string[] ip = new string[] { "192.168.32.1","192.168.32.6"};
                string[] mask = new string[] { "255.255.255.0","255.255.255.0"};

                try{
                    ManagementBaseObject newIP = adapter.GetMethodParameters("EnableStatic");

                    newIP["IPAddress"] = ip;
                    newIP["SubnetMask"] = mask;

                    ManagementBaseObject setIP = adapter.InvokeMethod("EnableStatic", newIP, null);

                    UInt32 result = (UInt32)(setIP["returnValue"]);
                }
                catch (Exception) {
                    throw;
                }
            }
        }
    }
}

需要刪除一個虛擬IP的話,在string[] ip 中去掉虛擬IP和對應的子網掩碼就ok了。經測試,和手工添加的效果一樣,能ping通。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM