国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

深度解析 OpenStack metadata 服務架構

Michael_Lin / 1459人閱讀

摘要:下圖展示了虛擬機可以獲取到的信息神奇的這個地址來源于,亞馬遜在設計公有云的時候為了讓能夠訪問,就將這個特殊的作為服務器的地址。服務啟動了服務,負責處理虛擬機發送來的請求。服務也運行在網絡節點。中的路由和服務器都在各自獨立的命名空間中。

前言

下圖是OpenStack虛擬機在啟動過程中發出的一個請求,我們在里面可以看到cloud-init和169.254.169.254。那么它們分別是做什么用的呢,接下來我們將會做一個詳細的介紹。

眾所周知,在創建虛擬機的時候,用戶往往需要對虛擬機進行一些配置,比如:開啟一些服務、安裝某些包、添加SSH 秘鑰、配置 hostname,修改密碼等等。這里有兩個問題,一個是誰負責初始化虛擬機配置,另一個是虛擬機如何獲取到這些配置信息的。

首先這些信息的初始化是通過cloud-Init的方式配置到虛擬機中。cloud-Init是一個用來自動配置虛擬機的初始設置的工具,它可以在使用模板部署虛擬機時使用,從而達到避免網絡沖突的目的。在使用這個工具前,cloud-init 軟件包必須在虛擬機上被安裝。安裝后,cloud-Init服務會在系統啟動時搜索如何配置系統的信息。您可以使用只運行一次窗口來提供只需要配置一次的設置信息;或在新建虛擬機、編輯虛擬機和編輯模板窗口中輸入虛擬機每次啟動都需要的配置信息。

cloud-init負責初始化虛擬機配置,那么虛擬機如何獲取到用戶傳遞的配置信息呢?OpenStack提供了兩種方式獲取這些配置信息,一種是config drive,一種是metadata RESTful服務。由于篇幅關系,本文主要闡述metadata RESTful服務。

OpenStack nova-api-metadata服務提供了RESTful 接口,虛擬機可以通過訪問API獲取metadata 信息。要完成從虛擬機至網絡節點的請求發送和響應,保證鏈路的連通,只有nova-api-metadata服務是不夠的,OpenStack提供neutron-metadata-agent 和 neutron-ns-metadata-proxy服務保證虛擬機的請求可以發送到nova-api-metadata服務。

下圖展示了虛擬機可以獲取到的metadata信息

神奇的169.254.169.254

這個地址來源于AWS,亞馬遜在設計公有云的時候為了讓instance 能夠訪問 metadata,就將 169.254.169.254 這個特殊的IP 作為metadata 服務器的地址。然后大家在給亞馬遜定制各種操作系統鏡像的時候獲取metadata的api地址就寫的是169.254.169.254。為了這些鏡像也能在OpenStack上運行,為了兼容它。OpenStack就保留了這個地址。

nova-api-metadata服務

nova-api-metadata啟動了RESTful 服務,負責處理虛擬機發送來的REST API 請求。從請求的HTTP 頭部中取出相應的信息,獲得虛擬機的ID,繼而從數據庫中讀取虛擬機的metadata 信息,最后將結果返回。

neutron-metadata-agent服務

neutron-metadata-agent 運行在網絡節點,負責將接收到的獲取metadata 的請求轉發給nova-api-metadata。neutron-metadata-agent 會獲取虛擬機和租戶的ID,添加到請求的HTTP 頭部中。nova-api-metadata 會根據這些信息獲取metadata。

neutron-ns-metadata-proxy服務

neutron-ns-metadata-proxy 也運行在網絡節點。為了解決網絡節點的網段和租戶的虛擬網段重復的問題,OpenStack 引入了網絡命名空間。neutron 中的路由和DHCP 服務器都在各自獨立的命名空間中。由于虛擬機獲取metadata 的請求都是以路由和DHCP 服務器作為網絡出口,所以需要通過neutron-ns-metadata-proxy 聯通不同的網絡命名空間,將請求在網絡命名空間之間轉發。

