完整部署CentOS7.2+OpenStack+kvm 雲平臺環境(3)--爲虛擬機指定固定ip

 

以前在測試環境(centos7.2)上部署了openstack雲平臺(完整部署CentOS7.2+OpenStack+kvm 雲平臺環境(1)--基礎環境搭建),openstack在neutron組網模式下默認採用DHCP-Agent模塊給虛擬機自動分配iphtml

如今想給虛擬機指定固定ip,即建立虛擬機的時候指定固定ip。docker

現分析以下:
背景
一、咱們目前使用openstack+docker來搭建本身的私有云
二、openstack有兩種網絡環境搭建模式,一種是功能較簡單的nova-network,一種是neutron方案
三、neutron方案表明着將來的趨勢,提供更多高級的功能(例如路由功能和負載均衡服務等),更加方便用戶去自定義本身的虛擬化網絡
四、在已有的幾個集羣中,咱們在線下開發測試環境中搭建了neutron方案的openstack集羣centos

目的
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 |
+-------------------+----------------------------------------------------+ui


如上,「enable_dhcp」是「True」,代表子網的dhcp功能已經開啓。
********************************************************************************************************************
若是子網的dhcp功能沒有開啓,能夠手動設置進行開啓該功能!
[root@openstack-server src]# neutron subnet-update --enable-dhcp c53da14a-01fe-4f6c-8485-232489deaa6e
********************************************************************************************************************centos7

 


下面詳細說下,建立虛擬機的時候,指定固定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了

相關文章
相關標籤/搜索