深入windows azure作業系統
1.深入azure作業系統核心FC
2.azure服務模型(service model)
3.fault domain和upgrade domain
4.server叢集初始原理
5.深入vm內部
1.深入azure作業系統核心FC
azure fabric有數量眾多的servers組成,但是雲上的開發人員是不需要關心你的應用程式是運行在哪台伺服器上,伺服器上的硬體設定等。azure作業系統屏蔽了這些複雜的細節,所以這部分就類似於常規作業系統的kernel。
1.1 FC與狀態機器
FC在內部實現時,為每個部署的service設定一個狀態機器,並為這個狀態機器設定一個目標,於是FC剩下所做的工作就是“儘力”打到這個狀態機器的結束狀態。這其中可能包含恢複伺服器,重啟伺服器等操作。
1.2 the driver model
azure作業系統採用的是“驅動模型”。FC通過driver和一系列的asset互動。asset負責與具體的machine,router,switch,load balancer互動。FC向driver發送命令,然後driver控制實際的device。
1.3 resource management
FC的任務不僅僅是儘力將每個deploy的service送達到狀態的中點,同時FC也將管理運行時的資源。
1.4 instance management
FC負責管理fabric中每個node的“運行情況”,進而採取對應動作。例如重啟,或者是修複等。
2.azure服務模型(service model)
azure的服務模型在vs中的主要是體現在下面的兩個檔案中:
其中檔案ServiceConfiguration.cscfg是service definition檔案,主要定義roles和communication endpoint,運行時刻是不能修改的。ServiceDefinition.csdef主要是配置role的instance執行個體,該檔案是能夠在運行時刻修改的。
3.fault domain和upgrade domain
fault domain提供一個替換機制,azure將你的service分布到幾個物理的structure中,如果其中的一個出現故障,那麼剩下的可以立刻使用,防止你的service癱瘓。upgrade domain主要是用於app的更新和升級時,service不中斷。設定檔中能夠修改upgrade domain的數量。
<ServiceDefinition name="WindowsAzureProject1"<br /> xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"<br /> upgradeDomainCount="3">
4.server叢集初始原理
相信只有微軟azure team的成員知道server叢集初始化的真正原理,但是我們還是能夠從公開的文檔中看到個人應用程式instance如何被啟動並執行基本原理。
每個instance實際上是運行在x64的運行著windows server 2008 enterprise edition的伺服器上。當一個新的server準備好將要被加到伺服器叢集中時,當這個新加入的伺服器啟動時,通過使用PXE協議在網路中尋找maintenance os,然後下載這個image,boot from the image。
maintenance os和FC相聯絡,充當一個agent代理,FC向agent發送command,系在windows server 2008 core image VHD,然後新下載的image成為host os來管理這台新加入的伺服器。
然後該台使用VHD image伺服器重啟,maintenance os將被移除。然後FC開始控制這個伺服器。
現在假設我們的一個application需要部署到這個伺服器上,首先這台伺服器下載application運行代碼(二進位形式),伺服器向FC發送當前健康情況,如果一切正常,FC開始進行一系列的配置,這些過程完成之後,那麼這個伺服器開始接受外界的請求。
當然每個伺服器上可能運行過個vm,第二個或者是更靠後的vm可能會使用和第一個vm相同的os鏡像或者是另外下載,然後下載application VHD,啟動,開始接受外界請求。
本系列的部落格均是在學習windows azure平台時個人的感悟,其中難免存在不足之處,歡迎指正,留言提出您的寶貴意見。