2

同じ構成で実行されている仮想マシンがいくつかあります。これらの VM にアプリケーションをインストールしました。

VM にカスタムの一意の識別子を設定したいので、特定の (アプリケーションからの) リクエストがどの VM から来ているか (またはそのアプリケーションがどの VM で実行されているか) がわかるようにします。すべての VM 内で同じアプリケーションが実行されているため、各リクエストを区別するために、仮想マシンの作成時に一意のカスタム識別子を設定したいと考えています。

仮想マシンの作成時に、いくつかのシステム プロパティ/環境変数を設定したいと考えています。

Windows Azure ポータルで仮想マシンを作成および管理するために、Windows Azure Rest API と Java を使用しています。Javaプログラミング言語を使用してこれを実現したいと考えています。

同じことについての情報があれば教えてください。

4

2 に答える 2

2

マシンは一般化オプションを使用して sysprep されるため、各インスタンスには異なる SID が必要です (カスタム イメージを提供する場合も同様です)。この質問のコードを使用して SID を取得し、それを識別子として使用できます。

        string domainName;
        Helper.SID_NAME_USE accountType;
        SecurityIdentifier machineSID = 
                Helper.LookupAccountName("", Environment.MachineName, out domainName, out accountType);

注: コード内で domainName と表示されていても、これが機能するためにマシンがドメイン内にある必要はありません。

VM に「カスタム識別子」を設定するには、環境変数を使用できます。Java を使用しているため、これらを設定する最も簡単な方法は、おそらくsetx.exeコマンド ライン ツール (ダウンロード) です。次のようにツールを呼び出すことができます。

setx.exe VmIdentifier 123 -m

次に、システムを使用してそれを読み取ることができるはずです。

System.getenv("VmIdentifier")

仮想マシン (IaaS) を使用しているか、クラウド サービス (PaaS) を使用しているかは、私にはよくわかりません。仮想マシンを使用している場合、アプリケーションのデプロイはユーザー次第であり、その間にsetx.exeを実行することもできます。

Cloud Services を使用している場合は、実際にパッケージをアップロードして、インスタンスにデプロイします。また、(アプリケーションの開始前に実行される) スタートアップ タスクのサポートも得られます: How to Define Startup Task for a Role . スタートアップ タスクを使用して setx.exe を実行できますが、必ず executionContext を上位に設定して実行してください。

于 2012-09-18T06:37:58.743 に答える
0

リモート デスクトップ サービスを使用して VM に接続できるため、デプロイを識別するアプリケーションの web.config ファイルに接続して設定を追加するのは簡単です。または、web.config ファイルを同一にしたい場合は、小さなテキストファイルをアップロードできます。

または、サーバーに固有の名前がす​​でにある必要があります。.Net アプリケーションを実行していると思いますか? Server.MachineNameもしそうなら、 (http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.machinename%28v=vs.71%29.aspx)を使用して一意の名前を取得できるはずですコードが実行されているボックス。

于 2012-09-18T06:30:43.003 に答える