Azure VM 加上固定IP (part1 - 雲端服務設定固定IP),讓雲端服務內的機器對外擁有一致的Public IP

前言

建立Azure VM或Azure Cloud Service服務後,服務的Public IP是動態的,當資源關閉時,Public IP就變更了。
有些Application的需求就是讓VM擁有固定IP,然而Azure上面的固定IP分為兩種:

  • Azure VM with Static IP (ILPIP – Instance Level Public IP)
  • Azure Cloud Service with Static IP (VIP – Virtual IP)

而官網所指的「Reserved IP」就是VIP。

概念

ILPIP 和 VIP 之間的差異

<圖片來自 https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-instance-level-public-ip/>

  1. ILPIP:就是給VM一組public IP,而非透過Azure Load Balancer去解譯。
  2. VIP+Endpoint:透過VIP:<port number>的方式存取到VM。


什麼時候要用ILPIP、什麼時候要用VIP呢?
我覺得可以用服務要開的port數、是否已建立Azure VM、每個VM是否需要有固定Outbound IP去想。

最需要注意的一點:當VM解除配置(de-allocated),再將VM開啟,「ILPIP就會改變」,但VIP是永久存在的。

  • 若你要利用VM架FTP server,並使用passive mode,會用到動態port,且要開通兩條防火牆規則:
    一個規則for control channel、還要有另一規則for data channel。
        →若使用Cloud Service - Reserverd IP,除了FTP server要指定FTP動態port外,Windows Firewall和Azure VM Endpoint都是要挖洞的地方。
        →若使用Azure VM - ILPIP,可以直接利用Windows Firewall去開動態port的範圍。
  • 若你要開的只有TCP 1433 port,當然可以直接用VIP+Endpoint指向VM的SQL Server服務。
        →這時使用VIP+<port number>會比較適當,但也要注意Windows Firewall。(用什麼服務就開通那個port就好)
  • 當我們有一些已建立的VM,在不動到VM環境的情況下要加public IP,就使用ILPIP���方式新增。
  • 在一個Cloud Service裡面,我想要每個VM都有個別的Outbound IP,也要使用Azure VM - ILPIP。
    (若是使用Cloud Service - Reserved IP,這個Cloud Service內VM的Outbound IP都是這組Reserved IP)

限制

  • 您只能針對每個 VM 或角色執行個體指派一個 ILPIP。
  • ILPIP 目前不支援多個 NIC 的 VM。
  • 一個subscription最多五個ILPIP、二十個VIP(若使用量會超過請洽微軟)
  • 一個Cloud Service最多五個VIP。(若使用量會超過請洽微軟)

實作

我們首先在此篇文章實作VIP,目前也只能使用Powershell For Azure來進行。
步驟如下:

  1. 登入Azure
    Add-AzureAccount
  2. 選擇要建立在哪個訂閱底下
    Select-AzureSubscription -SubscriptionName "SubscriptionName"
  3. 新增一組Reserved IP
    New-AzureReservedIP –ReservedIPName IP –Location "East Asia"
    image_thumb8
  4. 可以check看有沒有建立成功
    Get-AzureReservedIP
    image_thumb14
  5. 指定好VM所存放的Storage Account
    Set-AzureSubscription -CurrentStorageAccountName "StorageAccountName" -SubscriptionName "SubscriptionName"
  6. 設定Cloud Service與此組Reserced IP相關連
    ReservedIP會指派給「已佈署VM的Cloud Service」,因此以下會建立Cloud Service & Azure VM,並使用VIP:
    $cloudSvcName = 'CloudServiceName'
    $vmname = 'VMname'
    $adminPassword = 'adminPassword'
    $adminusername = 'adminusername'
    $imageFamily = 'Windows Server 2012 R2*'
    $imageName = Get-AzureVMImage | where { $_.ImageFamily -like $imageFamily } | sort PublishedDate -Descending
     
    New-AzureVMConfig -Name $vmname -InstanceSize "ExtraSmall" -ImageName $ImageName[0].ImageName |
    Add-AzureProvisioningConfig -Windows -AdminUserName $adminusername -Password $adminPassword |
    New-AzureVM -ServiceName $cloudSvcName -Location "East Asia" -ReservedIPName IP
    image_thumb18
  7. 測試連結
    再使用以下指令確認Cloud Service在使用這組IP:
    Get-AzureReservedIP
    image_thumb27
  8. 接著用VIP:<PortNumber>就可以連到VM囉!

費用

雖說Azure官網表格只有列Reserved IP的價格,但大家可以在上面的文字看到ILPIP的價格,
目前兩者都是以每個IP每小時NT$0.1242元計價,每個月約NT$94元(以官方公布為主):

image_thumb2 

