1、模擬場景
Contoso公司已經採購了Azure China服務,計劃把現有託管在IDC的企業官網遷移到Azure雲平臺。該企業官網面向的用戶羣主要是華東地區的用戶。
該企業官網部署需要服務器列表如下:
- 1臺AD服務器
- 1臺Web服務器
- 1臺SQL Server服務器
2、規劃
2.1、如何選擇Azure數據中心
世紀互聯運維的Windows Azure在中國大陸有兩個數據中心:
- 中國北部,即位於北京的數據中心
- 中國東部,即位於上海的數據中心
當我們在選擇Azure數據中心的時候,需要從以下兩方面進行考慮:
- 選擇的Azure數據中心離最終用戶越近越好
考慮到Contoso的企業官網主要的用戶羣是華東地區,建議Contoso公司將應用部署到Azure在中國東部的數據中心。
- 如果需要在Azure部署多臺應用服務器,則需要將所有的應用服務器放在同一個數據中心
建議用戶將Web服務器和SQL Server服務器都部署在Azure中國東部數據中心,不要將Web服務器和SQL服務器部署在不同的數據中心,會產生內部通信的延時。
- 利用CDN
CDN能將靜態內容緩存到離用戶最近的CDN節點服務器,提高應用程序的用戶體驗。
2.2、Azure是如何解決大併發
我們建議使用多臺Azure虛擬機,利用橫向擴展的方式來解決大量的併發。
單個節點向上擴展是有限的,這是因爲受限於現有的CPU製造技術,我們無法將大量的計算資源都堆積到1臺300 Core甚至400 Core的計算節點上。對於需要大量的計算資源的情況下,我們可以通過橫向擴展的方法來解決。
所謂橫向擴展,就是由1個計算節點,橫向擴展到多個計算節點上並行計算,比如50個、100個計算節點。比如一個互聯網業務需要大量的計算資源,那可以將這些計算需求由100臺4 Core的計算節點進行並行計算。
架構圖如下:
2.3、選擇最合適的虛擬機配置
首先請讀者注意,傳統的虛擬機化技術,CPU是共享的。Azure虛擬機,除了A0的虛擬機類型,它的CPU是和別的用戶共享的。其他類型的虛擬機,比如A1-A7,它的CPU是獨佔的,不是和別的用戶共享的。
目前Azure虛擬機分爲A系列和D系列,並且擁有不同的CPU和內存配置。
如果客戶在傳統IDC託管中已經部署了硬件服務器。則在Azure平臺選擇最接近的Azure虛擬機配置即可。
如果客戶需要部署新的應用,則需要根據併發、性能等多個因素,選擇最合適的Azure虛擬機配置。
另外說明一下A系列虛擬機和D系列虛擬機的區別:
- 相比A系列單臺VM最大8Core/56GB RAM的配置,D系列虛擬機單臺最大的配置爲16Core/112GB RAM
- D系列的CPU性能比A系列提升約60%
2.4、規劃好高可用(非常重要)
在Microsoft Azure虛擬機中,用戶也可以選擇使用一臺Azure Virtual Machine部署AD Server,一臺Azure Virtual Machine部署Web Application,使用另一臺Virtual Machine部署SQL Server。但是這樣的場景是沒有SLA保障的。
Microsoft Azure Virtual Machine承諾的99.95%的SLA是需要2臺或者2臺以上的Azure Virtual Machine同時運行,且所有的Virtual Machine都需要在同一個可用性集中。對於上面實例,用戶如果想在Azure中實現99.95%的SLA,需要同時部署:
- 兩臺AD Server虛擬機,放在同一個可用性集A中。
- 兩臺Web Server虛擬機,放在另外一個可用性集B中。
- 兩臺SQL Server 虛擬機,採用SQL Server 2012 Enterprise提供的Always-On功能,實現High Availability。且SQL Server所在的Virtual Machine需要在另外一個可用性集C中。
- 將具有相同功能的多臺VM放置在同一個可用性集下。
這邊還需要強調一下:
- 可用性集A中的兩臺AD Server中的內容配置必須完全一致,並且需要進行AD的同步。
- 可用性集B中的兩臺Web Server中的網站在部署的時候,內容必須完全一致。
- 可用性集C中的兩臺SQL Server必須配置SQL Server Always-On或者SQL Mirroring,保證數據庫之間的日誌同步
對於DB Server,比如SQL Server或者MySQL,需要在兩臺DB Server進行日誌同步:
- SQL Server需要在兩臺VM配置Always-On或者SQL Mirroring,使用日誌同步
- My SQL可以配置Master-Slave,使用Replication進行復制。
- 這樣的目的是保證在其中一臺Server宕機的情況下,另外一臺Server可以正常運行,因爲配置了日誌同步,可以保證日誌不會丟。
- 另外還要強調一下,客戶端如果調用SQL Server服務的時候,需要正確配置AG Listener,這樣保證在一臺SQL Server宕機的情況下,AG Listener可以將請求自動發送到另外一臺SQL Server上。
2.5、規劃好Azure訂閱(非常重要)
訂閱是進行Azure賬單分拆的最小單位。
如果企業內部需要進行內部成本覈算,例如IT部門、銷售部門、市場部門均需要使用Azure,並且根據不同的部門的Azure實際使用量進行內部成本覈算,就需要實現規劃好三個不同的Azure訂閱。在創建Azure IaaS相關資源的時候,將這些資源創建在不同的訂閱下。
2.6、選擇訂閱(非常重要)
我們就可以篩選一個或者多個訂閱。
在一般情況下,筆者建議選擇一個訂閱,這樣就可以把所有的Azure資源創建到這個訂閱下。
本文所有的demo內容,就會創建到Marketing_Subscription這個訂閱下。
2.7、查看該訂閱中可使用的Azure資源
如果您使用的是測試賬戶,只能有一個訂閱,該訂閱默認情況下可以使用的Azure資源爲
- 計算能力:20 Core
- Host Service: 即DNS地址,4個
- 存儲賬號:4個
如果測試賬戶在測試過程中,需要的Azure資源超出測試賬號默認提供的資源,請通過微軟銷售團隊,聯繫Azure PMM Bill Jin。在Bill批准的情況下,再聯繫世紀互聯支持團隊,請世紀互聯在後臺將測試賬戶的訂閱進行擴大。
如果您使用的是正式賬戶,可以創建無限多個訂閱。新創建的Azure訂閱默認可以使用的Azure資源爲:
- 計算能力:100 Core
- Host Service: 即DNS地址,20個
- 存儲賬號:20個
如果正式賬戶在使用過程中,需要的Azure資源超出訂閱默認的Azure資源,請不要聯繫PMM Bill Jin。請直接聯繫世紀互聯支持團隊,世紀互聯會先審覈相關請求,然後會將該訂閱的相關資源進行擴大。
舉個例子,比如Contoso公司需要在月底進行一次大型的Digital Campaign促銷活動,需要使用300個CPU Core,則可以提前聯繫世紀互聯支持團隊,讓世紀互聯運維團隊將默認的100 CPU Core提升到300個。
上圖中,訂閱名稱爲”Marketing_Subscription”可以使用的Azure資源爲
- 100個CPU Core
- 20個Cloud Service
- 20個Storage Account
3、創建Azure虛擬機
3.1、說明
我們在創建Azure服務的時候,可以通過以下兩種方式來創建
使用Azure管理界面
優勢:
- 可以通過用戶界面的方式,創建相應的Azure虛擬機,方便簡單。
劣勢:
- 某些Azure虛擬機的高級功能,比如固定內網IP,固定公網IP,設置虛擬機時區等,都需要藉助於Azure PowerShell。Azure管理界面不具備相應的功能。
- 當用戶需要批量創建Azure虛擬機,批量配置虛擬機端口等,通過Azure管理界面就非常麻煩。
我們可以使用Azure PowerShell,創建Azure虛擬機。
Azure PowerShell可以批量創建虛擬機,其他高級功能也需要通過Azure PowerShell來進行配置。
3.2、規劃
在我們創建Azure虛擬機之前,首先需要對Azure虛擬機進行規劃。規劃主要分爲:
- 創建虛擬網絡,規劃虛擬機的內網IP地址和IP Rang
- 創建存儲賬號
- 選擇虛擬機的操作系統及配置
針對這次模擬場景,我們需要規劃以下內容:
- 數據中心選擇中國東部
- 虛擬網絡
- 我們創建Azure虛擬網絡,命名爲ContosoVNet,同時設置虛擬網絡的IP Rang爲10.0.0.0 - 10.0.3.255
- 設置3個Sub-net
AD-Subnet,IP Rang爲10.0.0.0 – 10.0.0.255
Web-Subnet,IP Rang爲10.0.1.0 – 10.0.1.255
DB-Subnet,IP Rang爲10.0.2.0 – 10.0.2.255
- 在中國東部創建2個存儲賬號contosostor1和contosostor2
- 創建6臺Azure虛擬機
角色 |
AD Server |
Web Server |
DB Server |
操作系統 |
Server 2012 Eng |
Server 2012 Eng |
Server 2012 Eng with SQL Enterprise |
虛擬機類型 |
D2 |
D2 |
D2 |
虛擬機數量 |
2臺 |
2臺 |
2臺 |
虛擬機名稱 |
ContosoAD01 ContosoAD02 |
ContosoWeb01 ContosoWeb02 |
ContosoDB01 ContosoDB02 |
雲服務名稱 |
ContosoADCS |
ContosoWebCS |
ContosoDBCS |
存儲賬號 |
contosostor1 |
contosostor1 |
contosostor2 |
虛擬網絡子網 |
AD-Subnet |
Web-Subnet |
DB-Subnet |
內網IP |
10.0.0.4 10.0.0.5 |
10.0.1.4 10.0.1.5 |
10.0.2.4 10.0.2.5 |
可用性集 |
ADAvbSet |
WebAvbSet |
DBAvbSet |
用戶名 |
AzureAdmin |
AzureAdmin |
AzureAdmin |
密碼 |
Contoso!000 |
Contoso!000 |
Contoso!000 |
我們會在接下來幾章詳細介紹如何創建Azure虛擬機。
3.3、注意事項
- 在一個雲服務裏,放置多個相同角色的虛擬機
- 比如:多個Web Server虛擬機,放在同一個雲服務裏
- 多個SQL Server虛擬機,放在另外一個雲服務裏
- 多個AD Server虛擬機,放在第三個雲服務裏
- 不要把不同角色的虛擬機,比如Web Server和SQL Server,放在同一個雲服務裏。
3.4、使用Azure管理界面創建虛擬機
我們登陸Azure管理界面,輸入相應的Azure賬戶名稱和密碼。
3.4.1、創建虛擬網絡(非常重要)
- 在Azure管理界面的左下角,點擊”新建”按鈕。
- 在彈出的窗口中,點擊”網絡服務”,”虛擬網絡”,”自定義創建”。
- 在彈出的窗口中,將名稱命名爲ContosoVNet,位置我們選擇”中國東部”
- 下一步,設置DNS地址:
注意,因爲我們需要使用AD Server,這裏的DNS就是AD Server的內網IP地址。
注意: 在Azure雲環境,Azure虛擬機的Private IP,DNS Server都必須通過虛擬網絡來設置。我們不可以通過遠程桌面連接(Remote Desktop),來修改Azure虛擬機的本地TCP/IP地址。如果這樣操作的話,Azure虛擬機會運行不正常。
如果用戶場景不需要設置AD服務器,則DNS服務器配置頁面可以不輸入任何信息,直接選擇下一步。
- 最後,我們設置虛擬網絡的IP Rang和Subnet。如下圖:
上圖中:
- IP Range爲10.0.0.0 – 10.0.3.255
- 子網AD-Subnet的IP Range爲10.0.0.0 – 10.0.0.255。注意每個子網的前4個IP是Azure系統保留的,對於AD-Subnet來說,可用的IP Range爲10.0.0.4 – 10.0.0.255
- 子網Web-Subnet的IP Range爲10.0.1.0 – 10.0.1.255。同上,該子網實際可用的IP Range爲10.0.1.4 – 10.0.1.255。
- 子網DB-Subnet的IP Rang爲10.0.2.0 – 10.0.3.255。同上,該子網的實際可用IP Rang爲10.0.2.0 – 10.0.3.255。
定義了虛擬網絡以後,我們創建的Azure虛擬機的內網IP地址,就是在虛擬網絡中定義的可用地址範圍和子網來定義的。
6.創建完畢後,我們就可以在Azure管理界面上查看到我們創建成功的虛擬網絡ContosoVNet。如下圖
3.4.2、創建存儲賬號
我們需要創建2個存儲賬號:contosostor1和contosostor2。注意存儲賬號的名稱只能是小寫英文字符。
1.在Azure管理界面的左下角,點擊”新建”按鈕。
2.創建存儲賬號contostor1,位置選擇中國東部
複製選項中,我們可以根據自身的需求,選擇本地冗餘或者地域冗餘。
注意: 從成本角度來說,地域冗餘的成本會比本地冗餘要貴。
3.創建另外一個存儲賬號contostor2,位置選擇中國東部
複製選項中,我們可以根據自身的需求,選擇本地冗餘或者地域冗餘。
4.這樣我們在存儲欄目裏,就可以看到創建成功的兩個存儲賬號,如下圖
注意:一個Azure存儲賬號的IOPS上限爲20000,考慮到每塊磁盤的最大IOPS爲500,筆者建議不要在同一個存儲賬號保存超過40塊磁盤。
3.4.3、創建虛擬機說明
在上面的章節中,我們創建瞭如下內容:
- 虛擬網絡,設置了虛擬內網的IP Rang和DNS地址
- 存儲賬號,設置了虛擬機所在的VHD文件保存的數據中心的物理位置及文件的冗餘性
接下來的內容,就是創建相應的虛擬機了。
我們會依次創建如下虛擬機:
- 2臺AD服務器,2臺服務器使用同一個雲服務,名稱爲ContosoADCS
- 2臺Web服務器,使用同一個雲服務,名稱爲ContosoWebCS
- 2臺SQL Server服務器,使用同一個雲服務,名稱爲ContosoDBCS
從Azure虛擬機的角度來說,雲服務只是一個DNS,概念上可以理解爲一個容器。這個容器可以同時容納一個或者多個虛擬機。如下圖:
當我們新建一個虛擬機的時候,因爲不存在容納這個虛擬機的容器,所以Windows Azure會默認創建一個新的Cloud Service,然後將虛擬機加入到這個容器當中去。
當我們創建第2個虛擬機的時候,可以複用這個Cloud Service,然後將第2個虛擬機加入到這個Cloud Service裏。
從負載均衡和高可用兩個角度來說,筆者強烈建議,將2臺或者2臺以上具有同樣功能的虛擬機,創建在同一個Cloud Service雲服務下。
3.4.4、使用管理界面創建Azure虛擬機
注意事項
我們在開始創建Azure虛擬機之前,已經定義了虛擬機網絡。在虛擬機網絡配置頁面裏,我們創建了3個子網(Subnet)。並且定義了每個子網的IP Rang。如下圖:
接下來,我們需要創建不同的Azure虛擬機,並且將虛擬機加入上面定義的虛擬網絡。
注意:
- 上圖中,IP Rang爲10.0.0.0 – 10.0.0.255
- 子網AD-Subnet的IP Range爲10.0.0.0 – 10.0.0.255。注意每個子網的前4個IP是Azure系統保留的,對於AD-Subnet來說,可用的IP Range爲10.0.0.4 – 10.0.0.255
- 子網Web-Subnet的IP Range爲10.0.1.0 – 10.0.1.255。同上,該子網實際可用的IP Range爲10.0.1.4 – 10.0.1.255。
- 子網DB-Subnet的IP Rang爲10.0.2.0 – 10.0.3.255。同上,該子網的實際可用IP Rang爲10.0.2.0 – 10.0.3.255。
- 定義了虛擬網絡以後,我們創建的Azure虛擬機的內網IP地址,就是在虛擬網絡中定義的可用地址範圍和子網來定義的。
請注意,使用Azure管理界面創建的虛擬機,是無法固定內網IP地址的。必須通過Azure PowerShell,才能固定虛擬機的內網IP地址。
在Azure雲平臺是沒有DHCP這個概念的。如果我們將第一臺虛擬機VM01,通過管理界面進行創建,加入到AD-Subnet的話,這臺虛擬機VM01會自動獲得第一個可用的內網IP(Private IP),爲10.0.0.4。
如果我們在第一臺虛擬機VM01不關機的情況下。再次通過管理界面繼續創建第2臺虛擬機VM02,同樣加入到AD-Subnet。因爲10.0.0.4這個IP被第一臺虛擬機VM01佔用。所以第2臺虛擬機VM02自動獲得下一個可用的內網IP地址,爲10.0.0.5。
如果VM01, VM02都不關機的情況下,則第3臺新創建的虛擬機VM03加入到AD-Subnet的Azure虛擬機自動獲得下一個可用的內網IP地址爲10.0.0.6。
還有一個問題需要讀者注意。如果我們在上面創建的3臺虛擬機,通過管理界面關機了,則這些內網IP地址會被釋放。經過一段時間後,第一個通過管理界面開機的虛擬機(無論是VM01,VM02,VM03),會自動獲得第一個可用的IP地址。
假設筆者將虛擬機通過管理界面關機。經過一段時間後,將VM03首先通過管理界面開機,則VM03會自動獲得第一個可用的內網IP地址,爲10.0.0.4。
這個問題非常重要。如果您通過管理界面創建Azure虛擬機,通過管理界面開關虛擬機,內網IP地址會變化。
如果讀者需要固定內網IP地址,只有通過PowerShell創建的虛擬機,內網IP地址纔是固定的。
另外,使用管理界面創建的Azure虛擬機,默認時區是UTC時區。而我們平時使用的市區是UTC+8(北京時區)。
創建第一臺AD Server
我們需要創建2臺Azure AD Server,配置如下:
角色 |
AD Server |
操作系統 |
Server 2012 Eng |
虛擬機類型 |
A2 |
虛擬機數量 |
2臺 |
虛擬機名稱 |
ContosoAD01 ContosoAD02 |
雲服務名稱 |
ContosoADCS |
存儲賬號 |
contosostor1 |
虛擬網絡子網 |
AD-Subnet |
內網IP |
10.0.0.4 10.0.0.5 |
可用性集 |
ADAvbSet |
用戶名 |
AzureAdmin |
密碼 |
Contoso!000 |
我們首先創建第一臺AD Server。步驟如下:
1.在Azure管理界面。選擇新建,計算,虛擬機,從庫中。如下圖:
2.鏡像我們選擇Windows Server 2012 R2 Datacenter (en-us)
3.設置虛擬機配置
上圖中,我們設置虛擬機名稱爲ContosoAD01,虛擬機類型爲標準。虛擬機配置爲D2 (2Core/7GB)。用戶名密碼按照之前的規劃進行設置
4.在接下來配置文件裏,我們輸入以下信息:
在上面的圖片中,我們需要注意以下內容
-
因爲我創建的是第一臺AD服務器,所有選擇創建新的雲服務
-
在DNS名稱中,輸入自定義的DNS名稱ContosoADCS
-
在虛擬網絡中,選擇我們之前創建的虛擬機網絡名稱ContosoVNet
選擇對應的虛擬網絡子網AD-Subnet
-
存儲賬戶,我們選擇之前創建的存儲賬號contosostor1
-
可用性集,因爲我們創建新雲服務,所以我們創建新的可用性集,命名爲ADAvbSet
在配置頁面的下方,還會指定終節點,我們使用系統默認設置。
5.最後我們點擊確認,這樣就完成創建第一個AD Server。在虛擬機創建列表中就會顯示”正在啓動(正在配置)”
注意:在客戶點擊創建的時間點,Azure就開始計費。而不是等到虛擬機創建完畢纔開始計費。
1.我們等待ContosoAD01這臺虛擬機創建完畢,狀態爲”正在運行”。
然後點擊虛擬機名稱,如下圖紅色區域:
2.點擊後,頁面會進行跳轉。我們可以查看到ContosoAD01這個虛擬機的配置信息。如下圖:
裏面的DNS名稱,主機名稱和虛擬機大小,就是我們在創建虛擬機的配置頁面裏進行配置的。
注意:內部IP地址是從AD-Subnet子網中獲得第一個有效IP,爲10.0.0.4
創建第二臺AD Server
我們創建完第一臺AD Server之後,從高可用的角度來說,我們需要創建第2臺AD Server。步驟如下:
1.選擇新建,計算,虛擬機,從庫中。如下圖:
2.鏡像我們選擇Windows Server 2012 R2 Datacenter (en-us)
3.設置虛擬機配置。注意虛擬機名稱命名爲ContosoAD02
4.在接下來配置文件裏,我們輸入以下信息:
注意,我們創建的第2臺AD Server中,與第一臺配置稍有不同:
- 複用之前我們已經創建的雲服務ContosoADCS
- 選擇對應的虛擬網絡和存儲賬戶
- 選擇我們之前已經創建的可用性集ADAvbSet。
觀察AD Server
我們等待第2臺虛擬機創建完畢,狀態變爲”正在運行”。然後我們觀察一下Azure管理界面。
上圖中,我們可以發現:
- 在初始狀態,虛擬機和雲服務的數量都是0
- 我們創建第1臺AD Server的時候,新建了一個雲服務,同時新建了一個虛擬機。此時虛擬機和雲服務的數量都是1
- 然後我們創建第2臺AD Server,複用之前創建的雲服務。所以虛擬機數量爲2,雲服務數量是1。
我們再複習一下:
從Azure虛擬機的角度來說,雲服務只是一個DNS,概念上可以理解爲一個容器。這個容器可以同時容納一個或者多個虛擬機。如下圖:
從高可用的角度來說明,我們在創建虛擬機的時候,創建並指定了高可用集。如下圖的紅色部分區域3的內容。
我們必須把在同一個Cloud Service下的多臺Azure虛擬機,保存在同一個可用性集下。
這樣,多臺Azure虛擬機是部署在不同的RACK上的。
我們點擊雲服務,選擇之前創建的雲服務ContosoADCS,然後選擇實例。如下圖:
上圖中,ContosoAD01和ContosoAD02 是在不同的容錯域上,分別是0和1。則這2臺虛擬機是不是在不同的RACK上,保證高可用。
創建Web Server
我們創建的Web Server信息如下:
角色 |
Web Server |
操作系統 |
Server 2012 Eng |
虛擬機類型 |
D2 |
虛擬機數量 |
2臺 |
虛擬機名稱 |
ContosoWeb01 ContosoWeb02 |
雲服務名稱 |
ContosoWebCS |
存儲賬號 |
contosostor1 |
虛擬網絡子網 |
Web-Subnet |
內網IP |
10.0.1.4 10.0.1.5 |
可用性集 |
WebAvbSet |
用戶名 |
AzureAdmin |
密碼 |
Contoso!000 |
注意:
1.我們在創建第一臺Web Server的時候,需要創建新的雲服務。如下圖:
2.我們在創建第2臺Web Server的時候,需要注意:
-
複用之前我們已經創建的雲服務ContosoWebCS
-
選擇對應的虛擬網絡和存儲賬戶,注意子網爲Web-Subnet
-
選擇我們之前已經創建的可用性集WebAvbSet。
如下圖:
注意創建Web Server的先後順序,第1個創建成功的Web Server ContosoWeb01,會從子網Web-Subnet中,自動獲得第一個可用的內網IP,爲10.0.1.4。第2個創建成功的ContosoWeb02,會自動獲得第2個可用的內網IP,地址爲10.0.1.5。