Azure上的那些IP
Posted yangyangchenjie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure上的那些IP相关的知识,希望对你有一定的参考价值。
相信第一次接触Azure的读者都会碰到这样一个问题,就是Azure的IP地址,笔者第一次接触Azure也是被搞懵逼了,一会儿VIP,不知道的还以为是会员的意思呢,一会儿又是DIP,后来又来了个PIP,所以很容易搞混淆,所以今天笔者稍微讲一下这几种IP!!!
Azure的IP地址分为下面几类
VIP.负载均衡的IP地址(也可以叫公用虚拟IP地址)
DIP.内部IP地址(Azure官网还叫VIP:x,x表示端口号)
PIP.实例层级公共IP
废话不多说,先贴一张图
这张图我是从官网上扣下来的,个人认为这张图画的还是比较清晰的
一.VIP
概述.在ASM中,这个IP地址是必须的,是SLB负载均衡的IP地址,你也可以认为是一个云服务的IP地址,你可以这么理解,但是其实它是附着在SLB上的(以前Azure的SLB是用vm搭建的,现在都是物理机做的,这就是为什么阿里的SLB仍然要单独收费,微软免费的原因),因为我们知道云服务相当于一个容器,里面包含了你的各种部署,但是这个容器外面的SLB是暴露给Internet的,在以前的ASM中,每个云服务都可以免费获取一个VIP,如果需要额外的VIP地址需要支付一定的费用,外部人员通过Internet访问该云服务就是访问的该VIP地址的。
VIP有如下几个特点
1.首先,该IP地址是SLB的,而SLB附着云服务的上的,但是该云服务里面必须有部署,否则不会分配VIP,在不固定VIP的前提下,一旦部署删除,VIP也会随即释放,举个例子,当在同一个云服务中部署两台VM,这两个VM的VIP一样,但是如果这两台VM一旦被删除,该VIP也会被释放,但是在ARM中,如果不创建SLB(并且该虚拟机不分配PIP),那么该虚拟机就没有公共IP地址。
2.该IP地址是禁ping的,因为SLB是禁止了ICMP协议的,而ping就是基于ICMP协议的。
3.该IP地址是可以固定的,可以通过powershell固定,如果不固定,一旦系统重启以后该VIP会变,但是即使固定了,一旦删除云服务中的部署被删除,该VIP仍然会变化,但是前一个VIP仍然被你独占。
二.DIP
概述.Azure为云服务中的每个部署提供一个虚拟IP地址,就是DIP,一般该地址都是私有IP,只能实现内网之间的互访。
DIP有如下几个特点
1.这是Azure VM的内网IP地址,在同一虚拟网络中的不同VM就是通过DIP互相通信的(当然可以在子网中使用NSG进行策略)。
2.Azure的DIP的分配原则是先到先得的,最先创建并开机的VM会获得第一个可用的DIP。
3.DIP也可以通过powershell固定,无论在ASM还是ARM里,即使该VM被停止或者关机了,该DIP仍然为其保留,但是如果你删除了该VM,在ASM中,该DIP就会被释放,不会再为其保留,如果在ARM中,如果只是删除给虚拟机,该DIP仍然被独占,因为有一个网络接口没被删除,那是虚拟机的虚拟网卡所在,所以DIP仍然还保留着。
三.PIP
概述.我们知道虚拟机的DIP是无法被外网直接访问的,必须通过VIP加端口号才能访问,但是如果该虚拟机附加了PIP,外网就可以直接访问,在ASM中,PIP是不可选的,只能是动态的,在ARM中,是可选的,可以设置为静态,除此以外,我们知道,在Azure的虚拟网络内部,是禁ping的,也就是说只有DIP的两台虚拟机即使在同一内网里面仍然是ping不通的,但是附加了PIP,这两台虚拟机就可以ping了,这是为什么,这是由于这时的ping的数据包其实不是走虚拟网络传输的,而是借助于Internet,这样就等于直接绕过虚拟网络和SLB,这样当然可以ping通,但是有人发现一个奇怪的问题,为什么我附加了PIP的VM可以ping通百度,但是访问不了百度,这是什么原因呢?因为你的虚拟机外被设置了NSG,而NSG默认只开启了22端口,就是SSH,所以你的80端口被关闭,当然不能使用http服务了,又由于NSG只能限制TCP/UDP的流量,而不能限制ICMP,所以当然可以ping通百度。
PIP有如下几个特点
1.PIP是独立的公网IP地址,和负载均衡的IP地址不一样。
2.当同一个虚拟网络中的两台VM都保留了静态PIP,这两个PIP肯定是不同的。
3.如果某台VM我们使用了PIP,所有的请求都直接发送给该VM,在不设NSG的前提下,该VM不需要配置终结点,因为所有的终结点都是暴露在Internet上的。
4.如果VM开启了PIP,就可以直接ping通,原理如上。
以上是关于Azure上的那些IP的主要内容,如果未能解决你的问题,请参考以下文章
静态托管 - Azure Azure CDN上的Azure Blob存储上的ReactJS应用程序
使用不同租户上的 Azure Active Directory 访问 Azure Service Fabric 应用程序上的 Key Vault