亚马逊AWS学习——多网络接口下配置EC2实例连接公网的一个“bug”
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47667627
本文出自【我是干勾鱼的博客】
之前在《亚马逊AWS学习——EC2的自己定义VPC配置》这篇文章中讲述了怎样设置自己定义VPC并使自己的EC2实例能够连接公网。本篇说一下连接公网时会出现的一个小问题。
如题所看到的,在一个EC2实例具有多个网络接口的环境下,假设为其配置公网连接会有一个“bug”。事实上也不能说是“bug”,而是AWS网络环境的限制。
1. 主网络接口
我们知道,非常多时候我们的一台主机须要有多个网络接口,以使其同一时候架设在不同的网络中。
EC2实例创建时会有一个主网络接口,默认描写叙述为“Primary network interface”,每台EC2实例至少有一个网络接口。就是这个主网络接口。主网络接口,相应一个默认的子网,不能与EC2实例进行分离操作。当然也就不能被删除。
2. 弹性网络接口(ENI)
“Elastic Network Interface”即弹性网络接口,简称ENI。
AWS的官网上对弹性网络接口(ENI)是这样解释的:弹性网络接口 (ENI) 是能够包括下面属性的虚拟网络接口:
主要私有 IP 地址
一个或多个次要私有 IP 地址
每一个私有 IP 地址一个弹性 IP 地址
一个公有 IP 地址。可在您启动实例时自己主动分配给 eth0 的网络接口。可是仅当您为 eth0 创建网络接口而不是使用现有的网络接口时才干实现此自己主动分配
一个或多个安全组
MAC 地址
源/目标检查标记
描写叙述
说得太正规了啊。小鱼也有些望而生畏。
只是世间一切奇怪之物的第一特点不是奇怪。而是看起来奇怪。
大的是看起来好大。小的是看起来非常小。否则《冰河世纪》里的猛犸象妹妹也不用躲在小树后面以为自己是仅仅鼹鼠,蚂蚁看到自己的写真照片也要取代螳螂去做劫匪了。
这ENI再具有弹性,也还是个网络接口而已,说白了就是一块网卡。因为EC2是虚拟设备。网卡的环境也被虚拟了出来。当我们须要自己的EC2实例同一时候处于多个子网中时,就须要为其添加ENI。添加了ENI之后还要将其附加到EC2实例上,选择“EC2”服务,点击左导航“网络接口”,在列表中选中一项。再点击“附加”,如图:
假设该网络接口是“in-use”状态,“附加”button就不能再点击。
3. EC2实例连接公网的必要条件
要让EC2实例连接公网有一些必要的条件:
所在子网必须选择了”自己主动分配公有IP“
设置步骤是这种:
1.打开 Amazon VPC 控制台。
2.在导航窗格中,单击 Subnets (子网)。3.选择您的子网,单击 Subnet Actions,并选择 Modify Auto-Assign Public IP(改动自己主动分配公有IP)。
4.假设选中,则 Enable Auto-assign Public IP (启用自己主动分配公有 IP) 复选框会为在所选子网中启动的全部实例都请求公有 IP 地址。选中复选框。然后单击 Save (保存)。
如图:
必须创建了公网网关(igw)而且关联到VPC的路由表
选中相应的路由表项。能够看到如图:
4. 多网络接口的限制
好了。卖关子卖了这么久,如今该说重点了。
假设你为自己的一台EC2实例事先设置好了多个网络接口,又把什么”自己主动分配公有IP“啊,igw啊都设置好了。实例一启动,呀!居然还是没有公有IP。当然也就不能上网,这是为嘛呢?
因为这是AWS EC2的一个限制,正常情况下一个实例仅仅会分配一个公网IP,除非使用EIP。
对于多个网卡的实例,启动的时候,一个公网IP不能分配给两个网卡ENI,因此分配IP失败。
有的同学说,我尽管有两块网卡,但仅仅有一个设置了公网IP。但实例启动之后发现还是没有成功。是的。这也是不行的。因为虚拟化和底层架构的设计,AWS EC2会限制仅仅要网络接口有多个就不去分配公网IP,而无论你是不是仅仅有一个网络接口设置了公网IP。
5. 解决的方法
非常多时候我们就是须要一台实例相应多个网络接口(要不然要ENI干嘛),这该怎么办呢?
方法一——投机取巧法
有一个稍稍取巧的办法,在EC2实例启动之前,先仅仅保留一个网络接口,并保证其设置了公有IP。然后启动实例。这时候你会发现实例公有IP设置成功!这时候再将其它ENI附加上去,就能够啦!
只是这种方法另一个限制。假设你停止。然后启动了实例。这时候AWS会尝试又一次分配公有IP,可是检測到多个ENI,所以仍然不能分配公有IP。
公有IP分配又会失败。
方法二——土豪法
配置EIP。是的就这么简单。只是停机是要付费的。
哎。这让我又爱又恨的AWS。。
。
亚马逊AWS学习——多网络接口下配置EC2实例连接公网的一个“bug”的更多相关文章
- 亚马逊AWS学习——EC2的自定义VPC配置
1 网络配置 EC2即亚马逊AWS云服务中的虚拟主机.创建EC2实例时如果使用的默认VPC并分配了公有IP是可以上网的.但我们经常需要自定义的网络环境,这时就需要自己定义VPC和子网了. 1.1 配置 ...
- 亚马逊AWS学习——EC2的自己定义VPC配置
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47153421 本文出自[我是干勾鱼的博客] 1 网络配置 EC2即亚马逊AWS云 ...
- 亚马逊AWS学习——VPC里面几个概念的关系
VPC中涉及几个概念: VPC 子网 路由表 Internet网关 安全组 今天来讲讲这几个概念之间的关系. 1. VPC 说的就是VPC,当然VPC范围是最大的,VPC即virtual privat ...
- 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6
概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...
- 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台
GTX Compressor (直压上云技术预览版) Powered by GTXLab of Genetalks. 技术预览版本下载地址: https://github.com/Genetalks/ ...
- 亚马逊AWS的route53的收费,月费最低 0.9 USD
亚马逊AWS的route53的收费Amazon Route 53 定价 https://aws.amazon.com/cn/route53/pricing/ 一文中,对于一些术语的解释第一项收费--域 ...
- 亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动
领了一个亚马逊的1年免费服务器,今天尝试安装 Nginx 服务器,使用原生的 Shell 方法. 为了方便以后查看,就把过程记录一下. 注意:亚马逊(AWS)服务器默认只能用 user-ec2 账户进 ...
- 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...
- 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5
概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...
随机推荐
- Java Secret: Using an enum to build a State machine(Java秘术:用枚举构建一个状态机)
近期在读Hadoop#Yarn部分的源代码.读到状态机那一部分的时候,感到enmu的使用方法实在是太灵活了,在给并发编程网翻译一篇文章的时候,正好碰到一篇这种文章.就赶紧翻译下来,涨涨姿势. 原文链接 ...
- DatabaseMetaData开发实务
1.总论 在企业开发实务中,数据迁移是经常会遇到的事情,此时,需要搞清楚,源数据库与目的数据库之间表以及表内部各列之间的异同.而有些时候,我们拿到的项目文 档,未必能准确表述各个表的准确结构,即使应用 ...
- OC中的类扩展
类扩展 是在原有类的基础扩展一个新的属性和对象方法 但是方法的实现还是要写在原有的声明中,不然是不会被访问到的 类扩展可以扩展在新的头文件中,然后在主函数中导入. 利用类扩展可以变相的实现属性的私有化 ...
- ROS-turtlesim
前言:turtlesim是ros自带的一个功能包,应该是用于基础教学的功能包,帮助新手入门的一个实例,包括:节点,主题,服务以及参数的应用.通过学习使用turtlesim功能包可以了解ros的一些基础 ...
- Django开发之路 一(django安装并测试运行)
安装Django与测试 1.虚拟环境的安装 一般来说Django的开发最好是在虚拟环境上进行,这样的好处是可以将不同的Django的项目的环境分割开来,相互不影响.比如说项目一用到Python2.x和 ...
- 设置cookie,删除cookie,读取cookie
1.首先来说下cookie的作用 我们在浏览器中,经常涉及到数据的交换,比如你登录邮箱,登录一个页面.我们经常会在此时设置30天内记住我,或者自动登录选项.那么它们是怎么记录信息的呢,答案就是今天的主 ...
- java8 stream 流 例子
Trader raoul = new Trader("Raoul", "Cambridge"); Trader mario = new Trader(" ...
- html5中canvas(2)
1.绘制图片(drawImage)(重点) 1.1 基本绘制图片的方式 context.drawImage(img, x, y); 参数: img 可以为:图片.视频或者canvas画布 x,y 绘制 ...
- hdu 2795 Billboard 【线段树】
给出一个高为h,宽为w的广告板,有n张广告需要贴,从第一行开始贴,尽量靠左,输出每个广告最后贴在哪一行的 先一直想不通这样建树是为什么 后来看到一篇题解里面的一句话“直到找到一个满足条件的叶子节点” ...
- Hive 基本操作
1.创建一个表 (字段表名不加引号‘,分隔符需要加引号) create table t1( id int ,name string ,hobby array<string> ,add ma ...