为 openstack 实例分配静态 ip

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图1

DemonHunter211 2018-03-30 14:40:04 为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图2
1541 为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图3
为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图4
收藏 2

分类专栏: OpenStack

最后发布: 2018-03-30 14:40:04 首次发布: 2018-03-30 14:40:04

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/kwame211/article/details/79757474

版权

  1. 为 instance 配置静态 IP 存在什么问题?
  2. 如何才能实现为 instance 配置静态 IP?
  3. 设置静态 ipNewton 是否可以通过界面完成?

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图5

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

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

非常遗憾,不行!

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

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

有!

方法是:

[Bash shell] 纯文本查看 复制代码

?

  1. 先创建 port,设置好 IP 地址。
  2. 将该 port attach instance
  3. instance 中手工配置静态 IP

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

命令行操作

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图6

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图7

最重要的就是 —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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图8

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图9

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图10

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

编辑 /etc/network/interfaces。

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图11

重启 eth0。

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图12

IP 生效。

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图13

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图14

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

horizon 操作

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

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图15

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图16

点击 “Create Port” 按钮。

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图17

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

为openstack 实例分配静态ip_kwame211的博客-CSDN博客_openstack 分配外网ip - 图18

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

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

好了,以上就是设置静态 IP 的方法
https://blog.csdn.net/kwame211/article/details/79757474