OpenStack定義:
OpenStack是一個負責啟動和管理虛擬機實例的管理軟件,它是搭建雲平台的解決方案,可以搭建公有雲、私有雲和企業雲。Openstack屬於雲計算中的IaaS服務類型
openstack核心組件及功能:
Compute(代號為"Nova") :管理計算資源
Networking Service(代號為"Neutron"):管理網絡資源,為虛擬機、計算和控制節點提供網絡功能
Image Service(代號為"Glance"):用於提供鏡像服務,屬於儲存范疇
Identity(代號為"Keystone"):管理用戶及其權限維護OpenStack Services的Endpoint認證和鑒權
Dashboard(代號為"Horizon"):用於提供圖形用戶界面
Block Storage(代號為"Cinder"):用於提供塊存儲功能
Object Storage(代號為"Swift"):用於提供對象存儲功能
Ceilometer:提供監控服務
openstack各組件之間的關系:
下圖自己繪制的關系圖中各組件功能已做不同顏色區分,再梳理一下它們之間的關系:
Nova提供計算服務,所有的計算實例都由Nova進行生命周期的調度管理,如:虛機啟動、掛起、停止、刪除等;
啟動實例不能每次都要重新安裝來啟動,這時就用到了Glance鏡像服務;
虛機肯定需要上網,需要由Neutron提供網絡服務;
既然是安裝虛機,自然少不了存儲空間或者空間太少需要擴容,這時需要由Cinder提供塊存儲服務;
以上四種服務可以讓一台實例成功運行起來,但是不是誰都可以在我搭建的環境上創建虛機的,這時就用到了Keystone的鑒權認證服務;
搭建的環境是不是可以租出去呢?若租出去又該如何監控客戶使用了哪些資源呢?此時需要Cellometer提供監控計費服務;客戶使用的帶寬、內存等不同規格收費自然不同;
若客戶嫌棄命令頁面操作太麻煩,需要更加友好的可視化操作頁面,此時就用到了Horizon服務,也就是web端的可視化操作頁面;
為了給客戶提供更加優質的服務並且減少不必要的資源浪費,針對某些項目可能會用到Swift對象存儲服務;舉個大家都在用的百度網盤的例子,很多人都會去存一些電影,但是可能有大部分電影是重復的,若每個百度網盤用戶都真實的把視頻存到了雲端,大量的重復視頻豈不是浪費了許多百度的存儲空間?這時候對象存儲是最好的選擇,用戶上傳視頻時,先根據算法看看雲端是否有相同的內容,若查到有相同的存儲信息,直接反饋用戶“上傳成功”,實際並沒有上傳的!用戶下載時在雲端找到相同的資源提供其下載就可以了,這樣既服務了客戶又節省了存儲空間
Openstack常用命令:
提示:任何命令執行前都需要先執行環境變量腳本,openstack命令不同版本之間命令可能存在差異,或者組件配置問題引起的命令不可用,請根據實際環境執行命令。所有命令根據ID查詢的命令基本也可通過NAME查詢。
執行環境變量腳本,獲得admin憑證訪問 |
source admin-openrc.sh |
列出可用網絡 | neutron net-list |
查看路由列表 | neutron router-list |
查看路由詳情 | neutron router-show ROUTER_ID |
查找與網絡相關並以av開頭的文件 | neutron -h | grep av(文件名) |
列出防火牆 | neutron firewall-list |
查看防火牆詳情 | neutron firewall-show FIREWALL_ID |
查看防火牆策略詳情 | neutron firewall-policy-show POLICY_ID |
列出所有安全組 | openstack security group list 或 nova secgroup-list |
查看安全組詳情 | openstack security group show ID |
列出安全組所有規則 | openstack security group rule list 或 nova secgroup-list-rules default |
查看安全組規則詳情 | openstack security group rule show ID |
獲取主機列表 | openstack hypervisor list |
查看主機詳情 | openstack hypervisor show NAME |
列出實例 | openstack server list 或 nova list |
列出所有實例 | openstack server list --all 或 nova list --all |
獲取主機類型列表 | nova flavor-list |
查看主機類型詳情 | nova flavor-show ID |
實例診斷統計 | nova diagnostices ID |
查詢各租戶下的資源統計信息 | nova usage-list |
nova狀態升級檢查 |
nova-status upgrade check |
列出所有主機節點 | nova host-list |
列出主機節點資源使用率統計信息 | nova host-describe 主機名 |
列出已加載網絡擴展 |
Openstack extension list --network |
列出所有的用戶 | openstack user list |
列出認證服務目錄 | openstack catalog list |
創建鏡像 | glance image-create IMAGENAME |
列出鏡像 | openstack image list 或 glance image-list |
刪除指定的鏡像 | openstack image delete IMAGE |
查看某鏡像描述 | openstack image show IMAGE 或 glance image-show ID |
更新鏡像 | openstack image IMAGE 或 glance image-update ID |
上傳內核鏡像 | openstack image create cirros-threepart-kernel \ --disk-format aki --container-format aki –public \ --file ~/images/cirros-0.3.5-x86_64-kernel |
上傳RAM鏡像 | openstack image create cirros-threepart-ramdisk \ --disk-format ari --container-format ari –public \ --file ~/images/cirros-0.3.5-x86_64-initramfs |
上傳第三方鏡像 | openstack image create cirros-threepart --disk-format ami \ --container-format ami –public \ --property kernel_id=$KID -property ramdisk_id=$RID \ --file ~/images/cirros-0.3.5-x86_64-rootfs.img |
注冊raw鏡像 | openstack image create cirros-raw --disk-format raw \ --container-format bare –public \ --file ~/images/cirros-0.3.5-x86_64-disk.img |
列出實例 | openstack server list 或 nova list |
顯示實例詳細信息 | openstack server show NAME/ID 或 nova show NAME/ID |
創建一個為名m1.tiny的 flavor | openstack flavor create --ram 512 --disk 1 --vcpus 1 m1.tiny |
用類型和鏡像名稱(如果名稱唯一)來啟動雲主機 | openstack server create --image IMAGE --flavor FLAVOR INSTANCE_NAME \ openstack server create --image cirros-0.3.5-x86_64-uec --flavor m1.tiny \ MyFirstInstance |
查看雲主機的控制台日志 | openstack console log show MyFirstInstance |
設置雲主機的元數據 | nova meta volumeTwoImage set newmeta=my meta data |
創建一個實例快照 | openstack image create volumeTwoImage snapshotOfVolumeImage openstack image show snapshotOfVolumeImage |
實例暫停 | openstack server pause NAME 或 nova pase ID openstack server pause volumeTwoImage |
取消實例暫停 | openstack server resume NAME 或 nova resume ID |
取消實例掛起 | openstack server unpause NAME 或 nova unpause ID |
實例掛起 | openstack server suspend NAME 或 nova suspend ID |
實例停止 | openstack server stop NAME |
實例開始 | openstack server start NAME |
實例恢復 | openstack server rescue NAME 或 nova resume ID openstack server rescue NAME --rescue_image_ref RESCUE_IMAGE |
調整規格大小 | openstack server resize NAME FLAVOR openstack server resize my-pem-server m1.small openstack server resize --confirm my-pem-server1 |
實例重建 | openstack server rebuild NAME IMAGE |
實例重啟 | openstack server reboot NAME 或 nova reboot ID |
刪除實例 | nova delete ID |
將用戶數據和文件注入到實例 | openstack server create --user-data FILE INSTANCE openstack server create --user-data userdata.txt --image cirros-qcow2 \ --flavor m1.tiny MyUserdataInstance2 |
創建密鑰對 | openstack keypair create test > test.pem chmod 600 test.pem |
啟動實例 | openstack server create --image cirros-0.3.5-x86_64 --flavor m1.small \ --key-name test MyFirstServer |
使用ssh連接到實例 | ip netns exec qdhcp-98f09f1e-64c4-4301-a897-5067ee6d544f \ ssh -i test.pem cirros@10.0.0.4 |
在默認的安全組中,添加ping和SSH規則 | openstack security group rule create default \ --remote-group default --protocol icmp openstack security group rule create default \ --remote-group default --dst-port 22 |
創建網絡 | openstack network create NETWORK_NAME |
創建子網 | openstack subnet create --subnet-pool SUBNET --network NETWORK SUBNET_NAME |
創建一個新卷 | openstack volume create --size SIZE_IN_GB NAME |
啟動實例並將其鏈接到卷上 | openstack server create --image cirros-qcow2 --flavor m1.tiny MyVolumeInstance |
列出所有卷 | openstack volume list |
當實例狀態正常且卷狀態可用時,將卷連接到實例 | openstack server add volume INSTANCE_ID VOLUME_ID |
登陸進實例之后管理卷組 | 列出存儲器:fdisk -l 在卷上建立文件系統:mkfs.ext3 /dev/vdb 創建一個掛載點:mkdir /myspace 在掛載點掛載卷:mount /dev/vdb /myspace 在卷上創建一個文件:touch /myspace/helloworld.txt ls /myspace 卸載卷:umount /myspace |
展示存儲賬戶,容器以及對象的信息 | swift stat swift stat ACCOUNT swift stat CONTAINER swift stat OBJECT |
列出容器 | swift list |
查看端口列表 | neutron port-list |
列出卷設備 | cinder list |
顯示卷設備詳情 | cinder show ID |
調整卷設備大小 | cinder extend ID 大小數值 |
刪除卷設備 | cinder delete ID |
創建卷設備傳送請求 | cinder transfer-create ID |
查看等待傳送的卷設備 | cinder transfer-list |
接收被傳送的卷設備 | cinder transfer ID authKey |
刪除正在傳送的卷設備 | cinder transfer -delete transferID |
查看有效計算節點 | nova hypervisor-list |
查看計算節點詳情 | nova hypervisor-servers ID |