gpt4 book ai didi

java - 如何为每个 Windows Azure 虚拟机操作系统设置一些唯一标识符

转载 作者:行者123 更新时间:2023-11-30 09:32:50 25 4
gpt4 key购买 nike

我有一些虚拟机以相同的配置运行。在这些虚拟机上,我安装了我的应用程序。

我想在我的 VM 中设置一些自定义唯一标识符,以便我知道特定(来 self 的应用程序)请求是否来自该请求所在的 VM(或者该应用程序在哪个 VM 中运行)。由于相同的应用程序在所有虚拟机内运行,因此为了区分每个请求,我想在创建虚拟机时设置一些唯一的自定义标识符。

我想在创建虚拟机时设置一些系统属性/环境变量。

我正在使用 Windows Azure Rest API 和 Java 在 Windows Azure 门户上创建和管理虚拟机。我想通过使用Java编程语言来实现这一点。

如果您有任何相关信息,请告诉我。

最佳答案

每个实例都应具有不同的 SID,因为计算机已使用 genericize 选项进行系统准备(当您想要提供自定义镜像时同样适用)。您可以使用 this question 中的代码获取 SID,并将其用作标识符:

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

注意:即使代码中显示了domainName,您的计算机也不需要位于域中才能正常工作。

要在虚拟机上设置“自定义标识符”,您可以使用环境变量。由于您使用的是 Java,设置这些的最简单方法可能是 setx.exe 命令行工具 ( download )。您可以像这样调用该工具:

setx.exe VmIdentifier 123 -m

然后您应该能够使用系统读取它:

System.getenv("VmIdentifier")

我不太清楚您使用的是虚拟机 (IaaS) 还是云服务 (PaaS)。如果您使用虚拟机,则由您来部署应用程序,同时您还可以执行setx.exe

现在,如果您使用云服务,您实际上上传了一个部署在您的实例上的包。并且您可以获得启动任务的支持(在应用程序启动之前运行): How to Define Startup Tasks for a Role 。您可以使用启动任务来运行 setx.exe,但请确保在将executionContext 设置为提升的情况下运行它。

关于java - 如何为每个 Windows Azure 虚拟机操作系统设置一些唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12471264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com