第十三部分 啓動實例linux
預備知識:Linux Bridge網絡模式vim
因爲上節最後驗證網絡和這節啓動實例須要使用到Linux Bridge,因此這裏介紹下Linux Bridge的基本概念centos
假設宿主機上有一塊與外網鏈接的物理網卡eth0 ,上面跑了一個虛擬機VM1,那麼使用Linux Bridge,宿主機會建立一個Linux Bridge的bridge br0將物理網卡eth0和實例的虛擬網卡橋接起來。以下圖所示,br0能夠當作是一個虛擬交換機,vnet0能夠當作是虛擬交換機上的一個端口。安全
具體的鏈接方式是:虛擬機的虛擬網卡(若是虛擬機的操做系統是linux,它的虛擬網卡名稱也是eth0)——vnet0——br0——物理網卡eth0網絡
在下面的安裝中,咱們會使用計算節點(能夠當作是是實例的宿主機)的網卡eth1來橋接實例的虛擬網卡(實例若是安裝的是linux系統,則其虛擬網卡名稱是eth0)。架構
相似上面的架構,br0由neutron建立,使用的名稱是類似brq8c8dcd81-d3這樣的,端口vnet0也由neutron建立,其名稱相似tapfdf3a9b5-f8這樣的,其中包含有由neutron service plugin、agent建立的ip地址等信息。實例啓動後,neutron會將該端口分配給實例。app
這樣,brq8c8dcd81-d3把宿主機的eth1,端口tapfdf3a9b5-f8和實例的虛擬網卡橋接起來,從而爲實例提供網絡訪問。dom
具體來講就是這樣鏈接的:實例(實例的操做系統是linux系統的話)的虛擬網卡eth0——tapfdf3a9b5-f8——brq8c8dcd81-d3——宿主機(計算節點)的eth1ssh
同理,若是再啓動一個新實例,則neutron會在brq8c8dcd81-d3建立一個新的端口,tapxxxxxxx-xx,將其分配給該實例。
tcp
可見,類比vSphere,brq8c8dcd81-d3其實就是一個標準虛擬交換機,tapfdf3a9b5-f8就是上面的端口(端口組),eth1就是上行鏈路。
控制節點的網絡底層配置
如上節最後所述,控制節點在建立虛擬網絡時,會建立相似以上所說的brqxxxxx(xxxxx爲虛擬網絡ID的前11位)網橋,而且會建立一個dhcp-agent使用的端口tapxxxxx(xxxx爲dhcp-agent的前幾位),將物理網卡eth1和tap設備橋接起來。
在控制節點,使用brctl show 查看
brctl show
相似圖上的顯示纔是正確的,若是後面沒有eth1,後面建立實例將得不到ip地址。
請按以下步驟排查
(1)確認已經中止或者刪除了NetworkManager軟件包
systemctl stop NetworkManager
systemctl disable NetworkManager
yum remove NetworkManager -y
(2)重啓網絡
systemctl restart network
建立實例前的準備工做
建立實例類型
. admin-openrc
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
openstack flavor list
創建普通項目、用戶,並賦予普通用戶user角色。
openstack project create --domain default --description "ygj Project" ygj-project
openstack user create --domain default --password 123456 ygj
openstack role add --project ygj-projec --user ygj user
創建普通用戶的環境變量腳本
vim ygj-openrc
加入:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=ygj-project
export OS_USERNAME=ygj
export OS_PASSWORD=123456
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
建立密鑰對
. ygj-openrc
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub ygjkey
openstack keypair list
建立安全組規則
openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default
檢查openstack的相關服務和配置
. ygj-openrc
openstack flavor list
openstack image list
openstack network list(複製下網絡ID,後面使用)
記下的網絡ID爲:3903994e-3f22-4677-8c3a-5ea4edd90afb
openstack security group list
修改計算節點上的nova配置文件,避免建立實例時報沒法分配網絡的錯誤
vim /etc/nova/nova.conf
[DEFAULT]
vif_plugging_is_fatal = false
vif_plugging_timeout = 0
確認開啓2個節點的eth1的混雜模式,使虛擬機能鏈接除本宿主機外的網絡
yum install net-tools -y
ifconfig eth1 promisc
確認已經中止2個節點上的networkmanager服務,不然會影響橋接網絡的創建。
systemctl stop NetworkManager
systemctl disable NetworkManager
再次檢查控制節點上neutron的橋接網絡配置是否正確
yum install bridge-utils -y
brctl show
必定要確認eth1已經橋接到brq上面。
建立並啓動實例
建立實例的命令
openstack server create --flavor 實例類型 --image 來源的鏡像 --nic net-id=PROVIDER_NET_ID --security-group 安全組名 --key-name 密鑰對 實例名稱
其中PROVIDER_NET_ID:上面openstack network list命令查到的網絡ID
具體來講能夠以下面的命令:
. ygj-openrc
openstack server create --flavor m1.nano --image cirros --nic net-id=3903994e-3f22-4677-8c3a-5ea4edd90afb --security-group default --key-name ygjkey cirros-instance1
命令成功執行後,稍等片刻,使用openstack server list 查看實例的建立情況
確認其Status爲「ACTIVE」,Networks下面不爲空
若是實例的Status一直爲BULID或者ERROR,則須要檢查計算節點nova的日誌文件中的報錯信息,而後加以解決,日誌文件的路徑爲:/var/log/nova/nova-compute.log
計算節點的檢查
上述命令建立實例後,計算節點的網絡會發生以下變化
ip a
能夠看到會多出一個brq的網橋和一個tap設備
其中brq的網橋和控制節點的同名,意味着它們的端口接在了同一個虛擬交換機上
tap設備即剛纔建立的實例使用的端口(能夠當作是)。
再使用brctl查看
brctl show
發現tap設備橋接到了網橋上。
可是,計算節點的eth1此時並無橋接到這個brq上,可是再重啓下網絡和實例便可橋接,至於其具體緣由不明(多是openstack的bug或者是實驗環境是vmware-workstation的緣由)。
(1)重啓計算節點網絡
systemctl restart network
(2)在控制節點重啓實例
openstack server reboot cirros-instance1
重啓好以後再在計算節點使用brctl show查看
能夠看到計算節點的eth1已經橋接到brq上。
檢查下和實例的網絡鏈接:
ping 10.8.20.53
說明實例已經可以獲取ip地址。
在計算節點訪問實例的控制檯
查看正在運行的實例
virsh list
記下其id是2
進入實例的控制檯
virsh console 2
這裏的2就是上面記下的id
按回車,會出現實例的登陸提示符,使用cirros用戶和提示的密碼登陸
出現$提示符代表登陸成功
使用ip a查看實例的ip
獲取到了正確的ip。
還可使用sudo passwd修改root密碼,使用mount查看器磁盤掛載狀況,其餘操做再也不贅述。
最後再檢查下網絡訪問狀況
ping 10.8.20.42
ping 10.8.20.41
ping www.baidu.com
按鍵盤上的「ctrl+]」鍵返回到計算節點的命令提示符。
再建立一個實例
在控制節點執行如下操做
. ygj-openrc
openstack server create --flavor m1.nano --image cirros --nic net-id=3903994e-3f22-4677-8c3a-5ea4edd90afb --security-group default --key-name ygjkey cirros-instance2
openstack server list
能夠看到,新的實例已是ACTIVE。得到的ip地址爲10.8.20.51,而且能夠ping通,說明實例建立成功。
使用dashboard查看實例的狀態
使用前面創建普通用戶ygj 密碼123456登陸dashboard(不要使用admin登陸,將看不到任何實例),在實例處能夠查看到建立的2個實例。
2個實例
也能夠訪問實例的控制檯
至此,啓動實例完成,下節將介紹怎麼安裝和配置centos7的實例。