OpenStack运维面试(1)
?
???確實(shí)有很久都沒寫博客了,這篇題目筆記是自己經(jīng)歷的,也有自己思考的,已經(jīng)有很長時(shí)間才算寫完這30道。說說自己的狀況吧,首先說為什么是OpenStack運(yùn)維面試呢,因?yàn)橹霸谝患襉penStack云計(jì)算公司實(shí)習(xí),時(shí)間不長,只有20天,我就離職了,是我自己主動要辭的。說實(shí)話,還是不錯(cuò)了,實(shí)習(xí)4K,周末雙休,不加班,不值夜班,坐辦公室學(xué)習(xí),這簡直超乎了我的意料,確實(shí)跟我想象的運(yùn)維工程師不太一樣。這種上班的感覺還是挺不錯(cuò)的,我相信我過不了多久做下一份工作的時(shí)候,回憶起來肯定覺得這簡直太幸福了。我面試準(zhǔn)備了那么久,好不容易找到一個(gè)工資不錯(cuò)的公司,雖然只是實(shí)習(xí),還是一個(gè)朝氣蓬勃的行業(yè)和公司,說離開就離開估計(jì)是誰都想不通。唉,其實(shí)我本意也不想離開,但是我“闖禍了”,呵呵,倒不是技術(shù)上,而是說話上,還不是口頭,只是郵件。事情是這樣的,我也想吐槽,這真的很小氣。
? ?本來讓我當(dāng)天去偏僻的“DB”甲方公司看項(xiàng)目的,恰好那天讓我去搬防火墻(真尼瑪重!),那天回來后,通知我還讓我去,我什么都沒準(zhǔn)備啊,第二天跑了好遠(yuǎn)的路,每天的開銷不小,那一天啥事都沒有做,我連網(wǎng)都上不了。說是“看”,還算有點(diǎn)小見識,但是我真的感覺還不會,也確實(shí)沒啥技術(shù)含量,就想下次回公司修煉一段時(shí)間再說,就是不來了。恰好那一周我給自己步驟的任務(wù)是一周內(nèi)完成OpenStack平臺的搭建,各種事情的耽擱讓我有點(diǎn)慌,那天很早就下班,我跟我的上級說我不去甲方了,但是沒有跟項(xiàng)目經(jīng)理說(其實(shí)我不想當(dāng)面說的)。元旦回來,星期二我就發(fā)郵件說“我不去了,有見識但技術(shù)上沒啥收獲”,就這么簡短的一句話,呵呵,那些所謂的領(lǐng)導(dǎo)就炸了,覺得我不服從管理,好高騖遠(yuǎn),狂妄自大吧,項(xiàng)目經(jīng)理也回復(fù)我了,感覺是生氣的樣子。這幾天,恰好招我進(jìn)來的HR休假了吧,部門老大以及直屬上級都找我談話,我也知道自己說話確實(shí)不太小心,這2個(gè)人還是沒怎么批評我,還是對我挺好的,幫我洗黑,說實(shí)話,我感謝!
? ?平靜的過了幾天,我以為沒事了,沒想到,HR回來倒找我了,想讓我轉(zhuǎn)崗,覺得我不合適做運(yùn)維,溝通能力不好,性格不合,怎么可能呀,我花了那么多時(shí)間,從網(wǎng)絡(luò)轉(zhuǎn)運(yùn)維,費(fèi)了多少力氣,如今再讓我轉(zhuǎn)軟件,簡直天方夜譚,貌似著是委婉趕我走的意思。整個(gè)下午我什么事情都不想做,想想自己,為何命運(yùn)多舛,之前面試的時(shí)候還有1家公司給我offer了,問的比較難,還好答得中規(guī)中矩,還跟我簽三方協(xié)議,但是工資太低,我就去了openstack公司,期間實(shí)習(xí)的時(shí)候還有2家公司面試都拒了。唉,沒想到,很快就又要面試了,我把公司電腦上所有東西都刪了,原來什么樣就是什么樣,跟帶我的人說了句我走了,就離開了,那天我哭了,有點(diǎn)小難過,只能說準(zhǔn)備春招吧。
? ?回來了墮落了好久,完全不想學(xué)習(xí),接下來的簡歷我也不知道怎么準(zhǔn)備了,反正又是大變化。畢業(yè)設(shè)計(jì)也是特么難搞,說句不好聽的,我尼瑪過年都有人問有女朋友了沒,真沒有啊,混得垃圾呀,身邊比我小的也結(jié)婚了,咱還是...壓力大呀
? ?技術(shù)、社交、生活,學(xué)的東西太多了,煩!下面好好準(zhǔn)備春招吧,不投實(shí)習(xí)崗位了!
1、如何刪除一個(gè)文本中的空白行,比如一行有字,然后一行空白,再有一行字?
[root@www]cat 1.txt
===========================
yhc?
is?
very?
good !
===========================
答:sed ?'/^$/d' 1.txt ? ##注意這里不能加-n靜默選項(xiàng)。另外可以使用cat 1.txt|tr "\n" " " 讓它變成一行英語語句
2、請解釋下怎么進(jìn)行l(wèi)ocation匹配的規(guī)則?(我覺得這個(gè)非常難以理解,多虧有視頻啊!看懂這個(gè),對Nginx自信爆漲)
答:精確匹配>普通匹配>正則匹配
分析:首先是URI解析,找到第一個(gè)精確匹配的,如果命中精確匹配,那么徹底結(jié)束了,不再進(jìn)行下面的location匹配了,如果沒有精確命中,那么就去尋找多個(gè)普通匹配的,普通匹配跟編輯location語句的順序沒有關(guān)系,如果普通匹配命中多個(gè),那么記憶匹配最長的(比如/aaa/bbb/)的結(jié)果,如果命中一個(gè),那么也記憶普通匹配的結(jié)果(注意,這里并未徹底結(jié)束),無論普通匹配有無命中,都要去尋找正則匹配,正則匹配跟編輯location的順序有關(guān)(一定是正則1不滿足才找正則2),如果第一個(gè)正則匹配成功,則立即跳出,返回該正則匹配下的結(jié)果,也徹底結(jié)束了,如果正則一個(gè)都沒有匹配成功,則返回前面普通匹配記憶的結(jié)果。
參考視頻:(燕十八location流程圖解) http://www.icoolxue.com/play/7027
3、Nginx如何拒絕某一個(gè)人來訪問?(對比上篇博客提到的apache只允許某個(gè)IP訪問)
答:在location上下文中添加If語句,如果$remote_addr是某個(gè)IP的話,直接返回403 forbidden
-----------------------------------------------------------------------------------------
location / {
root html;
index index.php index.html;
if ($remote_addr = 192.168.1.100) { ? ? ? ? ##if 空格 (條件),不要忘了空格
return 403;
}
}
------------------------------------------------------------------------------------------
4、當(dāng)瀏覽器訪問一個(gè)Nginx不存在的頁面時(shí),如何返回404頁面?(感覺這些問題很常見,但是沒怎么想過具體怎么做)
答:在location字段添加if語句,如果請求的文件名不存在,rewrite重寫到我們?nèi)藶槎x的404頁面,但是必須要加break,不再進(jìn)行下一輪UEI的匹配。rewrite到新的uri后進(jìn)入另外一個(gè)location,恰好這個(gè)location也有rewrite,再次重寫的uri又調(diào)回原來的location,這樣就是死循環(huán)了,最多執(zhí)行10次,然后報(bào)500錯(cuò)誤。本例中$document_root$fastcgi_script_name是客戶端傳過來的參數(shù)(比如test.html),而不是我們服務(wù)端定義的網(wǎng)頁文檔!
-----------------------------------------------------------------------------------------------------------
location / {
root html;
index index.php index.html;
if (!-e $document_root$fastcgi_script_name){
rewrite ^.*$ /404.html break; ?##這條語句表示任意文件名到/usr/local/nginx/html/404.html
}
}
-----------------------------------------------------------------------------------------------------------
5、用什么命令可以看到整個(gè)目錄下的內(nèi)容。
答:tree /usr/local/svn/svndata/
6、介紹下prefork和worker?(唉,這一點(diǎn)表述的不好,記不住了,event模式應(yīng)該是nginx和apache都有的,都是一個(gè)進(jìn)程處理多個(gè)請求)
答:(1)Prefork MPM實(shí)現(xiàn)了一個(gè)非線程的、預(yù)派生的web服務(wù)器。它在Apache啟動之初,root控制進(jìn)程在最初建立“StartServers”個(gè)子進(jìn)程后,
為了滿足MinSpareServers設(shè)置的需要創(chuàng)建一個(gè)進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建兩個(gè),再等待一秒鐘,繼續(xù)創(chuàng)建四個(gè)……如此按指數(shù)級增加創(chuàng)建的進(jìn)程數(shù),最多達(dá)到每秒32個(gè),直到滿足MinSpareServers設(shè)置的值為止。這種模式可以不必在請求到來時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能。然后等待連接;可以減少頻繁創(chuàng)建和銷毀進(jìn)程的開銷,每個(gè)子進(jìn)程只有一個(gè)線程,在一個(gè)時(shí)間點(diǎn)內(nèi),只能處理一個(gè)請求。這是一個(gè)成熟穩(wěn)定,可以兼容新老模塊,也不需要擔(dān)心線程安全問題,但是一個(gè)進(jìn)程相對占用資源,消耗大量內(nèi)存,不擅長處理高并發(fā)的場景。
(2)worker使用了多進(jìn)程和多線程的混合模式,worker模式也同樣會先預(yù)派生一些子進(jìn)程,然后每個(gè)子進(jìn)程創(chuàng)建一些線程,同時(shí)包括一個(gè)監(jiān)聽線程,每個(gè)請求過來會被分配到一個(gè)線程來服務(wù)。線程比起進(jìn)程會更輕量,因?yàn)榫€程是通過共享父進(jìn)程的內(nèi)存空間,因此,內(nèi)存的占用會減少一些,在高并發(fā)的場景下會比prefork有更多可用的線程,表現(xiàn)會更優(yōu)秀一些;另外,如果一個(gè)線程出現(xiàn)了問題也會導(dǎo)致同一進(jìn)程下的線程出現(xiàn)問題,如果是多個(gè)線程出現(xiàn)問題,也只是影響Apache的一部分,而不是全部。由于用到多進(jìn)程多線程,需要考慮到線程的安全了。
參考文檔:http://www.mamicode.com/info-detail-1212491.html
7、Nginx的master進(jìn)程和worker進(jìn)程工作原理?
答:Nginx采用異步非阻塞的方式來處理網(wǎng)絡(luò)事件,類似于Libevent。Nginx服務(wù)一啟動后,master進(jìn)程先建好需要listen的socket后,然后再fork出多個(gè)worker子進(jìn)程,這樣每個(gè)worker進(jìn)程都可以去accept這個(gè)socket。當(dāng)一個(gè)client連接到來時(shí),所有accept的worker進(jìn)程都會受到通知,但只有一個(gè)進(jìn)程可以accept成功,其它的則會accept失敗。Nginx提供了一把共享鎖accept_mutex來保證同一時(shí)刻只有一個(gè)worker進(jìn)程在accept連接,從而解決驚群問題。當(dāng)一個(gè)worker進(jìn)程accept這個(gè)連接后,就開始讀取請求,解析請求,處理請求,產(chǎn)生數(shù)據(jù)后,再返回給客戶端,最后才斷開連接,這樣一個(gè)完整的請求就結(jié)束了。
參考文檔:http://blog.chinaunix.net/uid-24517549-id-3977650.html
8、描述系統(tǒng)的啟動過程?當(dāng)用戶登錄上系統(tǒng)后,linux系統(tǒng)為用戶做了什么任務(wù)?(拓麻的這個(gè)問題我吞吞吐吐的才說出好幾個(gè),以前沒思考過這些問題,謝天謝地終于問了我那個(gè)背了很久的啟動過程,還好避免了悲劇)
答:(1)讀取/etc/passwd文件進(jìn)行身份驗(yàn)證。
(2)將用戶登錄信息寫入安全日志里面。
(3)啟動該用戶的環(huán)境變量 (然后引申出環(huán)境變量的一系列問題,我不知道)
(4)
9、如何讓域名擁有多個(gè)IP地址?客戶端來解析的時(shí)候,返回的是哪條記錄?(后面這個(gè)問題我不清楚,當(dāng)時(shí)猜測是第一條,現(xiàn)在想起來,真尼瑪×××,這特么不就是DNS輪詢嗎?肯定是一個(gè)客戶端返回第一個(gè),另一個(gè)客戶端返回第二個(gè),然后這樣周期性的順序調(diào)度)
答:DNS給域名設(shè)置多條主機(jī)A記錄即可。不同客戶端可能返回不同記錄,根據(jù)輪詢指定哪個(gè)IP地址返回給哪些客戶端。
10、說說TCP的擁塞控制。(果然是云計(jì)算企業(yè)呀,畢竟互聯(lián)網(wǎng),拓麻的這個(gè)問題勞資一時(shí)想不起來呀,我還寫的精通TCP/IP,其實(shí)這個(gè)問題
我整理過,表現(xiàn)不太完美)
答:(1)慢啟動算法作用在TCP數(shù)據(jù)傳輸?shù)拈_始階段,當(dāng)主機(jī)開始發(fā)送數(shù)據(jù)時(shí),因?yàn)椴恢谰W(wǎng)絡(luò)中的負(fù)荷情況,如果立即發(fā)送大量的數(shù)據(jù),有可能會引起網(wǎng)絡(luò)的擁塞。因此,TCP采用試探的方法,逐漸增大擁塞窗口。通常在剛開始發(fā)送數(shù)據(jù)報(bào)文段時(shí),先將擁塞窗口cwnd設(shè)置為一個(gè)TCP最大段長度MSS的值。而在每收到N個(gè)數(shù)據(jù)報(bào)文段的確認(rèn)后,cwnd就增加一個(gè)MSS的數(shù)值(就是增大一倍,所以是指數(shù)型)。這樣就可以逐漸增大發(fā)送端的擁塞窗口,使數(shù)據(jù)注入網(wǎng)絡(luò)的速率比較合理。
(2)為了防止擁塞窗口增長過快而引起網(wǎng)絡(luò)擁塞,TCP還需要設(shè)置一個(gè)慢啟動閾值ssthresh,當(dāng)擁塞窗口的值增加到ssthresh時(shí),就要減緩擁塞窗口的增長速度,具體的做法是每經(jīng)過一個(gè)RTT,擁塞窗口cwnd的值加1(單位為MSS),這樣就可以使cwnd按線性規(guī)律緩慢增長
(3)快速重傳算法的基本思想是:接收端每收到一個(gè)失序的數(shù)據(jù)報(bào)文段后就立即發(fā)出重復(fù)確認(rèn),以便更早地通知發(fā)送端有丟包的情況發(fā)生。
(4)快速恢復(fù)是配合快速重傳使用的算法,其基本思想是:當(dāng)發(fā)送端連續(xù)收到三個(gè)重復(fù)確認(rèn)時(shí),就將慢啟動閾值ssthresh減半,以預(yù)防網(wǎng)絡(luò)擁塞的發(fā)生,并且將擁塞窗口cwnd的值置為減半后的ssthresh,然后開始執(zhí)行擁塞避免算法,使得cwnd緩慢地加性增大。
參考文檔:https://www.nowcoder.com/discuss/6175
11、用過啥抓包軟件?如何判斷網(wǎng)絡(luò)出現(xiàn)擁塞、***、延遲以及各種異常情況?TCP的窗口在哪?(答得不好,根據(jù)序列號來判斷是我瞎說的,還好面試官原諒我沒經(jīng)驗(yàn))
答:wireshark、tcpdump。
(1)分析是否有大量數(shù)據(jù)包的序列號混亂。
(2)分析是否有廣播地址存在。
(3)分析延遲多不多。(但是感覺不容易,因?yàn)橐话闶强床怀鰜硌舆t的,只是觀測一個(gè)源IP地址的數(shù)據(jù)包發(fā)出請求,然后看什么位置目的端進(jìn)行響應(yīng)了該請求)
12、如果我是小白,什么叫做反向代理,Nginx的反向代理和負(fù)載均衡有什么區(qū)別嗎?Nginx根據(jù)什么來進(jìn)行反向代理到后端服務(wù)器。(其實(shí)最后
一個(gè)問題當(dāng)時(shí)除了URI根本答不出來其他的)
答:反向代理:代理服務(wù)器監(jiān)聽外網(wǎng)上的客戶端發(fā)出來的請求,并把該請求轉(zhuǎn)發(fā)給內(nèi)網(wǎng)后臺的真實(shí)服務(wù)器進(jìn)行處理,處理完畢后,先經(jīng)過代理服務(wù)器緩存一份,而后,再通過代理服務(wù)器封裝http應(yīng)答報(bào)文返回給客戶端。Nginx的通過location正則匹配URI代理到后端的服務(wù)器,并且在負(fù)載均衡upstream模塊,根據(jù)域名和端口代理到多臺后端服務(wù)器。(域名和端口這個(gè)怎么能叫問題呢)
區(qū)別:(1)Nginx的反向代理和負(fù)載均衡沒有太大區(qū)別,基本的配置指令都一樣,但是反向代理提供緩存功能,所以可以添加一些緩存命令行。
(2)代理到后端一臺服務(wù)器就可以稱之為反向代理,代理到后端多臺服務(wù)器就稱為負(fù)載均衡,負(fù)載均衡是每臺機(jī)器都會分擔(dān)一些處理請求的壓力,負(fù)載均衡完全可以認(rèn)為是反向代理。
參考文檔:https://www.oschina.net/question/126236_119223
13、為什么慢啟動算法中擁塞窗口要按指數(shù)級進(jìn)行增長呢?擁塞窗口到底代表什么意思?(以前真沒有好好想過擁塞控制,一旦自己面試遇到了,知道這玩意重要了)
答:擁塞窗口就是發(fā)送方在某次會話交互過程中,在一個(gè)RTT(round trip time)周期內(nèi),能夠發(fā)送的TCP報(bào)文段的數(shù)量多少。
原因:(1)當(dāng)TCP連接剛剛建立,準(zhǔn)備要數(shù)據(jù)傳輸?shù)臅r(shí)候,由于不知道網(wǎng)絡(luò)的負(fù)載情況,所以要去試探性檢測,只發(fā)出很少的數(shù)據(jù)包,擁塞窗口的值設(shè)的很小,我每發(fā)出N個(gè)數(shù)據(jù)幀,如果網(wǎng)絡(luò)不擁塞丟包,那么就應(yīng)該返回給我N個(gè)確認(rèn)包,而后我的擁塞窗口就會在以前的基礎(chǔ)上增大一倍,說明我之前發(fā)出N個(gè)數(shù)據(jù)包是沒有問題的,不會堵塞,同時(shí)增大一倍提高發(fā)送效率。
(2)那么每增大一倍,擁塞窗口的大小就是按著指數(shù)級別增長了。當(dāng)增大到一定程度上,必須減緩發(fā)送速率,于是使用擁塞避免算法,讓擁塞窗口可以線性增長,每收到一個(gè)確認(rèn),窗口就增大1個(gè)單位,當(dāng)達(dá)到最大MSS(max segment size)時(shí),擁塞窗口大小驟降,變?yōu)樵瓉砺龁铀惴〞r(shí)候的窗口大小,通常為1,并且門限值變?yōu)镸SS的一半,而后,如此往復(fù)。
14、在OpenStack中,用戶PUT和GET都是同一個(gè)對象,說說存儲節(jié)點(diǎn)Swift存取的工作原理?
答:(1)上傳文件時(shí),PUT請求經(jīng)過負(fù)載均衡機(jī)器通過一致性哈希算法隨機(jī)選擇一臺代理服務(wù)器,再將請求轉(zhuǎn)發(fā)數(shù)據(jù)存儲節(jié)點(diǎn),代理服務(wù)器通過查找本地的Ring(環(huán))文件,包括account環(huán)、container環(huán)、object環(huán)選擇3個(gè)不同的區(qū)域(zone),zone保證了數(shù)據(jù)的副本不會都放在同一個(gè)存儲節(jié)點(diǎn)上,從而避免了單點(diǎn)故障的可能性,可以使用3個(gè)磁盤來替代3個(gè)節(jié)點(diǎn)。而后,向3個(gè)數(shù)據(jù)節(jié)點(diǎn)都進(jìn)行寫操作,只有當(dāng)至少2個(gè)節(jié)點(diǎn)都確認(rèn)寫成功后,再向用戶返回寫成功信息。
(2)而后,當(dāng)用戶需要get請求該對象(對象=元數(shù)據(jù)+內(nèi)容)下載文件時(shí),也需要經(jīng)過負(fù)載均衡隨機(jī)挑選一臺代理服務(wù)器,代理服務(wù)器上的環(huán)文件能
查詢到這個(gè)文件存儲在哪三個(gè)節(jié)點(diǎn)中,然后同時(shí)向后端查詢,當(dāng)前僅當(dāng)至少2個(gè)存儲節(jié)點(diǎn)表示可以提供該文件,然后代理服務(wù)器才從中選擇一個(gè)節(jié)點(diǎn)下載文件。
15、云主機(jī)實(shí)例1和云主機(jī)實(shí)例2彼此通信,基于VXLAN的工作原理?(VTEP是Vxlan tunnel end point,VNI是vxlan的network identifier,虛擬機(jī)通信還可以
linux bridge)
答:(1)VM1要向VM2發(fā)送數(shù)據(jù)前,必須要知道VM2的MAC地址,其獲取過程如下:
? ? ? ? ?1、VM1發(fā)送ARP請求包,請求192.168.0.101[VM2_IP]的MAC地址;
? ? ? ? ?2、ARP請求包被VTEP1封裝成多播包,發(fā)給VNI=864的多播組;
? ? ? ? ?3、所有的VTEP接收此多播包,并添加(VNI–VTEP1–VM1_MAC Address)映射關(guān)系到自己的VXLAN表中;
? ? ? ? ?4、目的主機(jī)上的VTEP2接收到多播包后將其解開,并向本主機(jī)上VNI=864的所有虛擬機(jī)發(fā)送廣播包;
? ? ? ? ?5、VM2看到了ARP包后,回應(yīng)了自己的MAC地址;
? ? ? ? ?6、VTEP2再次封裝回應(yīng)的單播包,通過路由發(fā)給VTEP1;
? ? ? ? ?7、VTEP1解包,并將包傳給VM1,則最終獲取了VM2的MAC地址;
? ? ? ? ?8、VTEP1將(VNI–VTEP2–VM2_MAC Address)映射關(guān)系添加到自己的VXLAN表中;
(2)VM1獲知VM2的MAC地址后,發(fā)送數(shù)據(jù)包,過程如下:
1、 ?VM1發(fā)送IP數(shù)據(jù)包到VM2,即192.168.0.100 到 192.168.0.101;
2、 ?VTEP1查找自己的VXLAN表知道要發(fā)給VTEP2,然后依次封裝以下數(shù)據(jù)包頭;
a)VXLAN包頭,VNI=864;
b)標(biāo)準(zhǔn)UDP包頭,校驗(yàn)和checksum為0x0000,目標(biāo)端口號4789;
c)標(biāo)準(zhǔn)IP包頭,目標(biāo)地址為VTEP2的IP地址,協(xié)議號設(shè)為0x11表面為UDP包。
d)標(biāo)準(zhǔn)MAC數(shù)據(jù)包,目標(biāo)地址為下一跳設(shè)備(虛擬路由器)的MAC地址00:10:11:FE:D8:D2,可路由到目標(biāo)隧道端VTEP2。
3、 ?VTEP2接收數(shù)據(jù)包,根據(jù)UDP的destination端口找到VXLAN數(shù)據(jù)包。接著查找所有所在VXLAN的VNI為864的端口組,找到VM2的
4、 ?VM2接收并處理數(shù)據(jù)包,拿到Payload數(shù)據(jù).(vxlan有2^24個(gè)邏輯網(wǎng)絡(luò),所以稱為擴(kuò)展vlan)
參考文檔:http://www.aboutyun.com/thread-11189-1-1.html
16、在OpenStack中,介紹什么是浮動IP?什么是元數(shù)據(jù)?
答:(1)OpenStack引入了一個(gè)叫浮動ip的概念,浮動ip是一些可以從外部訪問的ip列表,通常從isp哪里買來的。浮動ip缺省不會自動賦給實(shí)例,用戶需要手動從地址池里抓取然后賦給實(shí)例。一旦用戶抓去后,他就變成這個(gè)ip的所有者,可以隨意賦給自己擁有的其他實(shí)例。如果實(shí)例死掉了的話,用戶也不會失去這個(gè)浮動ip,可以隨時(shí)賦給其他實(shí)例。暫時(shí)不支持為了負(fù)載均衡多實(shí)例共享一個(gè)浮動ip。動IP地址可以讓實(shí)例使用私有網(wǎng)絡(luò)連接到外部網(wǎng)絡(luò),例如互聯(lián)網(wǎng)。而對于固定ip來說,實(shí)例啟動后獲得的ip是自動的,不能指定某一個(gè)。所以當(dāng)一個(gè)VM歇菜了,再啟動也許固定ip就換了一個(gè)。
(2)系統(tǒng)管理員可以配置多個(gè)浮動ip池,這個(gè)ip池不能指定租戶,每個(gè)用戶都可以去抓取。多浮動ip池是為了考慮不同的isp服務(wù)提供商,免得某一個(gè)isp出故障帶來麻煩。如果運(yùn)行的是企業(yè)云,浮動ip池就是那些openstack外的數(shù)據(jù)中心都能訪問到的ip。浮動ip機(jī)制給云用戶提供了很多靈活性,也給系統(tǒng)管理員減少了安全風(fēng)險(xiǎn),盡量只讓OpenStack軟件去改防火墻會安全些。
參考文檔:http://www.cnblogs.com/wcxy/p/3402006.html
元數(shù)據(jù)(Metadata):又稱中繼數(shù)據(jù),描述為數(shù)據(jù)的數(shù)據(jù),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。
17、講講Opnstack啟動虛擬機(jī)實(shí)例后,虛擬機(jī)的狀態(tài)是怎么變化的?
答:(1)管理員發(fā)出創(chuàng)建虛擬機(jī)的命令,決定從鏡像文件或是快照文件進(jìn)行啟動。
(2)當(dāng)創(chuàng)建后,虛擬機(jī)實(shí)例進(jìn)入Build狀態(tài),任務(wù)狀態(tài)是Spawning孵化。
(3)期間,將會從控制節(jié)點(diǎn)上的Glance組件把相應(yīng)的鏡像文件從中下載到Nova計(jì)算節(jié)點(diǎn),并進(jìn)行一些虛擬機(jī)的初始參數(shù)配置,如內(nèi)存、CPU、磁盤空間。
(4)當(dāng)一切正常后,虛擬機(jī)將會將會進(jìn)入Active狀態(tài),此后,用戶便可以使用云主機(jī)了。創(chuàng)建實(shí)例的時(shí)間一般由鏡像文件的大小、網(wǎng)絡(luò)傳輸帶寬、以及創(chuàng)建的Hypervisor磁盤性能大小。
(5)虛擬機(jī)創(chuàng)建完畢,可以經(jīng)過Horzion的web界面進(jìn)行管理,也可以基于Python Nova client的命令行管理。
18、說說OpenStakc各組件的作用?
答:(1)keystone負(fù)責(zé)為每個(gè)服務(wù)進(jìn)行認(rèn)證、授權(quán)、租戶管理、項(xiàng)目權(quán)限和配額以及服務(wù)目錄管理。
(2)Glance負(fù)責(zé)提供Nova創(chuàng)建實(shí)例所需要的鏡像文件,鏡像格式如raw、qcow2。
(3)Nova負(fù)責(zé)云主機(jī)實(shí)例生命周期的管理,以及宿主機(jī)資源調(diào)度;Nova還決定了虛擬機(jī)實(shí)例在哪一臺Hypervisior物理機(jī)上運(yùn)行。
(4)Horzion將用戶的http請求轉(zhuǎn)換為RESTful請求,然后將RESTful請求分發(fā)給Nova API,進(jìn)行實(shí)例的創(chuàng)建。
(5)cinder提供塊存儲,目的是用來做持久存儲的,典型軟件如ceph;swift提供對象存儲,用來文件共享的。
(6)neutron服務(wù)為云主機(jī)實(shí)例提供網(wǎng)絡(luò)服務(wù),比如私有IP的地址分配問題,訪問外網(wǎng)的浮動IP、NAT路由、防火墻,以及云主機(jī)實(shí)例彼此之間的vxlan通信。
19、談?wù)勀銓pentStack的認(rèn)識?
答:OpenStack是一個(gè)分布式系統(tǒng),完成一件事,基本上都會涉及到一系列的組件,這些組件協(xié)同工作,在云中扮演著各種角色。(然后就拿上面各組件的作用說,原理我看就算了,一般人說不清楚,對方也聽不懂,呵呵)
20、概述創(chuàng)建虛擬機(jī)的流程。(這個(gè)問題,非常值得思考,很容易被問到!)
答:(1)Horizon通過Keystone獲取nova-Compute組件的的訪問地址(即URL),并獲取令牌token。
(2)Horizion攜帶授權(quán)令牌,發(fā)送創(chuàng)建虛擬機(jī)指令。
(3)Nova-compute組件通過glance-api下載虛擬機(jī)鏡像,glance鏡像中有緩存機(jī)制,通常把緩存文件放入名為_base的目錄,如果_base緩存沒有鏡像文件
,那么就會從glance下載鏡像到base緩存,然后再從base緩存通過TCP/IP網(wǎng)絡(luò)復(fù)制到計(jì)算節(jié)點(diǎn)云主機(jī)實(shí)例下的鏡像目錄里。
(4)glance檢索后端鏡像,glance后端存儲不一定要使用swift,只要是存放鏡像文件的系統(tǒng)都可以。
(5)獲取網(wǎng)絡(luò)信息,決定虛擬機(jī)的網(wǎng)絡(luò)模式以及建立網(wǎng)絡(luò)連接。
(6)nova-compute發(fā)送啟動虛擬機(jī)指令,至此經(jīng)過虛擬機(jī)服務(wù)任務(wù)狀態(tài)的變化,正常過后創(chuàng)建即可完成。
21、如果我有多個(gè)計(jì)算節(jié)點(diǎn),那么我啟動一個(gè)云主機(jī)實(shí)例,那么我怎么知道該實(shí)例在哪臺計(jì)算節(jié)點(diǎn)上運(yùn)行呢?(嗯...因缺絲婷)
答:命令查看...
22、PXE的工作原理?
答:實(shí)現(xiàn)自動獲取IP網(wǎng)絡(luò)安裝linux是這樣的:客啟端PXE網(wǎng)卡啟動-->通過Bootp協(xié)議廣播dhcp請求-->DHCP服務(wù)器-->獲取IP,TFTP服務(wù)器地址-->從TFTP上下載 pxelinux.0以及系統(tǒng)內(nèi)核文件vmlinuz、initrd.img-->啟動系統(tǒng)-->(到指定url去下載ks.cfg文件-->根據(jù)ks.cfg文件去NFS/HTTP/FTP服務(wù)器自動下載軟件包)安裝系統(tǒng)-->完成安裝。
DHCP server為客戶端分配ip并提供TFTP服務(wù)器地址及PXE啟動文件位置,TFTP server為客戶端提供引導(dǎo)文件
23、創(chuàng)建網(wǎng)絡(luò)時(shí),Neutron做了什么?
答:創(chuàng)建虛擬機(jī)時(shí),Neutron會根據(jù)選擇的網(wǎng)絡(luò),首先給虛擬機(jī)分配一個(gè)tap設(shè)備作為虛擬的網(wǎng)卡,命名為tapXXX , XXX是一串?dāng)?shù)字和字母的組合,用來標(biāo)識的,譬如tap8eaf6158-80,
在系統(tǒng)中使用ifconfig命令可以看到新增了這個(gè)網(wǎng)口。建立一個(gè)Linux網(wǎng)橋,命名為
qbr8eaf6158-80。把上面那個(gè)新增的tap網(wǎng)口接在這個(gè)qbr的交換機(jī)上,使用命令“brctl
show”可以列出存在的網(wǎng)橋設(shè)備和端口。現(xiàn)在,虛擬機(jī)上已經(jīng)有了一個(gè)接在虛擬網(wǎng)橋上的網(wǎng)
口,接下來是如何把這個(gè)網(wǎng)口與OVS的br-tun連接起來。
? ? 這時(shí)會有一對veth設(shè)備出現(xiàn)。veth是Linux中的虛擬網(wǎng)絡(luò)設(shè)備,總是成對出現(xiàn),一對veth設(shè)備的數(shù)據(jù)總是從一個(gè)流人,
從另一個(gè)流出。Neut1-on會建立一對分別命名為qvbXXX
和qvoXXX的veth設(shè)備,并且把它們分別連接到前面提到的qbr8eaf6158和br-int這兩個(gè)交
換機(jī)上。可以使用命令“brctl show”和“ovs-vsctl show”分別查詢qbrXXX和br-int這兩個(gè)
交換機(jī)是否已經(jīng)串聯(lián)起來了。
23、saltstack中,master和minion各自干了什么事?
答:master:存放所有minion的公鑰、監(jiān)聽mininon、發(fā)送命令給minion、存放一些為minion準(zhǔn)備的配置文件,如state、存放一些為minion準(zhǔn)備的files和數(shù)據(jù),如apache2.cnf,pillar
minion:連接master、監(jiān)聽master發(fā)送的commands、從master下載state并且執(zhí)行state、可以執(zhí)行在minion上執(zhí)行state,用salt-call,當(dāng)然這個(gè)一般多數(shù)用于調(diào)試
24、SSH的工作原理?
答:(1)SSH可以基于賬戶密碼進(jìn)行認(rèn)證;SSH可以基于密鑰對進(jìn)行認(rèn)證
(2)基于密鑰的安全認(rèn)證就是本機(jī)提供一對公鑰和私鑰,把公鑰復(fù)制一份放在遠(yuǎn)程服務(wù)器上面,遠(yuǎn)程服務(wù)器的sshd進(jìn)程監(jiān)聽22號端口。當(dāng)向遠(yuǎn)程服務(wù)器發(fā)起請求的時(shí)候,本機(jī)會把公鑰發(fā)送給遠(yuǎn)程服務(wù)器,遠(yuǎn)程服務(wù)器會在家目錄下檢查公鑰是否一致,如果一致,就會把應(yīng)答數(shù)據(jù)包使用公鑰加密后返回給客戶端,客戶端再使用自己的私鑰進(jìn)行解密,得到解密后的數(shù)據(jù)包,其中解密后的數(shù)據(jù)包含有會話密鑰,而后使用會話密鑰進(jìn)行通信。
25、Zabbix有何特性?
答:數(shù)據(jù)收集、靈活的閾值定義、高級告警設(shè)置、實(shí)時(shí)繪圖、擴(kuò)展的圖形化展示、歷史數(shù)據(jù)存儲、監(jiān)控主機(jī)使用模板、自動發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備、提供Zabbix API。
26、Zabiix包含了哪幾個(gè)進(jìn)程,各有什么作用?
答:(1)Zabbix_agentd:客戶端守護(hù)進(jìn)程,收集本機(jī)的數(shù)據(jù)
(2)Zabbix_get:Server端用于主動獲取被監(jiān)控端數(shù)據(jù)
(3)Zabbix_sender:被監(jiān)控端結(jié)合trapper進(jìn)程,主動發(fā)送監(jiān)控項(xiàng)收集的數(shù)據(jù)到Server或Proxy端
(4)Zabbix_server:服務(wù)端的守護(hù)進(jìn)程,接受其他進(jìn)程發(fā)過來的數(shù)據(jù)
(5)Zabbix_proxy:代理守護(hù)進(jìn)程,功能類似于Server,不過它只是一個(gè)中轉(zhuǎn)站,把收集到的數(shù)據(jù)再提交給Server,跨機(jī)房和地區(qū)需要用到
27、zabbix的server端如何去監(jiān)控agent端?
答:原理:每一個(gè)item都有其專用的key,zabbix服務(wù)器與被監(jiān)控端進(jìn)行通信時(shí)就使用相應(yīng)的協(xié)議或機(jī)制去質(zhì)詢被監(jiān)控端這個(gè)key的值,被監(jiān)控端就調(diào)用此key所對應(yīng)的腳本去獲取相應(yīng)的數(shù)據(jù)并返回給服務(wù)端。
28、監(jiān)控中,歷史數(shù)據(jù)和歷史趨勢數(shù)據(jù)有何區(qū)別?
答:歷史數(shù)據(jù):指的是采樣的數(shù)據(jù)。指定存儲在數(shù)據(jù)庫中的天數(shù),如果超過該閾值,那么會被housekeeper進(jìn)程給清理掉
歷史趨勢數(shù)據(jù):指的是每小時(shí)的最大值、最小值、平均值以及各種統(tǒng)計(jì)。
29、說一下,在zabbix監(jiān)控某個(gè)主機(jī)的時(shí)候,人為應(yīng)該部署哪些步驟?
答:創(chuàng)建主機(jī)、附加模板,修改item監(jiān)控項(xiàng),創(chuàng)建圖形(關(guān)聯(lián)Item),定義觸發(fā)器,創(chuàng)建用戶,創(chuàng)建事件、創(chuàng)建action
30、如果有100臺服務(wù)器,每臺服務(wù)器有30個(gè)監(jiān)控項(xiàng),每個(gè)監(jiān)控項(xiàng)60秒刷新一次,需要多大的硬盤呢?
答:隨著監(jiān)控項(xiàng)的數(shù)量增多以及監(jiān)控值的實(shí)時(shí)刷新,數(shù)據(jù)庫也會越來越龐大,那么影響Zabbix硬盤大小的因素有:
(1)監(jiān)控值每秒中存儲的數(shù)據(jù)量:100x30/60=50個(gè) ?
(2)歷史記錄保存時(shí)間
(3)趨勢數(shù)據(jù)保存時(shí)間
(4)事件記錄保存時(shí)間 (報(bào)警、恢復(fù))
(5)數(shù)據(jù)庫引擎以及數(shù)據(jù)類型(整型、浮點(diǎn)型、字符型)
綜上:數(shù)據(jù)庫硬盤空間=配置文件大小+歷史記錄+趨勢記錄+事件記錄
轉(zhuǎn)載于:https://blog.51cto.com/19951008/1894950
總結(jié)
以上是生活随笔為你收集整理的OpenStack运维面试(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【SAP BI】BW如何连接SQLSER
- 下一篇: 绘制机制