クラウドサービスがいくつかあり、AzureでVM Redisを実行しています。クラウドサービスがVM上のRedisと通信できるように、仮想ネットワークを作成する必要があることを理解しています。これは簡単でした。 。次に、DNSをセットアップして、どこでもIPアドレスを指定する必要がないようにします。
私が見つけた記事はすべてオンサイトDNSサーバーの統合に関するものですが、それはありません。とにかくgodaddy、またはdnsimpleを使用する方法はありますか?現在のVMに単純なDNSサービスをインストールするだけではどうですか?
私の質問は、クラウドサービスがDNS名を介してVNと通信できるようにするために何をする必要があるかと要約できますか?
Azureには、VNの「非表示」機能がいくつかあります。まず、はい、あなたは正しいです。仮想ネットワークを作成する場合、独自のDNSサーバーを提供して動的更新を許可するように設定しない限り、名前解決は機能しません。パブリックDNSサービスを使用して、Windows Azure仮想ネットワークのDNS名前解決を提供することはできません。
だからここにあなたの解決策があります。 VNetで仮想マシンを実行するとDNSサーバーのIPアドレスを変更できないため、「クリーン」を開始する必要があります。
注意事項:
このアーキテクチャは有効であることが証明されており、Windows Azure IaaS(別名仮想マシン)内で機能します
私は同じ問題を抱えていましたが、余分なマシンを必要とせず、作業がほとんどない合理的な解決策を考え出したと思います。
つまり、バックエンドとフロントエンドを同じ仮想ネットワークとサブネットに配置して、同じDNSサーバーが提供されるようにします。次に、フロントエンドサービスでDNSサフィックス検索リストを構成して、名前解決を実行するときにバックエンドのDNSサフィックスを使用するようにします。
手順:
ipconfig
を実行します。出力から、Connection-specific DNS Suffix
の値を取得します
$dnsSuffix
の値を、次のスクリプトの手順2の値に設定します。
$dnsSuffix = 'xxxxxx.yyyyy.uswest.internal.cloudapp.net';
$nics = Get-WmiObject `
-Class win32_networkadapterconfiguration `
-Filter 'IPEnabled = true';
$nics | % {
$nicSuffixes = $_.DNSDomainSuffixSearchOrder;
if ($nicSuffixes -notcontains $dnsSuffix) {
$_.DNSDomainSuffixSearchOrder = $dnsSuffix + $_.DNSDomainSuffixSearchOrder;
}
};
Invoke-WmiMethod `
-Class win32_networkadapterconfiguration `
-Name setDNSSuffixSearchOrder `
-ArgumentList @(@($dnsSuffix)),$null;
そのスクリプトにSet-DnsSuffixSearchList.ps1という名前を付けてプロジェクトに含め、ファイルのプロパティを「常にコピー」に設定します。
次の内容を含むstartup.cmd
というファイルを作成し、[常にコピー]プロパティも設定します。
powershell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
# Set the DNS SearchList so that backend hosts are resolvable using their shortened names.
powershell .\Set-DnsSuffixSearchList.ps1 >> "%TEMP%\StartupLog.txt" 2>&1
ServiceDefinition.csdef
を編集し、WebRole
ノードの下に次のXMLを追加して、Azure Cloud Service Projectにスタートアップタスクを追加します。
<Startup>
<Task
commandLine="startup.cmd"
executionContext="elevated"
taskType="background">
</Task>
</Startup>
サイトとバックエンドが同じサブネットにある必要があることをすでに指定していると想定して、これで完了です。そうでない場合は、これをServiceConfiguration
ノード内のServiceConfiguration.Cloud.cscfg
ファイルに追加します。
<NetworkConfiguration>
<VirtualNetworkSite name="yourVirtualNetwork" />
<AddressAssignments>
<InstanceAddress roleName="yourCloudServiceName">
<Subnets>
<Subnet name="yourSubnetName" />
</Subnets>
</InstanceAddress>
</AddressAssignments>
</NetworkConfiguration>
同じ問題に遭遇した他の人を助けることを願っています!
新しいポータルでは、パブリックIPアドレスリソースでDNS名を設定できます。これを構成する方法を説明する写真は次のとおりです。