如何实现虚拟机重启后IP地址不变

原创 2014年03月23日 19:09:06

在Windows Azure上创建一个虚拟机,系统会为其分配一个动态的内部地址,即Dynamic IP,简称DIP。DIP地址可方便同一个云服务或同一个虚拟网络内部的虚拟机藉此相互通信。

为了实现虚拟机与外界进行通信,系统还会为虚拟机所在的云服务提供一个公用虚拟地址,即VirtualIP,简称VIP。需要注意的是,这个VIP不是直接设置在虚拟机的NIC上。

在虚拟机内部做配置时,有时需要指定虚拟机的IP地址,根据情况,有时这个IP是DIP,有时是VIP。完成这些配置后,就会存在一个问题,虚拟机一旦被停机,重启以后这些设定好的IP是否能保持不变?

如何保持内部IP不变

这个问题要分情况讨论。第一种情况:如何保持虚拟机的DIP不变。Azure的虚拟机的DIP一般是动态分配的。为了做到虚拟机停机后重启DIP不变,必须把虚拟机置于某个虚拟网络之内。为了展示这个效果,我们先创建了一个虚拟网络win-demo-vnet,并在这个网络中创建了一个子网Subnet-1,起始IP地址是192.168.0.0。下图显示了一个处于该虚拟网络的虚拟机cent-vm-in-vnet:


该虚拟机的VIP和DIP如下图所示。注意,由于子网的头4个IP地址会被Azure征用,所以加入子网的第一个虚拟机的DIP地址是192.168.0.4。


当我们在Windows Azure管理门户中点击“关闭”按钮,准备关闭此虚拟机时,会得到提示如下图:


虚拟机关闭后,可以看到该虚拟机的VIP和DIP的确已被释放。


当我们重新启动该虚拟机后,可以发现该虚拟机的VIP发生了变化,从原先的42.159.24.131变为42.159.25.12。而DIP仍然保持为原先的192.168.0.4。


如何保持公用虚拟IP不变

下面我们讨论一下如何维持VIP不变。这里重申一下,VIP不是直接与虚拟机关联的,而是与虚拟机所在的云服务关联的IP。如果想保持云服务的VIP不变,只需要云服务中仍然有虚拟机没有被关闭和释放(StoppedDeallocated)。这里需要对虚拟机的关闭方式稍作解释。

虚拟机有两种关闭方式:

简单关闭(Stopped):从虚拟机内部来关机,或者通过PowerShell的Stop-AzureVM -StayProvisioned都能实现简单关闭。虚拟机被简单关闭后,其占据的IP资源并没有被释放。因此,这种情况下,虚拟机即使停机仍然会被计费。下图就是一个被简单关闭的虚拟机。


关闭并释放(Stopped Deallocated):在管理门户点击虚拟机的“关闭”按钮,或者使用PowerShell的Stop-AzureVM命令,在关闭虚拟机后还会释放其占据的IP资源。只有关闭且释放了资源的虚拟机才不会被继续计费。

在下图所示的虚拟机列表中,被简单关闭的虚拟机的状态是“已停止”,而那些被释放资源的虚拟机的状态是“已停止(已取消分配)”。


根据这个事实,如果虚拟机的关闭是我们可以主动控制的,那么可以通过简单关闭虚拟机来保持VIP。

但很多时候,虚拟机的关闭不是我们能主动控制的,例如出现硬件故障或软件需要升级。这时系统会自动关闭虚拟机。这种情况下虚拟机不仅被关闭,其占据的IP资源也被释放。此时,我们该如何保持VIP呢?唯一的办法是让云服务中仍然有资源未被释放的虚拟机。

Windows Azure一直提倡的设计原则是,相同负载的虚拟机应该至少有2个,且把它们放置于同一个云服务中的可用性集合里。这样,在绝大多数情况下,当某一个虚拟机被关闭且释放资源后,云服务中仍然会有一个运行的虚拟机。

作为实验,我们向先前的虚拟机cent-vm-in-vnet所在的虚拟网络和云服务中添加一个新的虚拟机cent-vm2-vnet,如下图:


