亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenStack虛擬機中Metadata是什么

發布時間:2021-12-29 15:49:17 來源:億速云 閱讀:290 作者:小新 欄目:服務器

小編給大家分享一下OpenStack虛擬機中Metadata是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

前言

剛接觸OpenStack的朋友都知道,我們在創建虛擬機的時候選擇密鑰對,虛擬機創建完畢后,直接使用ssh無密碼就可以登錄到虛擬機,那么我們創建的my-key如何就這么神奇的被放到了虛擬機中呢?

OpenStack虛擬機中Metadata是什么

OpenStack metadata

要理解如何實現的,我們需要先了解OpenStack的metadata。metadata字面上是元數據,主要用來給客戶提供一個可以修改設置OpenStack  instence(云主機)的機制,就像我們想在虛擬機放置一個公鑰這樣的需求,或者設置主機名等都可以通過metadata來實現。讓我來梳理一下思路:

1.OpenStack有一個叫做Metadata的東東。

2.我們創建虛擬機時候設置的主機名、密鑰對,都保存在Metadata中。

3.虛擬機創建后,在啟動的時候獲取Metadata,并進行系統配置。

虛擬機如何取到Metadata?

那么虛擬機到底是怎么取到這個metadata呢?讓我們在虛擬機試試這個。

$ curl http://169.254.169.254/2009-04-04/meta-data  ami-id  ami-launch-index  ami-manifest-path  block-device-mapping/  hostname  instance-action  instance-id  instance-type  local-hostname  local-ipv4  placement/  public-hostname  public-ipv4  public-keys/  reservation-id

是不是有點驚訝,注意到我們請求的IP地址了嗎,169.254.169.254,這是什么魔法?從哪里冒出來一個這樣的IP地址,竟然還可以訪問,我們肯定從來沒有配置過類似奇怪的IP地址在任何OpenStack的服務中。

那我們就到虛擬機里面去一探究竟,既然能訪問,那么根據OSI七層模型來理解,一定有到這個IP地址的路由存在吧。

OpenStack虛擬機中Metadata是什么

我們使用ip ro  li列出虛擬機路由,可以看到果然有一條路由:169.254.169.254從192.168.57.100出去,那么誰擁有這個IP地址呢?我們先來控制節點上(當然更嚴謹的說是在運行Neutron-dhcp-agent的節點上)找一找。

# ip netns li qdhcp-ec14e723-ff09-4dab-a9e9-26dc6facc0fd

我們可以看到在控制節點有一個qdhcp的namespace,這個是我們啟動Neutron-DHCP-Agent生成的,我們可以看下它的IP地址是什么。

OpenStack虛擬機中Metadata是什么

它竟然有兩個IP地址,192.168.57.100和169.254.169.254。再繼續往下探索之前,我們先停下來,那么怎么設置讓DHCP給虛擬機推送這個路由呢?答案在我們當時配置DHCP-Agent的時候。

# vim/etc/neutron/dhcp_agent.ini  enable_isolated_metadata = true

有一個Web服務?

好的,由于我們使用的橋接網卡,那么訪問169.254.269.254的請求非常順利的被送到了qdhcp-ec14e723-ff09-4dab-a9e9-26dc6facc0fd這個namespace這里。那么需要有一個Web服務監聽在80端口給我們提供吧,我們繼續看:

OpenStack虛擬機中Metadata是什么

果然有一個Apache監聽在80端口,為我們默默的提供metadata。所以虛擬機就是這么獲取這些信息的:

獲取用戶注入的key:

OpenStack虛擬機中Metadata是什么

獲取主機名

OpenStack虛擬機中Metadata是什么

獲取IP地址

OpenStack虛擬機中Metadata是什么

現在你終于知道OpenStack創建虛擬機之后到底是怎么獲取到這些meta-data信息了吧。不過別忘了。這個是我們用的cirros的小鏡像才有的。如果你自己創建一個鏡像可不會這么智能,那么怎么辦呢?我相信聰明的你已經想到了最簡單的方案:

在啟動的時候執行一個腳本。這個腳本通過訪問meata-data獲取內容,然后設置到系統上。把這個腳本放到/etc/rc.local中。如果你不想這個腳本每次都執行,你還可以在執行完畢后,再把自己從/etc/rc.local中移除。

OpenStack虛擬機中Metadata是什么

當然還有其它的方案。例如使用cloud-init這個軟件包。

為啥是169.254.169.254?

或許你和我有一樣的疑問,為啥這個meatadata的ip地址是169.254.169.254呢?這個就要提到Amazon了。因為metadata是亞馬遜提出來的。然后大家再給亞馬遜定制各種操作系統鏡像的時候獲取metadata的api地址就寫的是169.254.169.254。為了這些鏡像也能在OpenStack上運行,為了兼容它。OpenStack就保留了這個地址。其實早期的OpenStack版本是通過iptables  NAT來映射169.254.169.254到真實API的IP地址上。不過現在更靈活了,直接在虛擬機里面增加了一條路由條目來實現,讓虛擬機順利的訪問到這個IP地址。

看完了這篇文章,相信你對“OpenStack虛擬機中Metadata是什么”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳曲县| 哈巴河县| 晋江市| 肥城市| 青岛市| 阿荣旗| 丹凤县| 揭东县| 鸡泽县| 江孜县| 崇文区| 昆明市| 佛教| 吉林省| 都兰县| 乌海市| 洛阳市| 昆明市| 鄂伦春自治旗| 宜兴市| 克山县| 逊克县| 乐都县| 鸡西市| 云林县| 天祝| 长沙县| 龙山县| 原阳县| 汨罗市| 商河县| 万山特区| 如东县| 开鲁县| 天峻县| 怀远县| 嵩明县| 五原县| 吉木萨尔县| 铜陵市| 敖汉旗|