30個(gè)Openstack 經(jīng)典面試問題和解答
現(xiàn)在,大多數(shù)公司都試圖將它們的 IT 基礎(chǔ)設(shè)施和電信設(shè)施遷移到私有云, 如 OpenStack。如果你打算面試 OpenStack 管理員這個(gè)崗位,那么下面列出的這些面試問題可能會(huì)幫助你通過面試。
Q:1 說一下 OpenStack 及其主要組件?
答: OpenStack 是一系列開源軟件,這些軟件組成了一個(gè)云供給軟件,也就是 OpenStack,意即開源軟件或項(xiàng)目棧。
下面是 OpenStack 的主要關(guān)鍵組件:
- Nova – 用于在計(jì)算級(jí)別管理虛擬機(jī),并在計(jì)算或管理程序級(jí)別執(zhí)行其他計(jì)算任務(wù)。
- Neutron – 為虛擬機(jī)、計(jì)算和控制節(jié)點(diǎn)提供網(wǎng)絡(luò)功能。
- Keystone – 為所有云用戶和 OpenStack 云服務(wù)提供身份認(rèn)證服務(wù)。換句話說,我們可以說 Keystone 是一個(gè)提供給云用戶和云服務(wù)訪問權(quán)限的方法。
- Horizon – 用于提供圖形用戶界面。使用圖形化管理界面可以很輕松地完成各種日常操作任務(wù)。
- Cinder – 用于提供塊存儲(chǔ)功能。通常來(lái)說 OpenStack 的 Cinder 中集成了 Chef 和 ScaleIO 來(lái)共同為計(jì)算和控制節(jié)點(diǎn)提供塊存儲(chǔ)服務(wù)。
- Swift – 用于提供對(duì)象存儲(chǔ)功能。通常來(lái)說,Glance 管理的鏡像是存儲(chǔ)在對(duì)象存儲(chǔ)空間的。像 ScaleIO 這樣的外部存儲(chǔ)也可以提供對(duì)象存儲(chǔ),可以很容易的集成 Glance 服務(wù)。
- Glance – 用于提供鏡像服務(wù)。使用 Glance 的管理平臺(tái)來(lái)上傳和下載云鏡像。
- Heat – 用于提供編排服務(wù)或功能。使用 Heat 管理平臺(tái)可以輕松地將虛擬機(jī)作為堆棧,并且根據(jù)需要可以將虛擬機(jī)擴(kuò)展或收縮。
- Ceilometer – 用于提供計(jì)量與監(jiān)控功能。
Q:2 什么服務(wù)通常在控制節(jié)點(diǎn)上運(yùn)行?
答: 以下服務(wù)通常在控制節(jié)點(diǎn)上運(yùn)行:
- 認(rèn)證服務(wù)(KeyStone)
- 鏡像服務(wù)(Glance)
- Nova 服務(wù)比如 Nova API、Nova Scheduler 和 Nova DB
- 塊存儲(chǔ)和對(duì)象存儲(chǔ)服務(wù)
- Ceilometer 服務(wù)
- MariaDB / MySQL 和 RabbitMQ 服務(wù)
- 網(wǎng)絡(luò)(Neutron)和網(wǎng)絡(luò)代理的管理服務(wù)
- 編排服務(wù)(Heat)
Q:3 什么服務(wù)通常在計(jì)算節(jié)點(diǎn)上運(yùn)行?
答: 以下服務(wù)通常在計(jì)算節(jié)點(diǎn)運(yùn)行:
- Nova 計(jì)算
- 網(wǎng)絡(luò)服務(wù),比如 OVS
Q:4 計(jì)算節(jié)點(diǎn)上虛擬機(jī)的默認(rèn)地址是什么?
答: 虛擬機(jī)存儲(chǔ)在計(jì)算節(jié)點(diǎn)的 /var/lib/nova/instances
。
Q:5 Glance 鏡像的默認(rèn)地址是什么?
答: 因?yàn)?Glance 服務(wù)運(yùn)行在控制節(jié)點(diǎn)上,所以 Glance 鏡像都被存儲(chǔ)在控制節(jié)點(diǎn)的 /var/lib/glance/images
文件夾下。
想了解更多請(qǐng)?jiān)L問:在 OpenStack 中如何使用命令行創(chuàng)建和刪除虛擬機(jī)
Q:6 說一下如何使用命令行啟動(dòng)一個(gè)虛擬機(jī)?
答: 我們可以使用如下 OpenStack 命令來(lái)啟動(dòng)一個(gè)新的虛擬機(jī):
# openstack server create --flavor {flavor-name} --image {Image-Name-Or-Image-ID} --nic net-id={Network-ID} --security-group {Security_Group_ID} –key-name {Keypair-Name} <VM_Name>
Q:7 如何在 OpenStack 中顯示用戶的網(wǎng)絡(luò)命名空間列表?
答: 可以使用 ip net ns
命令來(lái)列出用戶的網(wǎng)絡(luò)命名空間。
~# ip netns list
qdhcp-a51635b1-d023-419a-93b5-39de47755d2d
haproxy
vrouter
Q:8 如何在 OpenStack 中執(zhí)行網(wǎng)絡(luò)命名空間內(nèi)的命令?
答: 假設(shè)我們想在 qdhcp-a51635b1-d023-419a-93b5-39de47755d2d
網(wǎng)絡(luò)命名空間中執(zhí)行 ifconfig
命令,我們可以執(zhí)行如下命令。
命令格式 : ip netns exec {network-space} <command>
:
~# ip netns exec qdhcp-a51635b1-d023-419a-93b5-39de47755d2d "ifconfig"
Q:9 在 Glance 服務(wù)中如何使用命令行上傳和下載鏡像?
答: Glance 服務(wù)中云鏡像上傳可以使用如下 OpenStack 命令:
~# openstack image create --disk-format qcow2 --container-format bare --public --file {Name-Cloud-Image}.qcow2 <Cloud-Image-Name>
下載云鏡像則使用如下命令:
~# glance image-download --file <Cloud-Image-Name> --progress <Image-ID>
Q:10 OpenStack 如何將虛擬機(jī)從錯(cuò)誤狀態(tài)轉(zhuǎn)換為活動(dòng)狀態(tài)?
答: 在某些情況下虛擬機(jī)可能會(huì)進(jìn)入錯(cuò)誤狀態(tài),可以使用如下命令將錯(cuò)誤狀態(tài)轉(zhuǎn)換為活動(dòng)狀態(tài):
~# nova reset-state --active {Instance_id}
Q:11 如何使用命令行來(lái)獲取可使用的浮動(dòng) IP 列表?
答: 可使用如下命令來(lái)顯示可用浮動(dòng) IP 列表:
~]# openstack ip floating list | grep None | head -10
Q:12 如何在特定可用區(qū)域中或在計(jì)算主機(jī)上配置虛擬機(jī)?
答: 假設(shè)我們想在 compute-02 中的可用區(qū) NonProduction 上配置虛擬機(jī),可以使用如下命令:
~]# openstack server create --flavor m1.tiny --image cirros --nic net-id=e0be93b8-728b-4d4d-a272-7d672b2560a6 --security-group NonProd_SG --key-name linuxtec --availability-zone NonProduction:compute-02 nonprod_testvm
Q:13 如何在特定計(jì)算節(jié)點(diǎn)上獲取配置的虛擬機(jī)列表?
答: 假設(shè)我們想要獲取在 compute-0-19 中配置的虛擬機(jī)列表,可以使用如下命令:
命令格式: openstack server list –all-projects –long -c Name -c Host | grep -i {Compute-Node-Name}
:
~# openstack server list --all-projects --long -c Name -c Host | grep -i compute-0-19
Q:14 如何使用命令行查看 OpenStack 實(shí)例的控制臺(tái)日志?
答: 使用如下命令可查看實(shí)例的控制臺(tái)日志。
首先獲取實(shí)例的 ID,然后使用如下命令:
~# openstack console log show {Instance-id}
Q:15 如何獲取 OpenStack 實(shí)例的控制臺(tái)的 URL 地址?
答: 可以使用以下 OpenStack 命令從命令行檢索實(shí)例的控制臺(tái) URL 地址:
~# openstack console url show {Instance-id}
Q:16 如何使用命令行創(chuàng)建可啟動(dòng)的 cinder / block 存儲(chǔ)卷?
答: 假設(shè)創(chuàng)建一個(gè) 8GB 可啟動(dòng)存儲(chǔ)卷,可參考如下步驟:
-
使用如下命令獲取鏡像列表
~# openstack image list | grep -i cirros
| 89254d46-a54b-4bc8-8e4d-658287c7ee92 | cirros | active |
-
使用 cirros 鏡像創(chuàng)建 8GB 的可啟動(dòng)存儲(chǔ)卷
~# cinder create --image-id 89254d46-a54b-4bc8-8e4d-658287c7ee92 --display-name cirros-bootable-vol 8
Q:17 如何列出所有在你的 OpenStack 中創(chuàng)建的項(xiàng)目或用戶?
答: 可以使用如下命令來(lái)檢索所有項(xiàng)目和用戶:
~# openstack project list --long
Q:18 如何顯示 OpenStack 服務(wù)端點(diǎn)列表?
答: OpenStack 服務(wù)端點(diǎn)被分為 3 類:
- 公共端點(diǎn)
- 內(nèi)部端點(diǎn)
- 管理端點(diǎn)
使用如下 OpenStack 命令來(lái)查看各種 OpenStack 服務(wù)端點(diǎn):
~# openstack catalog list
可通過以下命令來(lái)顯示特定服務(wù)端點(diǎn)(比如說 keystone)列表:
~# openstack catalog show keystone
想了解更多請(qǐng)?jiān)L問:OpenStack 中的實(shí)例創(chuàng)建流程。
Q:19 在控制節(jié)點(diǎn)上你應(yīng)該按照什么步驟來(lái)重啟 nova 服務(wù)?
答: 應(yīng)該按照如下步驟來(lái)重啟 OpenStack 控制節(jié)點(diǎn)的 nova 服務(wù):
service nova-api restart
service nova-cert restart
service nova-conductor restart
service nova-consoleauth restart
service nova-scheduler restart
Q:20 假如計(jì)算節(jié)點(diǎn)上為數(shù)據(jù)流量配置了一些 DPDK 端口,你如何檢查 DPDK 端口的狀態(tài)呢?
答: 因?yàn)槲覀兪褂?openvSwitch (OVS) 來(lái)配置 DPDK 端口,因此可以使用如下命令來(lái)檢查端口的狀態(tài):
root@compute-0-15:~# ovs-appctl bond/show | grep dpdk
active slave mac: 90:38:09:ac:7a:99(dpdk0)
slave dpdk0: enabled
slave dpdk1: enabled
root@compute-0-15:~#
root@compute-0-15:~# dpdk-devbind.py --status
Q:21 如何使用命令行在 OpenStack 中向存在的安全組 SG(安全組)中添加新規(guī)則?
答: 可以使用 neutron
命令向 OpenStack 已存在的安全組中添加新規(guī)則:
~# neutron security-group-rule-create --protocol <tcp or udp> --port-range-min <port-number> --port-range-max <port-number> --direction <ingress or egress> --remote-ip-prefix <IP-address-or-range> Security-Group-Name
Q:22 如何查看控制節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)的 OVS 橋配置?
答: 控制節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)的 OVS 橋配置可使用以下命令來(lái)查看:
~]# ovs-vsctl show
Q:23 計(jì)算節(jié)點(diǎn)上的集成橋(br-int)的作用是什么?
答: 集成橋(br-int)對(duì)來(lái)自和運(yùn)行在計(jì)算節(jié)點(diǎn)上的實(shí)例的流量執(zhí)行 VLAN 標(biāo)記和取消標(biāo)記。
數(shù)據(jù)包從實(shí)例的 n/w 接口發(fā)出使用虛擬接口 qvo 通過 Linux 橋(qbr)。qvb 接口是用來(lái)連接 Linux 橋的,qvo 接口是用來(lái)連接集成橋的。集成橋上的 qvo 端口有一個(gè)內(nèi)部 VLAN 標(biāo)簽,這個(gè)標(biāo)簽是用于當(dāng)數(shù)據(jù)包到達(dá)集成橋的時(shí)候貼到數(shù)據(jù)包頭部的。
Q:24 隧道橋(br-tun)在計(jì)算節(jié)點(diǎn)上的作用是什么?
答: 隧道橋(br-tun)根據(jù) OpenFlow 規(guī)則將 VLAN 標(biāo)記的流量從集成網(wǎng)橋轉(zhuǎn)換為隧道 ID。
隧道橋允許不同網(wǎng)絡(luò)的實(shí)例彼此進(jìn)行通信。隧道有利于封裝在非安全網(wǎng)絡(luò)上傳輸?shù)牧髁?,它支持兩層網(wǎng)絡(luò),即 GRE 和 VXLAN。
Q:25 外部 OVS 橋(br-ex)的作用是什么?
答: 顧名思義,此網(wǎng)橋轉(zhuǎn)發(fā)來(lái)往網(wǎng)絡(luò)的流量,以允許外部訪問實(shí)例。br-ex 連接物理接口比如 eth2,這樣用戶網(wǎng)絡(luò)的浮動(dòng) IP 數(shù)據(jù)從物理網(wǎng)絡(luò)接收并路由到用戶網(wǎng)絡(luò)端口。
Q:26 OpenStack 網(wǎng)絡(luò)中 OpenFlow 規(guī)則的作用是什么?
答: OpenFlow 規(guī)則是一種機(jī)制,這種機(jī)制定義了一個(gè)數(shù)據(jù)包如何從源到達(dá)目的地。OpenFlow 規(guī)則存儲(chǔ)在 flow 表中。flow 表是 OpenFlow 交換機(jī)的一部分。
當(dāng)一個(gè)數(shù)據(jù)包到達(dá)交換機(jī)就會(huì)被第一個(gè) flow 表檢查,如果不匹配 flow 表中的任何入口,那這個(gè)數(shù)據(jù)包就會(huì)被丟棄或者轉(zhuǎn)發(fā)到其他 flow 表中。
Q:27 怎樣查看 OpenFlow 交換機(jī)的信息(比如端口、表編號(hào)、緩存編號(hào)等)?
答: 假如我們要顯示 OpenFlow 交換機(jī)的信息(br-int),需要執(zhí)行如下命令:
root@compute-0-15# ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000fe981785c443
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
1(patch-tun): addr:3a:c6:4f:bd:3e:3b
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
2(qvob35d2d65-f3): addr:b2:83:c4:0b:42:3a
config: 0
state: 0
current: 10GB-FD COPPER
speed: 10000 Mbps now, 0 Mbps max
………………………………………
Q:28 如何顯示交換機(jī)中的所有 flow 的入口?
答: 可以使用命令 ovs-ofctl dump-flows
來(lái)查看交換機(jī)的 flow 入口。
假設(shè)我們想顯示 OVS 集成橋(br-int)的所有 flow 入口,可以使用如下命令:
[root@compute01 ~]# ovs-ofctl dump-flows br-int
Q:29 什么是 Neutron 代理?如何顯示所有 Neutron 代理?
答: OpenStack Neutron 服務(wù)器充當(dāng)中心控制器,實(shí)際網(wǎng)絡(luò)配置是在計(jì)算節(jié)點(diǎn)或者網(wǎng)絡(luò)節(jié)點(diǎn)上執(zhí)行的。Neutron 代理是計(jì)算節(jié)點(diǎn)或者網(wǎng)絡(luò)節(jié)點(diǎn)上進(jìn)行配置更新的軟件實(shí)體。Neutron 代理通過 Neuron 服務(wù)和消息隊(duì)列來(lái)和中心 Neutron 服務(wù)通信。
可通過如下命令查看 Neutron 代理列表:
~# openstack network agent list -c ‘Agent type’ -c Host -c Alive -c State
Q:30 CPU Pinning 是什么?
答: CPU Pinning 是指為某個(gè)虛擬機(jī)保留物理核心。它也稱為 CPU 隔離或處理器關(guān)聯(lián)。有兩個(gè)目的:
- 它確保虛擬機(jī)只能在專用核心上運(yùn)行
- 它還確保公共主機(jī)進(jìn)程不在這些核心上運(yùn)行
我們也可以認(rèn)為 Pinning 是物理核心到一個(gè)用戶虛擬 CPU(vCPU)的一對(duì)一映射。