使用VMware虛擬機創建網絡可能會有不可預測到的故障,可以通過dashboard界面,管理員創建admin用戶的網絡環境
1.第一種: 建立公共提供商網絡
在admin管理員用戶下創建
source ~/admin-openrc openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider #參數解釋: --share 允許所有項目使用虛擬網絡 --external 將虛擬網絡定義為外部,如果想創建一個內部網絡,則可以使用--internal。默認值為internal --provider-physical-network provider #指明物理網絡的提供者,provider 與下面neutron的配置文件對應,其中provider是標簽,可以更改為其他,但是2個地方必須要統一 #配置文件/etc/neutron/plugins/ml2/ml2_conf.ini中的參數 [ml2_type_flat] flat_networks = provider [linux_bridge] physical_interface_mappings = provider:eth0 --provider-network-type flat 指明這里創建的網絡是flat類型,即實例連接到此網絡時和物理網絡是在同一個網段,無vlan等功能。 最后輸入的provider 指定網絡的名稱
在網絡上創建一個子網 192.168.0.0/24 ; 子網對應真實的物理網絡
openstack subnet create --network provider \ --allocation-pool start=192.168.0.195,end=192.168.0.210 \ --dns-nameserver 255.5.5.5 --gateway 192.168.0.254 \ --subnet-range 192.168.0.0/24 provider #參數解釋: --network provider 指定父網絡 --allocation-pool start=192.168.0.195,end=192.168.0.210 指定子網的起始地址和終止地址 --dns-nameserver 223.5.5.5 指定DNS服務器地址 --gateway 192.168.0.254 指定網關地址 --subnet-range 192.168.0.0/24 指定子網的網段 最后的provider 指定子網的名稱
查看已創建的網絡
openstack network list
查看已創建的子網
openstack subnet list
2.第二種: 建立普通租戶的私有自助服務網絡
自助服務網絡,也叫租戶網絡或項目網絡,它是由openstack租戶創建的,完全虛擬的,是租戶私有的,只在本網絡內部連通,不能在租戶之間共享
在普通租戶下創建網絡
source ~/myuser-openrc openstack network create selfservice
非特權用戶通常無法為該命令提供其他參數。該服務使用以下配置文件中的信息自動選擇參數
cat /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] type_drivers = flat,vlan,vxlan tenant_network_types = vxlan [ml2_type_vxlan] vni_ranges = 1:1000
創建一個子網 172.18.1.0/24
openstack subnet create --network selfservice \ --dns-nameserver 223.5.5.5 --gateway 172.18.1.1 \ --subnet-range 172.18.1.0/24 selfservice #參數解釋: --network selfservice 指定父網絡 --allocation-pool start=172.16.10.2,end=172.18.1.200 可以指定子網的起始地址和終止地址,不添加此參數則分配從172.16.1.2到172.18.1.254的IP地址 --dns-nameserver 223.5.5.5 指定DNS服務器地址 --gateway 172.18.1.1 指定網關地址 --subnet-range 172.18.1.0/24 指定子網的網段 最后的selfservice 指定子網的名稱
查看已創建的網絡
openstack network list
查看已創建的子網
openstack subnet list
創建路由器,用myuser普通租戶創建
source ~/myuser-openrc openstack router create router01
查看創建的路由
openstack router list
將創建的租戶自助服務網絡子網添加為路由器上的接口
openstack router add subnet router01 selfservice
在路由器的公共提供商網絡上設置網關
openstack router set router01 --external-gateway provider
查看網絡名稱空間,一個qrouter名稱空間和兩個 qdhcp名稱空間
[root@controller ~]# ip netns qrouter-919685b9-24c7-4859-b793-48a2add1fd30 (id: 2) qdhcp-a7acab4d-3d4b-41f8-8d2c-854fb1ff6d4f (id: 0) qdhcp-926859eb-1e48-44ed-9634-bcabba5eb8b8 (id: 1) #使用ip netns命令找到這個虛擬路由器之后,用這個虛擬路由器ping真實物理網絡中的網關 #ping通即證明OpenStack內部虛擬網絡與真實物理網絡銜接成功 [root@controller ~]# ip netns exec qrouter-919685b9-24c7-4859-b793-48a2add1fd30 ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=128 time=0.570 ms 64 bytes from 192.168.0.254: icmp_seq=2 ttl=128 time=0.276 ms
驗證查看創建網絡和子網中的IP地址范圍,回到admin用戶下
source ~/admin-openrc
列出路由器上的端口,以確定提供商網絡上的網關IP地址
openstack port list --router router01 ...|ip_address='172.18.1.1', |...| ACTIVE ...|ip_address='192.168.0.209', |...| ACTIVE
從控制器節點或物理提供商網絡上的任何主機ping此IP地址進行驗證
[root@controller ~]# ping 192.168.0.209 PING 192.168.0.209 (192.168.0.209) 56(84) bytes of data. 64 bytes from 192.168.0.209: icmp_seq=1 ttl=64 time=0.065 ms 64 bytes from 192.168.0.209: icmp_seq=2 ttl=64 time=0.066 ms
創建一個m1.nano的類型模板
#Flavor:類型模板,虛機硬件模板被稱為類型模板,包括RAM和硬盤大小,CPU核數等。 #創建一台1核cpu 128M硬盤的類型模板與CirrOS映像一起使用進行測試 openstack flavor create --id 0 --vcpus 1 --ram 128 --disk 1 m1.nano
查看創建的類型模板
openstack flavor list
創建租戶的秘鑰對(可選)
#生產中登陸最好不要用常規的密碼驗證登陸,啟動實例前要 將公共的秘鑰添加 #秘鑰在文檔開始時的配置基礎環境中已經生成,所以可以直接添加 source ~/myuser-openrc openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey #查看創建的密鑰對 openstack keypair list
配置安全組規則
#默認情況下,default安全組適用於所有實例,並包括拒絕對實例進行遠程訪問的防火牆規則。對於CirrOS之類的Linux映像,建議至少允許ICMP(ping)和ssh。 #許可ICMP協議(ping命令) openstack security group rule create --proto icmp default #允許SSH訪問(22端口) openstack security group rule create --proto tcp --dst-port 22 default #查看安全組 openstack security group list #查看安全組規則 openstack security group rule list
3.啟動一個實例
#要啟動實例,必須至少指定實例類型,映像名稱,網絡,安全組,密鑰和實例名稱 #部署的網絡環境可以在提供商網絡和自助服務網絡上啟動實例 #查看可用的類型模板 openstack flavor list #查看可用的鏡像 openstack image list #查看可用的網絡 openstack network list #查看安全組 openstack security group list
3.1 在公共提供商網絡上啟動實例
創建公共提供商網絡下的實例(也可以在dashboard界面上創建,建議掌握命令行的操作)
#net-id:可用的網絡的ID,這里使用公共提供商網絡的ID 實例名稱(provider-vm1) source ~/myuser-openrc openstack server create --flavor m1.nano --image cirros \ --nic net-id=926859eb-1e48-44ed-9634-bcabba5eb8b8 --security-group default \ --key-name mykey provider-vm1
查看創建的實例
[root@controller ~]# openstack server list +--------------------------------------+--------------+--------+------------------------+--------+---------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+--------------+--------+------------------------+--------+---------+ | 9c2c558f-0573-4483-8031-ec3ba9c41f57 | provider-vm1 | ACTIVE | provider=192.168.0.199 | cirros | m1.nano | +--------------------------------------+--------------+--------+------------------------+--------+---------+
使用虛擬控制台訪問實例
openstack console url show provider-vm1
登陸到cirros實例驗證對公共提供商網絡網關的訪問
$ ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: seq=0 ttl=64 time=5.128 ms
驗證對互聯網的訪問
$ ping baidu.com PING baidu.com (220.181.38.148): 56 data bytes 64 bytes from 220.181.38.148: seq=0 ttl=128 time=17.904 ms
從控制器節點或提供商網絡上的任何其他主機使用SSH訪問實例
[root@controller ~]# ssh cirros@192.168.0.199 $ hostname provider-vm1 $ pwd /home/cirros
3.2 在租戶自助網絡上啟動實例
創建租戶自助網絡下的實例(也可以在dashboard界面上創建)
#net-id:可用的網絡的ID,這里使用租戶自助網絡的ID 實例名稱(selfservice-vm1) source ~/myuser-openrc openstack server create --flavor m1.nano --image cirros \ --nic net-id=0e3e56b8-67be-4a83-89c4-b23880d7e688 --security-group default \ --key-name mykey selfservice-vm1
查看創建的實例
[root@controller ~]# openstack server list +--------------------------------------+-----------------+--------+-------------------------+--------+---------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+-----------------+--------+-------------------------+--------+---------+ | a9397f81-9f4d-4130-b72c-d607060c2856 | selfservice-vm1 | ACTIVE | selfservice=172.18.1.22 | cirros | m1.nano | | 9c2c558f-0573-4483-8031-ec3ba9c41f57 | provider-vm1 | ACTIVE | provider=192.168.0.199 | cirros | m1.nano | +--------------------------------------+-----------------+--------+-------------------------+--------+---------+
使用虛擬控制台訪問實例
openstack console url show selfservice-vm1
訪問實例的控制台並登陸cirros實例驗證對公共提供商網絡網關的訪問
$ ping 172.18.1.1 PING 172.18.1.1 (172.18.1.1): 56 data bytes 64 bytes from 172.18.1.1: seq=0 ttl=64 time=25.527 ms
驗證對互聯網的訪問
$ ping baidu.com PING baidu.com (220.181.38.148): 56 data bytes 64 bytes from 220.181.38.148: seq=0 ttl=127 time=20.649 ms
從控制器節點使用SSH遠程訪問租戶實例
在公共提供商網絡上創建一個浮動IP地址
openstack floating ip create provider
Dashboard創建
查看已創建的浮動IP
[root@controller ~]# openstack floating ip list +--------------------------------------+---------------------+------------------+------+--------------------------------------+------- | ID | Floating IP Address | Fixed IP Address | Port | Floating Network | Projec +--------------------------------------+---------------------+------------------+------+--------------------------------------+------- | f31e429a-4ebd-407a-ae78-220311008f4f | 192.168.0.198 | None | None | 926859eb-1e48-44ed-9634-bcabba5eb8b8 | 6535a5 +--------------------------------------+---------------------+------------------+------+--------------------------------------+-------
將浮動IP地址與實例相關聯
openstack server add floating ip selfservice-vm1 192.168.0.198
Dashboard關聯
查看浮動IP地址綁定的狀態
[root@controller ~]# openstack server list +--------------------------------------+-----------------+--------+----------------------------------------+--------+---------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+-----------------+--------+----------------------------------------+--------+---------+ | a9397f81-9f4d-4130-b72c-d607060c2856 | selfservice-vm1 | ACTIVE | selfservice=172.18.1.22, 192.168.0.198 | cirros | m1.nano | | 9c2c558f-0573-4483-8031-ec3ba9c41f57 | provider-vm1 | ACTIVE | provider=192.168.0.199 | cirros | m1.nano | +--------------------------------------+-----------------+--------+----------------------------------------+--------+---------+
通過控制器節點或公共提供商網絡上任何主機的浮動IP地址驗證與實例的連接性
[root@controller ~]# ping 192.168.0.198 PING 192.168.0.198 (192.168.0.198) 56(84) bytes of data. 64 bytes from 192.168.0.198: icmp_seq=1 ttl=63 time=22.0 ms
從控制器節點或提供商網絡上的任何其他主機使用SSH訪問實例
[root@controller ~]# ssh cirros@192.168.0.198 $ hostname selfservice-vm1 $ pwd /home/cirros
安裝文檔創建的網絡拓撲環境
創建的一個新的網絡拓撲,兩個獨立的租戶網絡創建路由,並在路由上設置訪問外網的網關
3.3 故障記錄
安裝網橋管理工具brctl來查看網絡
yum install bridge-utils -y brctl show
重啟實例的方法,可在控制節點命令行重啟 也可在dashboard界面進行重啟
source ~/myuser-openrc openstack server list nova reboot <ID>
如果重啟報錯則使用hard重啟
nova reboot --hard provider-vm1 nova reboot是軟重啟虛擬機 nova reboot --hard 是硬重啟虛擬機 nova reset-state 是重置虛擬機狀態
Web瀏覽器在無法解析controller主機名的主機上運行
可以替換nova.conf的配置文件中的[vnc]模塊,將controller替換為控制節點的IP地址
openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://192.168.0.10:6080/vnc_auto.html
報錯:找不到磁盤無法啟動的問題
Booting from Hard Disk... GRUB
解決方法,修改計算節點的nova.conf文件
[root@computel01 ~]# vim /etc/nova/nova.conf [libvirt] cpu_mode = none virt_type = qemu
重啟計算節點的nova計算服務
[root@computel01 ~]# systemctl restart openstack-nova-compute.service
外部網絡沒有網的問題
在用VMware虛擬機進行測試時候,要為實例多添加網卡,通過虛擬網絡編輯器,否則會導致創建的可訪問外部網絡沒有網
我們部署openstack,大多數都是使用虛擬機,在網絡節點的外部網卡,我們需要注意,這個是不需要配置ip地址的。
同時由於每個虛擬機是需要聯網的。所以我們需要在原先的網絡規划的基礎上,在增加一個上網的網卡。
neutron報timeout超時
/etc/neutron/neutron.conf中會有一個配置項rpc_response_timeout,它用來配置RPC的超時時間,默認為60s,所以導致超時異常.解決方法為設置
#在controller節點上 [root@controller ~]# vim /etc/neutron/neutron.conf [DEFAULT] ... rpc_response_timeout=180 systemctl restart neutron-linuxbridge-agent.service