之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网模式下默认采用DHCP-Agent模块给虚拟机自动分配ip

现在想给虚拟机指定固定ip,即创建虚拟机的时候指定固定ip。

现分析如下:
背景
1、我们目前使用openstack+docker来搭建自己的私有云
2、openstack有两种网络环境搭建模式,一种是功能较简单的nova-network,一种是neutron方案
3、neutron方案代表着未来的趋势,提供更多高级的功能(例如路由功能和负载均衡服务等),更加方便用户去自定义自己的虚拟化网络
4、在已有的几个集群中,我们在线下开发测试环境中搭建了neutron方案的openstack集群

目的
neutron的设计理念是ip分配应当资源池化,因此在默认的dashboard操作界面上,只能为每个虚拟机指定特定的子网,虚拟机启动时会自动分配该子网可用的ip资源。但是,在很多开发测试场景下,我们还是需要为指定启动的虚拟机配备一个固定的ip,比如需要反复创建、删除虚拟机,这个时候就会希望虚拟机的ip不变,方便测试用例的编写,固定的ip地址也有利于CMDB的管理。

前置条件
所有的操作都基于openstack项目提供的NeutronClient和NovaClient工具,请确保这两个工具已经安装,可以登录openstack的集群管理节点,在命令行界面执行nova和neutron命令,看是否有帮助提示。执行这两个工具,还需要预先获得权限,例如在管理节点上执行这两个命令的话,首先要执行以下命令,执行后就会在环境变量中保存有admin用户的权限信息

[root@openstack-server src]# source admin-openrc.sh

neutron通过修改dhcp服务器的配置文件实现给指定虚拟机配置固定ip,因此要首先要确保虚拟机准备连接的子网的DHCP功能已开启?
查看子网的详细信息,确认子网的dhcp功能已经开启

[root@openstack-server src]# neutron subnet-list
+--------------------------------------+-------------+----------------+----------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+-------------+----------------+----------------------------------------------------+
| c53da14a-01fe-4f6c-8485-232489deaa6e | flat-subnet | 192.168.1.0/24 | {"start": "192.168.1.100", "end": "192.168.1.200"} |
+--------------------------------------+-------------+----------------+----------------------------------------------------+

[root@openstack-server src]# neutron subnet-show c53da14a-01fe-4f6c-8485-232489deaa6e
+-------------------+----------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------+
| allocation_pools | {"start": "192.168.1.100", "end": "192.168.1.200"} |
| cidr | 192.168.1.0/24 |
| dns_nameservers | 192.168.1.17 |
| enable_dhcp | True |
| gateway_ip | 192.168.1.17 |
| host_routes | |
| id | c53da14a-01fe-4f6c-8485-232489deaa6e |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | flat-subnet |
| network_id | 1d9657f6-de9e-488f-911f-020c8622fe78 |
| subnetpool_id | |
| tenant_id | 65a0c00638c247a0a274837aa6eb165f |
+-------------------+----------------------------------------------------+

如上,“enable_dhcp”是“True”,表明子网的dhcp功能已经开启。
********************************************************************************************************************
如果子网的dhcp功能没有开启,可以手动设置进行开启该功能!
[root@openstack-server src]# neutron subnet-update --enable-dhcp c53da14a-01fe-4f6c-8485-232489deaa6e
********************************************************************************************************************

下面详细说下,创建虚拟机的时候,指定固定ip的方法:

1)创建一个和指定子网相关联的端口,并为该端口配置一个固定ip,具体命令格式:
#neutron port-create --fixed-ip subnet_id=SUBNET_ID,ip_address=IP_FROM_POOL --name PORT_NAME NETWORK_ID
说明:
固定ip由自己决定分配哪一个ip,只要这个ip在子网的可用ip范围内,且该ip还未被使用即可。
PORT_NAME自行命名
NETWORK_ID可在前面的neutron subnet-show命令的执行结果中找到。

