虚拟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通。

比较核心的技术了 虚拟ip的一种实现方式(手工添加和C#添加)的更多相关文章

  1. Devexpress WinForm TreeList的三种数据绑定方式(DataSource绑定、AppendNode添加节点、VirtualTreeGetChildNodes(虚拟树加载模式))

    第一种:DataSource绑定,这种绑定方式需要设置TreeList的ParentFieldName和KeyFieldName两个属性,这里需要注意的是KeyFieldName的值必须是唯一的. 代 ...

  2. 虚拟IP原理及使用

    一.前言 高可用性 HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性.HA 系统是目前企业防止核心 ...

  3. Linux建立虚拟ip的方法

    文章来源 运维公会:Linux建立虚拟ip的方法   1.虚拟ip的介绍 虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址.数据包被发送到这个VIP地址, ...

  4. 虚拟IP技术 ip地址漂移技术

    虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址.数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口.VIPs大部分用于连接冗余:一个VI ...

  5. 虚拟IP技术

    虚拟IP技术在高可用领域像数据库SQLSERVER.web服务器等场景下使用很多,很疑惑它是怎么实现的,偶然,发现了一种方式可以实现虚拟ip.它的原理在于同一个物理网卡,是可以拥有多个ip地址的,至于 ...

  6. LVS专题-(3) 虚拟ip理解

    1.虚拟IP是什么? 要是单讲解虚拟 IP,理解起来很困难,所以干脆把 动态 IP .固定 IP .实体 IP 与虚拟 IP都讲解一下,加深理解和知识扩展 实体 IP:在网络的世界里,为了要辨识每一部 ...

  7. 实体ip 虚拟ip 固定ip 动态ip

    实体 IP:在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 位址的定义.一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 207.46.197.101 』这个 IP ...

  8. Linux-eth0 eth0:1 和eth0.1关系、ifconfig以及虚拟IP实现介绍

    eth0 eth0:1 和eth0.1三者的关系对应于物理网卡.子网卡.虚拟VLAN网卡的关系:物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡 ...

  9. 虚拟ip配置

    虚 拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址.数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口. VIPs大部分用于连接冗余:一个 ...

随机推荐

  1. PHP&MySQL 语法

    PHP操作MySQL数据库 第一步:连接数据库 $dbhost = 'localhost:3306'; //mysql服务器主机地址 $dbuser = 'guest'; //mysql用户名 $db ...

  2. Python之路【第十九篇】:爬虫

    Python之路[第十九篇]:爬虫   网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...

  3. Java web--反射(解刨)

    本质:先加载类           再解刨类的方法,字段,构造函数 目的:解刨出构造函数       为了new对象 解刨出字段             为了封装数据进去 解刨方法           ...

  4. C# 远程网络唤醒介绍及代码

    一.定义 网络唤醒:唤醒休眠状态下的计算机,而不是已关机的计算机. 优势:可通过定时功能实现自动唤醒计算机,减少人力使用. 实现方法:通过被唤醒机的MAC地址进行广播发送请求,唤醒计算机. 二.硬件设 ...

  5. Node.js 的初步理解

    Node.js 是一个采用C++语言编写的后端的 Javascript 的运行环境, 它使用了 google 的 V8虚拟机来解释和执行代码.Node.js 的有许多有用的内置的模块,比如 http, ...

  6. char *p 与char p[] 比较

    看看下面的程序的输出: #include <stdio.h>char *returnStr(){    char *p="hello world!";    retur ...

  7. 说一说inline-block的奇葩之处

    今天本来想聊一下margin和padding,但是当我给div加了一个display:inline-block之后,发现一个问题: .box_demo{border: 1px solid #333;w ...

  8. C语言提供了几个标准库函数 itoa() atoi()

    C语言提供了几个标准库函数C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...

  9. 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台

    面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...

  10. LC.exe已退出,代码为-1错误

    因为证书的原因,把项目中“properties”目录下的“license.licx”文件删除,再编译就成功了.如图: