PaaSもIaaSもオンプレミスもいいとこ取り!!Windows Azure Virtual Networksで合わせワザ一本!!
Virtual NetworkとAffinity groupの作成
早速、Virtual Networkを作成してみましょう。新しい管理ポータル(https://manage.windowsazure.com/)のコマンドバーにある[+NEW]をクリックして[NETWORKS]を選択し、 [VIRTUAL NETWORK]、[CUSTOM CREATE]を選択してください。
Virtual Network Detailsでは、今回は以下のように入力しました。
- NAME MyVNET
- REGION East Asia
- AFFINITY GROUP Create a new affinity group
- AFFINITY GROUP NAME myag
従来AFFINITY GROUPは、データセンター内での配置グループとして提供されており、同じグループに属するサービス同士はデータセンターの中でもより近いネットワーク上に配置する事ができます。Virtual Networkでも、同一のAFFINITY GROUPに各インスタンスが所属している事が前提になっています。
Address Space and Subnetsでは、今回は以下のように入力しました。
- ADDRESS SPACE 192.168.0.0/16
- SUBNETS AppSubnet 192.168.1.0/24
ADDRESS SPACEは今回定義するVIRTUAL NETWORK全体のアドレス空間の定義をしています。ADDRESS SPACEから切り出した、複数のサブネットを持つ事ができます。今回はAppSubnetという名称でPrefix24の(255.255.255.0)のネットワークをサブネットとして追加しました。
DNS Servers and Local Networkでは、オンプレミスのネットワークと定義したVirtual Networkに所属する各インスタンスの名前解決を行うDNS Serverの定義ができますが、今回は何も入力せず進めてください。これで、Azureの内部で使う事ができるVirtual Networkの定義ができました。
Virtual Machine(IaaS)のインスタンスを構築する
次に定義したMyVNETに所属するVirtual Machine(IaaS)のインスタンスを作成します。
Windows AzureのVirtual MachineにLinuxも利用できるようになった事をご紹介しましたが、Linux稼働インスタンスは、現在(2012.10時点)Virtual Networkに対応していません。
今後対応される事を期待して、今回はWindows Server2008 R2で構築します。以下の記事を参照してください。
→ Windows Azure仮想マシンでLinuxサーバーを構築しよう
[+NEW]をクリックして[VIRTUAL MACHINE]を選択し、 [FROM GALLERY]を選択してください。
VM OS Selectionから[Windows 2008 R2 SP1]を選択して、右下の矢印ボタンをクリックして、VM作成を進めてください。その際に、VM ModeからREGION/AFFINITY GROUP/VIRTUAL NETWORKから作成したMyVNETが表示されますので、選択してください。
次に進めると、VM Optionsに所属するサブネットが表示されています。APPSUBNETに所属させますので、チェックを入れて、次へ進めてVM作成を完了させてください。
インスタンスの作成が完了するとインスタンスの概要のINTERNAL IP ADDRESSはAppSubnetに所属する192.168.1.4が割り振られています。
また、Virtual Networkの画面からも、AppSubnetにインスタンスが所属している事がわかります。
Cloud Service(PaaS)のインスタンスを構築する
Cloud Serviceも同じAffinity groupを指定する必要があります。[+NEW]をクリックして[CLOUD SERVICE]を選択し、 [CUSTOM CREATE]を選択してください。
作成が完了したらデプロイするパッケージのServiceConfiguration. cscfgにNetworkConfiguration要素を追加します。Role単位で所属するSubnetを指定する事ができます。
<?xml version="1.0" encoding="utf-8"?> <ServiceConfiguration serviceName="vnetsample" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7"> <Role name="phpwebrole"> <Instances count="2" /> <ConfigurationSettings></ConfigurationSettings> </Role> <NetworkConfiguration> <VirtualNetworkSite name="MyVNET" /> <AddressAssignments> <InstanceAddress roleName="phpwebrole"> <Subnets> <Subnet name="AppSubnet" /> </Subnets> </InstanceAddress> </AddressAssignments> </NetworkConfiguration> </ServiceConfiguration>
後は、従来と同じようにデプロイする事で各ロールインスタンスにVirtual NetworkのIP Addressが割り振られます。
この時点で同じサブネットに所属し、相互に通信でき、PaaS/IaaSをハイブリッドで運用可能になります。