Windows Azureの仮想マシンを日本リージョン(データセンター)へ移行するTech TIPS

Windows Azureに待望の東日本/西日本リージョン(データセンター)が開設された。これまで海外リージョンに構築してきた仮想マシンを日本リージョンに移行するには、どうすればいいのだろうか?

» 2014年03月10日 11時46分 公開
[島田広道デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象サービス:Windows Azure 仮想マシン



解説

 2014年2月下旬、Windows Azureの日本リージョン(日本国内に設置されたデータセンター)が開設された。執筆時点で東日本と西日本それぞれのデータセンターが利用可能だ。従来は海外リージョンしかなかったが、これによって日本からアクセスしたときのレイテンシが大幅に短縮されるほか、日本国内で災害復旧システムを完結できるといったメリットがある。

 これを機会に、これまで海外リージョンで構築・運用してきたシステムを日本リージョンに引っ越したい、と考えるWindows Azureユーザーは少なくないだろう。実際、筆者も上記のメリットに引かれて、東アジア(香港)リージョンに構築した仮想マシン数台を開設翌日に日本リージョンへ移行した。本稿では、この移行時に筆者が行った作業をベースに、既存の仮想マシンを日本リージョンへ移設する基本的な手順と注意点を説明する。

操作方法

●大まかな移行の段取りと準備

 海外リージョンから日本リージョンへ仮想マシンを移設するには、その元になるVHDファイルを日本リージョンにコピーして仮想マシンを「作り直す」というのがポイントだ。残念ながら執筆時点では、仮想マシンとその関連リソースを丸ごとそのまま日本リージョンへ引っ越す手軽な手段は用意されておらず、次のように複数のステップを踏む必要がある。

  1. (必要なら)日本リージョンでアフィニティグループを新たに作成する
  2. 日本リージョンでストレージアカウントを新たに作成する
  3. 海外リージョンから日本リージョンへVHDファイルをコピーする
  4. 日本リージョンで、コピーしたVHDから仮想マシンを作り直す
  5. 日本リージョンの仮想マシンに、監視やエンドポイントなどの設定を手動で設定し直す

 3.以外の作業は日本リージョンだからといって特殊なことはない。(リージョンそのものの指定を除けば)操作や設定にリージョン間の違いは特にないからだ。そのため、すでに海外リージョンでのシステム構築・運用の経験があるユーザーには、これらの作業をあらためて説明する必要はないだろう。以下では3.のVHDファイルのコピーを中心に説明する。

■リージョン間でファイルを直接コピーできる「AzCopy」コマンドを使う

 リージョン間でVHDファイルをコピーする方法はいくつかあるが、マイクロソフトが提供しているコマンドラインツール「AzCopy」が汎用的で便利だ。本稿ではこれを利用する。

 上記ページで[ダウンロード]ボタンをクリックして表示される一覧から、「WindowsAzureStorageTools.msi」を選んでダウンロードする。実行してインストールすると、「%ProgramFiles%\Microsoft SDKs\Windows Azure\AzCopy」(64bit版Windowsでは「%ProgramFiles(x86)%\〜」)にazcopy.exeが保存されるので、これを実行パスに加えておく。

●仮想マシンを移行する(既存の仮想マシンのVHDをコピーして利用する)

 VHDをコピーして仮想マシンを移行する場合、2つの方法が考えられる。

  • 既存の仮想マシンにひも付けられているVHDをコピーして、そこから仮想マシンを作り直す
  • 既存のカスタムイメージのVHDをコピーして、そこから仮想マシンを作り直す

 前者の場合、大まかには次のような手順となる。

  • 【海外リージョン】既存の仮想マシンをシャットダウンする
  • 【海外リージョン】仮想マシンのディスクにひも付けられているVHDのURLを取得する
  • VHDを日本リージョンへコピーする
  • 【日本リージョン】VHDからディスクを作成する
  • 【日本リージョン】ディスクから仮想マシンを作成する

■【海外リージョン】既存の仮想マシンをシャットダウンする

 日本リージョンで正常に仮想マシンを再現するために、既存の仮想マシンをシャットダウンしてディスクや仮想マシンへの書き込みを止める。シャットダウン後、管理コンソールの左メニューの[仮想マシン]−[仮想マシン インスタンス]をクリックして表示される仮想マシン一覧で、対象の仮想マシンの[状態]が「停止済み (割り当て解除済み)」になったことを確認する。

■【海外リージョン】仮想マシンのディスクにひも付けられているVHDのURLを取得する

 VHDをコピーするには、その在りかを表すURLが必要だ。これを取得するには、まず左メニューから[仮想マシン]−[仮想マシン インスタンス]をクリックして表示される一覧から対象の仮想マシンをクリックし、[ダッシュボード]をクリックする。下にスクロールして表示される「ディスク」以下にディスク一覧が表示されるので、各行の右端にカーソルを乗せると表示されるアイコンをクリックすると、参照URLがクリップボードにコピーされる。これは次の手順で使うのでメモしておくこと。

仮想マシンのディスクにひも付けられているVHDのURLを取得する 仮想マシンのディスクにひも付けられているVHDのURLを取得する
これは管理コンソールで対象の仮想マシンのダッシュボードを開いたところ。
  (1)ここに仮想マシンのディスク一覧が表示される。
  (2)これはOSディスク(システムボリュームが内蔵されている)の例。右端にカーソルを乗せると文書を模したようなアイコンが表示されるので、クリックするとクリップボードに参照URLがコピーされる。

 取得されたURLは次のような形式になっているはずだ。

http://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/<vhdファイル名>
または
https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>/<vhdファイル名>



 OSディスクの他にデータディスクも接続されている場合は、そのURLもメモしておく。

■VHDを日本リージョンへコピーする

 以上の準備が完了したら、VHDを海外リージョンから日本リージョンへコピーする。AzCopyの場合、次のようなコマンドラインで直接リージョン間(ストレージアカウント間)のコピーを実行できる。

azcopy <元のコンテナーURL> <新しいコンテナーURL> <対象ファイル一覧> /SourceKey:<元のストレージのアクセスキー> /DestKey:<新しいストレージのアクセスキー>



 <元のコンテナーURL>には、先ほど取得したURLのうち「http〜<コンテナー名>」までを、<対象ファイル一覧>には同URLの<vhdファイル名>をそれぞれ指定する。もし同じコンテナー内にOSディスクとデータディスクの両方が格納されている場合は、<対象ファイル一覧>に各VHDのファイル名を半角スペースで区切って指定すると、一度に複数のVHDをコピーできる。

 新たに作成した日本リージョン上のストレージアカウントにはVHD保存用コンテナー(「vhds」でよいだろう)を作成しておき、そのURLを<新しいコンテナーURL>に指定する。

 筆者が3月上旬に試した限りでは、香港リージョンから東日本リージョンへAzCopyでVHDをコピーしたところ、おおよそ15Mbytes/sec程度の転送レートでコピーできた。実質容量(実際にファイルなどで使用している容量)が約10GbytesのVHDの場合、12分ほどでコピーは完了した。

■【日本リージョン】コピーしたVHDからディスクを作成する

 VHDをコピーしたら、そこから仮想マシンのためのディスクを作成する。管理コンソールの左メニューから[仮想マシン]−[ディスク]−(画面下部の)[+ 作成]アイコンとクリックしていき、表示されたダイアログで設定する。

コピーしたVHDからディスクを作成する コピーしたVHDからディスクを作成する
  (1)このディスクに付ける名前を記入する。
  (2)このボタンをクリックして表示されるコンテナーのツリーから、コピーしたVHDを選んで[開く]ボタンをクリックする。
  (3)OS起動用のVHDの場合、これにチェックを入れてオンにする。データ用VHDの場合はチェックを外してオフにする。

 データ用VHDがあるなら、同様の手順でディスクを作成する。その際、[VHD にはオペレーティング システムが含まれています]のチェックは外してオフにすること。

■【日本リージョン】ディスクから仮想マシンを作成する

 作成したディスクから仮想マシンを作成するには、管理コンソールの画面左下隅から[+ 新規]−[コンピューティング]−[仮想マシン]−[ギャラリーから]とクリックし、表示された「イメージの選択」画面の左メニューから[マイ ディスク]を選択する。利用可能なディスク一覧が表示されるので、先ほど作成したOSディスクを選んで次へ進める。あとは通常の仮想マシンと同じ手順でウィザードを進めて完了すればよい。

ディスクから仮想マシンを作成する ディスクから仮想マシンを作成する
  (1)これを選ぶ。
  (2)先ほど作成したOSディスクを選ぶ。
  (3)これをクリックしてウィザードを進める。あとは通常の仮想マシン作成と同じ手順でよい。

 なお、仮想マシンと同時にクラウドサービスも作成する場合、元のクラウドサービスとは別の名前を指定する必要がある。同じ名前を指定すると重複と見なされてエラーになるからだ。

●仮想マシンのカスタムイメージを移行する

 海外リージョンでカスタムイメージから仮想マシンを作成していた場合は、そのカスタムイメージを日本リージョンにコピーし、そこから同じ手順で仮想マシンを作成すればよい。大まかな手順は次の通りだ。

  • 【海外リージョン】カスタムイメージのURLを取得する
  • カスタムイメージを日本リージョンへコピーする
  • 【日本リージョン】カスタムイメージを登録する
  • 【日本リージョン】カスタムイメージから仮想マシンを作成する

■【海外リージョン】カスタムイメージのURLを取得する

 まずは海外リージョンで利用しているカスタムイメージのURLを確認する。管理コンソールの左メニューから[仮想マシン]−[イメージ]とクリックし、表示されたイメージ一覧から対象のカスタムイメージを見つける。その[場所]列のURLをメモする。

カスタムイメージのURLを取得する カスタムイメージのURLを取得する
  (1)これを対象のカスタムイメージとする。
  (2)この辺りにマウスカーソルを乗せると、文書を模したアイコンが表示される。クリックすると対象のカスタムイメージのURLがクリップボードにコピーされるので、メモしておく。

 カスタムイメージの実体はVHDファイルなので、取得されたURLはVHDファイルを指し示しているはずだ。

■カスタムイメージを日本リージョンへコピーする

 判明したURLを用いて、海外リージョンから日本リージョンへカスタムイメージをコピーする。AzCopyのコマンドラインは前述の仮想マシン用VHDのコピー時と同様だ。

azcopy <元のコンテナーURL> <新しいコンテナーURL> <対象ファイル一覧> /SourceKey:<元のストレージのアクセスキー> /DestKey:<新しいストレージのアクセスキー>



 <元のコンテナーURL>には、先ほど取得したカスタムイメージのURLのうち「http〜<コンテナー名>」までを、<対象ファイル一覧>には同URLの<vhdファイル名>をそれぞれ指定する。また<新しいコンテナーURL>には、日本リージョン上のストレージアカウントに作成しておいたVHD保存用コンテナーのURLを指定する。

■【日本リージョン】カスタムイメージを登録する

 日本リージョンへのコピーが完了したら、あらためてイメージとして登録する。それには管理コンソールの左メニューから[仮想マシン]−[イメージ]−(画面下部の)[+ 作成]アイコンとクリックしていき、表示されたダイアログで設定する。

コピーしたカスタムイメージを登録する コピーしたカスタムイメージを登録する
  (1)カスタムイメージに付ける名前を指定する。海外リージョンにあるイメージと並んで表示されるので、それと区別できるような名前が望ましい。
  (2)このボタンをクリックして表示されるコンテナーのツリーから、コピーしたVHD(カスタムイメージ)を選んで[開く]ボタンをクリックする。
  (3)チェックを入れてオンにする。

 これでカスタムイメージの移行は完了だ。

■【日本リージョン】カスタムイメージから仮想マシンを作成する

 移行したカスタムイメージから仮想マシンを作成する手順は、通常の場合と変わらない。まず管理コンソールの画面左下隅から[+ 新規]−[コンピューティング]−[仮想マシン]−[ギャラリーから]とクリックし、表示された「イメージの選択」画面の左メニューから[マイ イメージ]を選択する。表示された一覧から先ほど登録したカスタムイメージを選んだ後は、ウィザードを進めて完了すればよい。

●仮想マシンを移行する際の注意点

■移行に伴って設定変更が必要

 以下の項目についてはリージョン変更に伴って名称が変わる。

  • クラウドサービス名とパブリック仮想IP(VIP)アドレス、DNS名(FQDN)
  • ストレージアカウント名
  • アフィニティグループ名
  • リモートデスクトップ接続用ポート番号

 そのため、設定ファイルや各種スクリプトなどに記載されているこれらの名称を変更しなければならない。またDNS名についてはDNSサーバーのレコード更新が、パブリック仮想IPアドレスについては各拠点のファイアウォールの設定変更などが求められるだろう。

■仮想マシンの作成はスクリプトでなるべく自動化しておく

 移行する仮想マシンの数が多い場合、仮想マシンの作成と設定の手順をWindows Azure PowerShellのスクリプトで実装しておけば省力化が可能だ。Windows Azure PowerShellは、次のページからインストールできる。

  • Windows Azure SDK とツールのダウンロード(Windows Azureサイト)
    「コマンドライン ツール」にある「Windows PowerShell」−「インストール」をクリックし、起動したWeb PI(Web Platform Installer)の指示に従ってインストールする。

 例えば日本リージョンで作り直した仮想マシンに対してリモートデスクトップで接続できる拠点を制限するには、次のようなスクリプトを実行する。

$ServiceName = "SampleService"  # クラウドサービス名
$VMName = "SampleVM"            # 仮想マシン名(仮想マシンごとに変更が必要)
$PortRDP = 60000              # 仮想マシンのRD接続用ポート番号(仮想マシンごとに変更が必要)
$IPRangeTokyo = "ggg.hhh.iii.jjj/kk"
$IPRangeOsaka = "lll.mmm.nnn.ooo/pp"
$acl = New-AzureAclConfig
Set-AzureAclConfig -AddRule Permit -RemoteSubnet $IPRangeTokyo -Order 1 -ACL $acl -Description "東京本社管理部"
Set-AzureAclConfig -AddRule Permit -RemoteSubnet $IPRangeOsaka -Order 2 -ACL $acl -Description "大阪支社"
Get-AzureVM $ServiceName -Name $VMName | `
       Set-AzureEndpoint -Name "RDP" -Protocol tcp -LocalPort 3389 -PublicPort $PortRDP -ACL $acl | `
       Update-AzureVM



 これに繰り返し処理を加えれば、複数の仮想マシンに対して自動的に同じ制限を反映できる。

■Windows Azure PowerShellで日本リージョンを指定する方法

 ここまでの作業をWindows Azure PowerShellで実施する際、日本リージョンを選択するにはパラメーターに以下の文字列を指定する。

  • 東日本リージョン: 「Japan East」
  • 西日本リージョン: 「Japan West」

 例えばアフィニティグループを東日本リージョンに作成する場合は、次のようにコマンドレットを実行する。

New-AzureAffinityGroup <アフィニティグループ名> -Location "Japan East" -Description <説明文>



「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。