在阿里云上创建ECS实例的时候,云会自动配置公网ip和内网ip。但实质在该ECS实例上只有内网ip,可以通过ifconfig进行查看,如下图:eth0是一个内网网卡,上面绑定的是内网的ip。其工作原理应该是在一个数据中心中,使用更加快速的内网来通信。而该数据中心与外部链接应该通过一个交换机类的服务器,将内网ip转换成对应的外网ip。
所以,内网ip绑定在ECS上,而外网ip并没有在本机上,而是绑定在数据中心的专属服务器上,方便统一管理。但是有些应用需要通过本机网卡来读取公网ip进行一系列的操作,例如MPI通信库。则在创建的ECS上无法完成此类的操作。所以需要自己进行配置,将公网ip绑定到本机上。
阿里云提供了弹性网卡
的服务,我们可以利用弹性网卡将公网ip绑定到弹性网卡上,然后再将弹性网卡绑定到本机ECS实例上。
-
在实例页面的
网络和安全组
中,将公网ip转换成弹性公网ip
。
-
在
网络和安全组
中将刚刚转换的弹性公网ip从实例上解绑,选择解绑弹性公网
。 -
现在需要将解绑下来的弹性公网ip绑定到弹性网卡上。
-首先在左列表中找到网络与安全,在弹性网卡中创建一个弹性网卡,注意要和ECS实例在同一个区域,否则不能进行绑定!
-然后在左列上级列表中找到专有网络VPC
-在公网访问
中找到弹性公网ip
。这就是我们刚刚从ECS实例上解绑下来的弹性公网ip
-我们将弹性公网ip
绑定到弹性网卡上,点击绑定资源
注意:一定要选择EIP网卡可见模式或者多EIP网卡可见模式
,这样才能在本机ifconfig中查找到相应的公网ip信息。这个给出了各地阿里云数据中心所支持的EIP网卡可见模式的区域:此外仅华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华南1(深圳)、西南1(成都)、新加坡、印度尼西亚(雅加达)、德国(法兰克福)、英国(伦敦)、美国(弗吉尼亚)地区支持EIP网卡可见模式
- 这样在弹性网卡页面就可以看到绑定好的公网ip了,最后一步将绑定了弹性公网ip的弹性网卡绑定到实例上。
- 绑定好以后,这时候并不能通过ssh连接公网ip登录服务器,需要在实例列表出通过
远程连接-NVC远程连接
登录到服务器中进行设置。
-需要设置dhcp,将绑定好的弹性网卡显示出来:
sudo vim /etc/network/interfaces
然后在interfaces中添加以下配置(弹性网卡的名字设置为了eth1
)
auto eth1
iface eth1 inet dhcp
最后执行
sudo dhclient eth1
即可在ifconfig中显示eth1中的公网ip,此时也可以ssh公网ip进行登录了。
- 另外在Openmpi执行中,由于添加了两个网卡,需要指定一个网卡进行mpirun执行多机通信
mpirun -hostfile hostfile --mca btl_tcp_if_include eth1 -np n exe
所以添加--mca btl_tcp_if_include eth1
参数即可指定网卡。