但有時候我們會新增Reserved IP卻沒使用(忘記指定給Cloud Service或其他狀況),這樣還是會跟使用中的IP算一樣的錢!
image_thumb5

相關連結

 

== 要試用 Azure的朋友,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

Loading

多奇數位 Azure 部落格 | 虛擬化您的地面實體機 (Windows Workload) 成為雲端虛擬機 (Azure VM)

虛擬化您的地面實體機 (Windows Workload) 成為雲端虛擬機 (Azure VM)

前言

名詞解釋:workload(工作負載)的意思是實體機器內的所有服務(包含作業系統)。

實體Windows機器轉上Azure的方式有幾種:

  1. 使用MVMC(Microsoft Virtual Machine Converter)工具-微軟提供的p2v(physical to virtual)工具,到另一個on-premises Hyper-V建立VM,再push到雲端去。
  2. 使用Disk2vhd-微軟提供的p2v工具,再將VHD直接上傳到Azure,建立Azure VM。
  3. 利用Azure Site Recovery服務,但架構就要複雜一點了,
    要有Process server、Config Server、Master Target(上面要裝mobility service)。

此次利用第二個方法來進行。
這一篇不是建立Image Template,而是建立一個獨立的VHD,請大家要注意這點!
這個Lab真是一波三折,中間一直卡住!最後找到工具來解決Azure VHD大小的問題真是太好了:P

概念

此工具會先做磁碟的快照,
所以微軟提供的Disk2vhd與外面p2v工具最大的不同點在於:
可以使用於線上的服務,它不會影響到你的機器!

限制

  • 只適用於Windows實體機器
  • Azure系統碟的限制是1023GB

實作

  1. 下載Disk2vhd工具
  2. 開啟Disk2vhd工具
  3. 選擇要做成VHD的磁碟:
    各位在做這個步驟的時候請注意:
    • 一定要先開啟遠端桌面的功能後再壓成VHD!
    • Azure不支援VHDx格式
       SNAGHTML53541f50
      實測數據:
      • 轉換使用量為11.2G的磁碟:約5~10分鐘(這是SSD的數據唷!)
  4. 建立儲存體(VHD要擺放在Azure的位置)
    image
  5. 建立容器(類似資料夾的概念)
    image
  6. 接著可以下Azure的powershell指令把VHD上傳上去,也可以用Azure Explorer的圖形介面去上傳!
    ※若使用powershell指令,記得先Add-AzureAccount登入,然後選擇是哪個訂閱Select-AzureSubscription –ID ____
    ※以下我們介紹powershell指令
  7. Add-AzureVhd -Destination "https://localvhd2azure.blob.core.windows.net/vhd2azure/test.vhd" -LocalFilePath D:\test.vhd
    Destination:儲存體的URL+vhd檔名+.vhd
    LocalFilePath:vhd在本機的哪個路徑

    VHD上傳中…(會先將VHD利用MD5加密之後才傳上去)
    image 
    上傳完成!實測VHD=11.2GB,MD5 Hash約8分鐘;上傳過程約1個小時又30分。

    image
  8. 可以在Azure管理portal看到所上傳的檔案,可以注意到大小從11.2GB變成107.13GB
     
    image
  9. 建立Azure VM要用的磁碟 - 虛擬機器→磁碟→建立磁碟
    利用Portal去新增磁碟會錯誤(如下圖)!因為Azure只能新增整數MB大小的磁碟。
    這時請用《WindowsAzureDiskResizer》工具去重新指定VHD的大小。

     
    image  →image
  10. 傳統更改VHD大小的方式:1. 從Azure下載VHD、2. 改VHD大小、3. 上傳。
    我們可以下載
    WindowsAzureDiskResizer去重新改變VHD的大小,就不須經過這麼多繁雜的步驟
    修改大小的程序直接會在Azure上完成。

    ※WindowsAzureDiskResizer使用說明:
    image 
    ※指令:
    WindowsAzureDiskResizer.exe GB數 "bloburl" "AccountName" "AccountKey"
    下完指令之後,幾乎是沒有等待時間,即可完VHD修正大小:

    image 
    可以看到已經修正為110GB了!
    image
  11. 重新回步驟9.去portal新增磁碟,也可以下powershell指令:Add-AzureDisk
  12. 新增成功!
    image 
  13. 新增VM(從資源庫→我的磁碟去選擇)
    SNAGHTML5347da24
    後續就是VM的相關設定,在此不贅述。
  14. VM開啟成功!可以使用RDP進去。
    image 

費用

做Physical to Azure的時候不會額外收費,基本上要做以下幾件前置作業做好:

  1. disk2vhd
  2. 上傳至Azure Blob
  3. 修改VHD大小
  4. 建立Azure VM

只有收Azure VM的費用,視選擇的規模來計費

相關連結

 

== 要試用 Azure的朋友,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

Loading