为 instance 配置静态 IP - 每天5分钟玩转 OpenStack(157)
这是 OpenStack 实施经验分享系列的第 7 篇。
传统运维中为服务器配置静态 IP 是再常见不过的了。但在 OpenStack 环境下只能指定 network,IP 都是 Neutron 从 subnet IP 池中自动分配的。
有同学就会想办法了:等 instance 起来后手工把 IP 改掉行不行?
非常遗憾,不行!
instance 网卡的 IP 和 Mac 地址是记录在 port 中的,计算节点的 iptable 会根据 port 信息生成相应的 rule,只有与 port 匹配的 IP 和 Mac 才能允许在 Neutron 网络中通信。
那还有没有办法为 instance 配置静态 IP 呢?
有!
方法是:
先创建 port,设置好 IP 地址。
将该 port attach 到 instance。
在 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)的更多相关文章
- 创建 floating IP - 每天5分钟玩转 OpenStack(106)
先复习一下前面我们讨论的知识. 当租户网络连接到 Neutron router,通常将 router 作为默认网关.当 router 接收到 instance 的数据包,并将其转发到外网时: 1. r ...
- 配置 DHCP 服务 - 每天5分钟玩转 OpenStack(89)
前面章节我们看到 instance 在启动过程中能够从 Neutron 的 DHCP 服务获得 IP,本节将详细讨论其内部实现机制. Neutron 提供 DHCP 服务的组件是 DHCP agent ...
- 将 instance 连接到 first_local_net - 每天5分钟玩转 OpenStack(82)
上一节 first_local_net 已经就绪,下面创建 instance 并将其连接到该网络. 将 instance 连接到 first_local_net launch 一个 instance, ...
- ML2 配置 OVS VxLAN - 每天5分钟玩转 OpenStack(146)
今天我们开始学习 OVS 如何实现 Neutron VxLAN,关于 VxLAN 的概念以及 Linux Bridge 实现,大家可以参考前面相关章节. Open vSwitch 支持 VXLAN 和 ...
- 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)
上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...
- 将 instance 连接到 flat_net - 每天5分钟玩转 OpenStack(88)
上一节我们创建了 "flat_net",本节将在此网络中部署 instance 并验证连通性. launch 新的 instance “cirros-vm1”,选择网络 falt_ ...
- 配置 L2 Population - 每天5分钟玩转 OpenStack(114)
前面我们学习了L2 Population 的原理,今天讨论如何在 Neutron 中配置和启用此特性. 目前 L2 Population 支持 VXLAN with Linux bridge 和 VX ...
- 配置 L3 agent - 每天5分钟玩转 OpenStack(99)
上一节我们介绍了路由服务(Routing)的基本功能,今天教大家如何配置. Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 fir ...
- 将 instance 连接到 second_local_net - 每天5分钟玩转 OpenStack(85)
今天是 local network 的最后一个小节,我们将验证两个local network 的连通性. launch 新的 instance “cirros-vm3”,网络选择 second_loc ...
随机推荐
- Python3基础 使用id() 查询变量的存储位置
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- App外包开发周期一般多长?
很多人问我,开发一个app要用多长时间.事实上开发一款app没有固定周期的,得因产品而论,你软件的功能需求决定了app外包开发的周期.但是除了app本身以外,人为因素往往对开发周期也有一定的影响.例如 ...
- php 禁用eval( )函数
php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的. 但是eval()对于php安全来说具有很大的杀伤力,因此一般不用的情况下为了防 ...
- Javascript正则表达式完全学习手册
正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率.本文从零开始介绍了应如何学习正则表达式.文中范例主要为JavaScript. 正则表达式可以很恐怖,真得很恐怖. ...
- H-W平衡
hardy-weinberg平衡:标准定义————如果一个种群符合下列条件:1.种群是极大的:2.种群个体间的交配是随机的,也就是说种群中每一个个体与种群中其他个体的交配机会是相等的:3.没有突变产生 ...
- 【BZOJ 3926】【ZJOI 2015】诸神眷顾的幻想乡
http://www.lydsy.com/JudgeOnline/problem.php?id=3926 广义后缀自动机的例题,感觉广义后缀自动机好恶心... 广义后缀自动机是对一个trie建立的后缀 ...
- win32 安装 xcache扩展
今天整了一上午,才整明白. 我的系统是是 win7 32位 ,用的环境是 Wamp,php版本是5.3.5,后来在http://xcache.lighttpd.net/pub/Releases/3.0 ...
- 几种常用的控件(下拉框 可选框 起止日期 在HTML页面直接读取当前时间)
下拉框 <div class="form-group"> <label class="col-xs-3 c ...
- JavaScript 模拟策略模式
/** * 模拟一个接口,其方法会抛出异常: */ function FlyInter () {} FlyInter.prototype.fly = function() { throw '实现这个接 ...
- redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
使用哨兵模式连接redis连接池时,遇到错误: Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sen ...