问题描述
如何从 Azure 服务结构应用程序获取为当前请求提供服务的节点的主机名和主机 IP 地址?请提出建议。
解决方法
这些 environment variables 由 SF 提供:
-
Fabric_NodeIPOrFQDN
- 节点的 IP 或 FQDN,如集群清单文件中所指定。 (例如本地主机或 10.0.0.1) -
Fabric_NodeName
- 运行进程的节点的节点名称(例如 _Node_0)
假设您使用的是 C#,您可以通过 using Environment.GetEnvironmentVariable
除了使用环境变量,您还可以使用 StatelessServiceContext 类。它有一个 NodeContext
属性,其中包含几个有趣的 properties。在您的服务中,您可以像这样获取 fqdn/ip 地址:
var address = Context.NodeContext.IPAddressOrFQDN;
Afaik 节点名称与机器名称无关,它是一个逻辑名称。节点名称可以是用户定义的名称。我认为 Environment.MachineName
或 Context.NodeContext.IPAddressOrFQDN
是最准确的。