neutron-ns-metadata-proxy利用在unix domain socket 之上的HTTP技術,實現了不同網絡命名空間之間的HTTP 請求轉發。并在請求頭中添加’X-Neutron-Router-ID’和’X-Neutron-Network-ID’信息,以便neutron-metadata-agent 來辨別發送請求的虛擬機,獲取虛擬機的ID。通過下圖可以看出每個網絡或者router均會有一個服務進程,網絡對應的端口號為80,router對應的端口號為9697。

虛擬機獲取metadata流程

如上圖所示,虛擬機獲取metadata 的大致流程為:首先請求被發送至neutron-ns-metadata-proxy,此時會在請求中添加router-id 和network-id,然后請求通過unix domian socket 被轉發給neutron-metadata-agent,根據請求中的router-id、network-id 和IP,獲取port 信息,從而拿到instance-id 和tenant-id 加入請求中,最后請求被轉發給nova-api-metadata,其利用instance-id 和tenant-id 獲取虛擬機的metadata,返回相應。

上面我們分析了各個服務之間轉發請求的流程,那么現在只存在一個問題,整個獲取metadata 的路線就通暢了:虛擬機如何將請求發送至neutron-ns-metadata-proxy? neutron通過兩種方式來解決這個問題:通過router 發送請求和通過DHCP 發送請求。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/5342.html

相關文章

  • 深度解碼超實用的OpenStack Heat

    摘要:模板中的頂級,定義實例化后將返回的數據。通過如此的解析和協作,最終完成請求的處理。服務接受請求,讀入模板信息,處理后利用請求發送給。首先,調用拿到對應的。Heat 是由AWS的EC2 Cloud Formation 演化而來,是openstack中負責Orchestration的service, 用于openstack 中資源的編排,它通過將OpenStack中的資源(resource)以模...

    pkwenda 評論0 收藏0
  • 通過demo學習OpenStack開發所需的基礎知識 -- 數據庫(1)

    摘要:另外,項目在單元測試中使用的是的內存數據庫,這樣開發者運行單元測試的時候不需要安裝和配置復雜的數據庫,只要安裝好就可以了。而且,數據庫是保存在內存中的,會提高單元測試的速度。是實現層的基礎。項目一般會使用數據庫來運行單元測試。 OpenStack中的關系型數據庫應用 OpenStack中的數據庫應用主要是關系型數據庫,主要使用的是MySQL數據庫。當然也有一些NoSQL的應用,比如Ce...

    warnerwu 評論0 收藏0
  • 【干貨】云計算新名詞解析

    摘要:慢慢硬件和就綁在一起了,的,的,的微軟是個例外,可在不同的服務器上跑。虛擬軟件的老大自打推出它的之后,很快又推出了它的管理平臺另一大佬微軟比胃口還大,從操作系統到虛擬軟件,當然忘不了它的管理平臺。自此,成了容器的代名詞。  云世界里的技術日新月異,新名詞一個接著一個讓人應接不暇,從虛擬化開始,VMware、HyperV、KVM,到云管理平臺VSphere、SystemCenter、OpenS...

    BicycleWarrior 評論0 收藏0
  • ECUG Con 邀您共議服務端開發最深度實踐

    摘要:本屆大會仍然以交流云計算產業的最前沿技術探索和服務端開發運維的最成熟實踐為宗旨,圍繞各講師過去一年內的技術演變和項目實踐進行互動和分享。 showImg(https://segmentfault.com/img/bVsmUZ);ECUG 全稱為 Effective Cloud User Group (實效云計算用戶組),由七牛云 CEO 許式偉于 2007 年發起,集結了一批具有高端視...

    dongxiawu 評論0 收藏0
  • openstack創建虛擬機源碼閱讀

    摘要:標簽源碼閱讀在中虛擬機的創建無疑是非常重要的了解虛擬機創建流程并閱讀模塊關于創建虛擬機的源碼對開發有很很大幫助本篇文章將以版本為基礎講解創建虛擬機的源碼由于模塊代碼復雜而且閱讀源碼所需知識較多所以側重于流程邏輯源碼閱讀可能不夠詳盡指出模塊結 標簽: openstack nova 源碼閱讀 在openstack中,虛擬機的創建無疑是非常重要的,了解虛擬機創建流程并閱讀nova模塊關于創...

    muddyway 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<