[root@openstack-server src]# neutron port-create --fixed-ip subnet_id=c53da14a-01fe-4f6c-8485-232489deaa6e,ip_address=192.168.1.101 --name kvm-server001 1d9657f6-de9e-488f-911f-020c8622fe78
Created a new port:
+-----------------------+-----------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------+-----------------------------------------------------------------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | |
| binding:host_id | |
| binding:profile | {} |
| binding:vif_details | {} |
| binding:vif_type | unbound |
| binding:vnic_type | normal |
| device_id | |
| device_owner | |
| dns_assignment | {"hostname": "host-192-168-1-101", "ip_address": "192.168.1.101", "fqdn": "host-192-168-1-101.openstacklocal."} |
| dns_name | |
| fixed_ips | {"subnet_id": "c53da14a-01fe-4f6c-8485-232489deaa6e", "ip_address": "192.168.1.101"} |
| id | 8cc0b915-773d-45b7-9c3a-0e8198818637 |
| mac_address | fa:16:3e:ce:bf:a5 |
| name | kvm-server001 |
| network_id | 1d9657f6-de9e-488f-911f-020c8622fe78 |
| port_security_enabled | True |
| security_groups | 050a6341-57c5-4b01-bc79-09efd9931d9c |
| status | DOWN |
| tenant_id | 65a0c00638c247a0a274837aa6eb165f |
+-----------------------+-----------------------------------------------------------------------------------------------------------------+

2)
启动虚拟机,并在参数中指定要将虚拟机绑定到刚创建的port上,这样虚拟机就会被自动配置port已设置的ip,具体命令格式:
#nova boot --flavor FLAVOR_ID --image IMAGE_ID --nic port-id=PORT_ID INSTANCE_NAME

接着,创建虚拟机,指定固定ip: 【具体参考http://www.cnblogs.com/kevingrace/p/5707003.html 里面创建虚拟机的步骤】

[root@openstack-server src]# nova boot --flavor kvm002 --image CentOS-6.5 --nic port-id=8cc0b915-773d-45b7-9c3a-0e8198818637 --security-group default --key-name mykey kvm-server001
+--------------------------------------+---------------------------------------------------+
| Property | Value |
+--------------------------------------+---------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance-00000017 |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | mFAKr7auzXv8 |
| config_drive | |
| created | 2016-08-30T08:47:06Z |
| flavor | kvm002 (938dd195-ad12-4750-836f-bc8a29a3f7ed) |
| hostId | |
| id | 1a611deb-8560-43fb-a267-cf51c48da709 |
| image | CentOS-6.5 (508db9d4-6c9f-459d-8782-065ee8b6f2c2) |
| key_name | mykey |
| metadata | {} |
| name | kvm-server001 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id | 65a0c00638c247a0a274837aa6eb165f |
| updated | 2016-08-30T08:47:06Z |
| user_id | b29da729de0b4ac2b3be9b519817a2b9 |
+--------------------------------------+---------------------------------------------------+

查看创建的虚拟机,发现ip已经是固定的了!
[root@openstack-server src]# nova list
+--------------------------------------+---------------+--------+------------+-------------+--------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+---------------+--------+------------+-------------+--------------------+
| 1a611deb-8560-43fb-a267-cf51c48da709 | kvm-server001 | ACTIVE | - | Running | flat=192.168.1.101 | |
+--------------------------------------+---------------+--------+------------+-------------+--------------------+

创建好后,使用镜像里的root密码登陆虚拟机,发现ip是上面固定的ip了!

这个时候,也可以手动修改网卡配置:由dhcp修改成static静态方式。

然后重启网卡和虚拟机后,ip不会再变成其他的地址的~~

*********************************************************************************************

openstack私有云环境,在一个计算节点上创建的虚拟机,其实就是一个局域网内的机器群了。

虚拟机和宿主机之间/同一个节点下的虚拟机之间/虚拟机和宿主机同一内网段内的机器之间都是可以相互连接的,即能相互ping通

********************************************************************************************