可见,它与cent-vm-in-vnet共享相同的VIP42.159.25.12。下面我们看一下这时如果关闭cent-vm-in-vnet虚拟机会有什么效果。右下图可见,虚拟机关闭后,其DIP被释放,但云服务的VIP仍然保持不变。这正是因为云服务中还有虚拟机cent-vm2-vnet在运行。


当把虚拟机cent-vm-in-vnet重启后,可发现该虚拟机的VIP和DIP重新恢复为42.159.25.12和192.168.0.4。



虚拟机固定ip配置

VM虚拟机Centos6.4网络配置。 关于虚拟机VMware 3种网络模式(桥接、nat、Host-only)的工作原理 http://www.cnblogs.com/hehexiaox...
  • azymq
  • azymq
  • 2015年04月19日 10:31
  • 468

VMware学习2_解决VMware虚拟机重启后IP地址变化问题

VMware重启后,IP地址可能会发生变化,给环境配置和软件安装带来了很大的不变,所以需要把VMware虚拟机的IP地址设定为固定值,避免因为因IP地址变化而重新修改配置文件。 打开VMware软件,...
  • wang_zhenwei
  • wang_zhenwei
  • 2015年09月24日 09:27
  • 7157

《虚拟机下的Linux的IP地址每次启动时会自动变化,可否让其固定》

问题: 如何设置CentOs?客户机操作系统是Red hat Linux 如何设置CentOs的IP地址为永久固定的一个ip?随机产生的实在很头痛!我的客户机操作系统是Red hat Linux ...
  • BlackEnn
  • BlackEnn
  • 2016年08月08日 06:02
  • 3720

固定虚拟机下的Linux的IP地址每次启动时会自动变化

图形界面——应用程序——系统工具——工具——网络
  • csdn_gyz
  • csdn_gyz
  • 2016年12月14日 19:10
  • 1930

如何实现虚拟机重启后IP地址不变

在Windows Azure上创建一个虚拟机,系统会为其分配一个动态的内部地址,即Dynamic IP,简称DIP。DIP地址可方便同一个云服务或同一个虚拟网络内部的虚拟机藉此相互通信。 为了实现虚...
  • zuojihong
  • zuojihong
  • 2014年03月23日 19:09
  • 2905

关于使用VMware搭建Linux虚拟机配置IP你应知道的一切

前言最近需要测试一个数据抽取调度的环境,没办法自己搭建一个虚拟机,在设置IP这块碰到了不少问题,这里总结整理一下!关于VMware的使用,和虚拟机的搭建这里就不多介绍了,基本上参照网上的一些教程什么的...
  • aiynmimi
  • aiynmimi
  • 2017年07月19日 19:26
  • 852

docker固定IP地址重启不变

代码地址 https://github.com/lioncui/docker-static-ip 使用前先安装docker-py,和bridge-utils 直接运行脚本 cd docke...
  • lion_cui
  • lion_cui
  • 2015年09月16日 16:28
  • 1578

虚拟机的拷贝后MAC地址冲突的解决

1、首先,如果从一台电脑往别一台电脑拷贝虚拟机,其中虚拟机必须是关掉的,如果暂停状态下拷贝,则在别一台电脑是运行不起来的。 2、将新虚拟机的网口都删掉,再生成,刚mac地址就会变,如果还不变,则以H...
  • zhaozhanyong
  • zhaozhanyong
  • 2010年10月15日 15:07
  • 666

关于虚拟机克隆后如何给克隆出来的虚拟机配ip

Ifconfig -a命令 确认是否有eth1网卡 编辑网卡设备# vi/etc/udev/rules.d/70-persistent-net.rules 注释掉eth0网卡的信息 记录eth1的MA...
  • m0_37938433
  • m0_37938433
  • 2018年02月09日 23:06
  • 11

virsh命令虚拟机生命周期管理以及获取虚拟机ip

一、virsh管理虚拟机生命周期 virsh define domain.xml virsh start domain virsh vncdisplay domain virsh list -...
  • lineuman
  • lineuman
  • 2017年02月21日 20:54
  • 2088
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何实现虚拟机重启后IP地址不变
举报原因:
原因补充:

(最多只允许输入30个字)