这是 OpenStack 实施经验分享系列的第 7 篇。

传统运维中为服务器配置静态 IP 是再常见不过的了。但在 OpenStack 环境下只能指定 network,IP 都是 Neutron 从 subnet IP 池中自动分配的。

有同学就会想办法了:等 instance 起来后手工把 IP 改掉行不行?

非常遗憾,不行!

instance 网卡的 IP 和 Mac 地址是记录在 port 中的,计算节点的 iptable 会根据 port 信息生成相应的 rule,只有与 port 匹配的 IP 和 Mac 才能允许在 Neutron 网络中通信。

那还有没有办法为 instance 配置静态 IP 呢?

有!

方法是:

  1. 先创建 port,设置好 IP 地址。

  2. 将该 port attach 到 instance。

  3. 在 instance 中手工配置静态 IP。

Newton 版本之前只能用命令行完成上面的操作。不过从 Newton 开始 horizon 已经支持了。我们先看命令行如何实现。

命令行操作

instance “c1” 当前还没有任何网卡。

第一步:用 neutron port-create 命令创建 port,设置 IP。

最重要的就是 --fixed-ip 参数了,指定 IP 和 IP 所属的 subnet。

另外还可以指定 Mac 地址(可选),这在某些场景下有用。之前有个项目客户的商业软件是绑定在特定 Mac 地址上的,所以必须给 instance 网卡指定 Mac。

Network 参数指定 port 所属的网络。

下面的命令创建了一个 vlan111 的 port,IP 为 17.17.111.33。

neutron port-create --fixed-ip subnet_id=e0e251a0-0e38-4b70-9904-6b791fcf8d33,ip_address=17.17.111.33 vlan111

第二步:执行 nova interface-attach 命令将 port attach 到 instance。

操作系统已经能够识别到该网卡 eth0,但 IP 还需要手工设置。

第三步:在 instance 配置静态 IP。

编辑 /etc/network/interfaces。

重启 eth0。

IP 生效。

并且可以 Ping 到同网段其他 IP。

如果这里我们配置的 IP 不是 port 中定义的 17.17.111.33 还能 Ping 通吗?这个问题留给大家自己去验证。

horizon 操作

horizon 在 Newton 版本中支持在创建 port 时设置 IP 地址,也就是说步骤一我们可以直接在 Web GUI 中完成了。

菜单 “Admin -> System -> Networks”。

点击网络 “vlan111”,然后点击 “Ports” 标签。

点击 “Create Port” 按钮。

设置 IP 17.17.111.55,然后点击 “Create Port” 按钮。

port 创建成功,目前还没有 attach 到 instance,所以状态为 “Down”。

horizon 目前还不支持直接将 port attach 到 instance,这个操作还得通过命令行,具体请参考前面的示例。希望新版本的 horizon 能加入这个功能。

好了,以上就是设置静态 IP 的方法,下一节我们继续分享实施经验。

为 instance 配置静态 IP - 每天5分钟玩转 OpenStack(157)的更多相关文章

  1. 创建 floating IP - 每天5分钟玩转 OpenStack(106)

    先复习一下前面我们讨论的知识. 当租户网络连接到 Neutron router,通常将 router 作为默认网关.当 router 接收到 instance 的数据包,并将其转发到外网时: 1. r ...

  2. 配置 DHCP 服务 - 每天5分钟玩转 OpenStack(89)

    前面章节我们看到 instance 在启动过程中能够从 Neutron 的 DHCP 服务获得 IP,本节将详细讨论其内部实现机制. Neutron 提供 DHCP 服务的组件是 DHCP agent ...

  3. 将 instance 连接到 first_local_net - 每天5分钟玩转 OpenStack(82)

    上一节 first_local_net 已经就绪,下面创建 instance 并将其连接到该网络. 将 instance 连接到 first_local_net launch 一个 instance, ...

  4. ML2 配置 OVS VxLAN - 每天5分钟玩转 OpenStack(146)

    今天我们开始学习 OVS 如何实现 Neutron VxLAN,关于 VxLAN 的概念以及 Linux Bridge 实现,大家可以参考前面相关章节. Open vSwitch 支持 VXLAN 和 ...

  5. 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)

    上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...

  6. 将 instance 连接到 flat_net - 每天5分钟玩转 OpenStack(88)

    上一节我们创建了 "flat_net",本节将在此网络中部署 instance 并验证连通性. launch 新的 instance “cirros-vm1”,选择网络 falt_ ...

  7. 配置 L2 Population - 每天5分钟玩转 OpenStack(114)

    前面我们学习了L2 Population 的原理,今天讨论如何在 Neutron 中配置和启用此特性. 目前 L2 Population 支持 VXLAN with Linux bridge 和 VX ...

  8. 配置 L3 agent - 每天5分钟玩转 OpenStack(99)

    上一节我们介绍了路由服务(Routing)的基本功能,今天教大家如何配置. Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 fir ...

  9. 将 instance 连接到 second_local_net - 每天5分钟玩转 OpenStack(85)

    今天是 local network 的最后一个小节,我们将验证两个local network 的连通性. launch 新的 instance “cirros-vm3”,网络选择 second_loc ...

随机推荐

  1. iOS + UIWebView 实践

    1. 调用java script 现在只能实现弹出窗口 [self.m_webView stringByEvaluatingJavaScriptFromString:@"alert(1)&q ...

  2. [Angular Tutorial]PhoneCat Tutorial App

    (注:曾经在<不敢止步>一书中看到学到一个观点,作者认为学习一门技术最好的方法就是翻译某部领域书籍.这里我决定做一次尝试,接下来花1个月左右时间,将Angular Tutorial Pho ...

  3. Variation of e.touches, e.targetTouches and e.changedTouches

    We have the following lists: touches: A list of information for every finger currently touching the ...

  4. Python计算一个项目中含有的代码行数

    最近想要知道以前做过的project有多少行代码,因为文件太多,直接手工数效率太低,于是编写一个python程序用来计算一个project有多少代码行. 首先,在一个项目中,有很多子文件夹,子文件夹中 ...

  5. 得到css style

    //根据ID返回dom元素 2 var $ = function(id){return document.getElementById(id);} 3 //返回dom元素的当前某css值 4 var ...

  6. IE6滤镜在实战测试中能让父层里面的子元素产生阴影

    1.写法一: <div class="cornerbg">    <p class="title-file">------</p& ...

  7. HDU1217:Arbitrage(SPFA)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意 在每种钱币间进行各种交换,最后换回自己如果能赚,那么就Yes,否则No 注意应为有负权 ...

  8. MapReduce深度分析(二)

    MapReduce深度分析(二) 五.JobTracker分析 JobTracker是hadoop的重要的后台守护进程之一,主要的功能是管理任务调度.管理TaskTracker.监控作业执行.运行作业 ...

  9. 查找子字符串----KMP算法深入剖析

    假设主串:a b a b c a b c a c b a b      子串:a b c a c 1.一般匹配算法 逐个字符的比较,匹配过程如下: 第一趟匹配 a b a b c a b c a c ...

  10. TTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。

    解决办法一: 控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能. 勾选上“.net扩展性”和“ASP.NET”,保存后,重 ...