如果不采用上述方法:即创建虚拟机的时候,不指定固定ip,默认用dhcp自动分配ip方式创建虚拟机。

特别注意:
如果创建虚拟机时不按照上面指定ip操作,那么创建虚拟机后,可登陆机器修改配置网卡文件,将dhcp方式改为static方式!
但是,ip不能修改为其他ip地址,必须修改为dhcp自动为其分配的地址!
要是修改为其他地址,则就和其他虚拟机和同网段内的机器ping不通了!
具体是什么原因导致以及解决方案,有待后续排查~~~

如下,虚拟机kvm-server005创建后,ip是dhcp自动分配的:192.168.1.123

登陆kvm-server005虚拟机本机进行修改:

[root@kvm-server005 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm-server005 network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="db795113-37af-407a-9f78-62f49e26d5c2"

改为static静态ip方式

[root@kvm-server005 network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
IPADDR=192.168.1.123
NETMASK=255.255.255.0
GATEWAY=192.168.1.17
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="db795113-37af-407a-9f78-62f49e26d5c2"

重启网卡,ip就改为静态ip了

完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip的更多相关文章

  1. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置

    继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...

  2. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

    公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...

  3. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像

    在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目录下然后用OZ工具制作openstack ...

  4. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(5)--问题解决

    一.[root@openstack-server ~]# nova listERROR (CommandError): You must provide a username or user id v ...

  5. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(6)--在线调整虚拟机的大小

    前面提到过openstack环境部署及创建虚拟机的完整过程,然后有时候会发现创建的虚拟机规格太小,满足不了业务需求:亦或是虚拟机规格太大,容易造成资源浪费.于是就有了在线拉伸虚拟机规格的需求.所以,今 ...

  6. 《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  7. 《5》CentOS7.0+OpenStack+kvm云平台的部署—组态Horizon

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  8. 《3》CentOS7.0+OpenStack+kvm云平台部署—配置Glance

    感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  9. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 1.操作系统环境配置

    1.OpenStack示例的架构介绍 1.1 各节点介绍 (1)控制节点(controller)控制节点(controller)上运行身份服务,镜像服务,计算节点管理,网络管理,各种网络代理和仪表板. ...

随机推荐

  1. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  2. 学C#之设计模式系列笔记(1)策略模式

    一.借鉴说明 1.<Head First Design Patterns>(中文名<深入浅出设计模式>) 2.维基百科,策略模式,https://zh.wikipedia.or ...

  3. C#开发微信门户及应用(6)--微信门户菜单的管理操作

    前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的技术,一方面是为了和大家对这方面进行互动沟通,另一方面也是专心做好微信应用的底层技术开发,把基础 ...

  4. Linux归档压缩、分区管理与LVM管理

    归档和压缩命令: 命令格式: gzip [-9] 文件名 bzip2 [-9] 文件名 gzip –d .gz格式的压缩文件 bzip2 –d .bz2格式的压缩文件 选项: -9:高压缩比,多用于压 ...

  5. react-echarts之折线图的显示

    react中想要实现折线图和饼图的功能,需要引入react-echarts包,然后再实现折线图的功能.我这里引用的版本是:0.1.1.其他的写法参echarts官网即可.下面详细讲解的是我在react ...

  6. Ubantu【第一篇】:Ubantu中openssh连接

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  7. ArcGIS Engine开发之视图同步

    数据视图与布局视图的同步 数据视图与布局视图的同步,首先要保证数据的一致性,其次就是数据显示范围的一致性.该同步主要涉及IMapControl接口的OnMapReplaced事件和OnAfterScr ...

  8. 最新GHOST XP系统下载旗舰增强版 V2016年

    系统来自:系统妈:http://www.xitongma.com 深度技术GHOST xp系统旗舰增强版 V2016年3月 系统概述 深度技术ghost xp系统旗舰增强版集合微软JAVA虚拟机IE插 ...

  9. H5 表格标签的其它标签

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. (十三)Maven插件解析运行机制

    这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...