为 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 ...
随机推荐
- javascript-变量-作用域
1.var message; ----这样定义的变量值为undefined 2.去掉var则为全局变量--message = “100”: 3.function fun(){ var messag ...
- pku2104
传送门:http://poj.org/problem?id=2104 题目大意:给定一个长度为N的数组{A[i]},你的任务是解决Q个询问.每次询问在A[l], A[l+1], ...... , A[ ...
- sqlite3编译
1.sqlite3编译: 1.PC版: 1.解压: tar xvf sqlite-autoconf-3140100.tar.gz cd sqlite-autoconf-3140100/ 2.检查配置 ...
- Angular - - $interpolate 和 $parse
$interpolate 将一个字符串编译成一个插值函数.HTML编译服务使用这个服务完成数据绑定. 使用:$interpolate(text,[mustHaveExpression],[truste ...
- BNU Online Judge-34976-数细菌
题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34976 题目分析通过a b可以设x,y x+y=a x+3*y=b 解出x,y, ...
- C# App.config配置文件的讲解
App.config是C#开发WinForm程序的配置文件,开发Web程序的配置文件叫Web.config.本文介绍App.config的简介使用. 我们先来打开一个App.config文件,看看它的 ...
- EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题
EasyUI datagrid 删除的时候无法正确找到重复记录row index的问题: 如果无法正确找到重复记录的row index,就需要进行注意添加的时候所进行的 操作:如果添加的时候就是添加的 ...
- css块级标签,行内标签,行内块标签的转换(2)
css块级标签,行内标签,行内块标签的转换 版权声明 本文原创作者:雨点的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/ 在基础1中,我详细讲 ...
- GreenDao 3.2.0 的基本使用
前言 Android开发中我们或多或少都会接触到数据库.Android中提供了一个占用内存极小的关系型数据库-SQLite.虽然Android系统中提供了许多操作SQLite的API,但是我们还是需要 ...
- 小谈JavaScript中this的用法
"this"关键字是JavaScript中广泛应用的一种特性,但它经常也是这门语言中最容易混淆和误解的特性.那么"this"的实际意义是什么?它是如何求值的? ...