【问题标题】:Azure Service Fabric application - hostname and host IP addressAzure Service Fabric 应用程序 - 主机名和主机 IP 地址
【发布时间】:2021-04-29 07:09:53
【问题描述】:

如何从 Azure 服务结构应用程序获取服务于当前请求的节点的主机名和主机 IP 地址?请提出建议。

【问题讨论】:

  • 请添加更多详细信息。正在运行什么工作负载。我们是在谈论使用服务结构 SDK(有状态/无状态服务或参与者模型)的 .net 应用程序吗?
  • 我们在 Azure SF 集群上部署 .net 无状态服务作为工作负载。

标签: azure azure-service-fabric azure-vm-scale-set


【解决方案1】:

这些environment variables 由顺丰提供:

  • Fabric_NodeIPOrFQDN - 节点的 IP 或 FQDN,在集群清单文件中指定。 (例如 localhost 或 10.0.0.1)
  • Fabric_NodeName - 运行进程的节点的节点名(例如_Node_0)

假设你使用的是C#,你可以通过usingEnvironment.GetEnvironmentVariable获取一个环境变量

【讨论】:

  • @LoekD 根据您上面的回复,我假设在 Service Fabric 的上下文中,它的“节点名”必须被视为“主机名”,不是吗?
  • 是,主机名(内部)/机器名/节点名,但不是连接到 Azure 负载均衡器公共 IP 的外部域名。
【解决方案2】:

除了使用环境变量,您还可以使用StatelessServiceContext 类。它有一个NodeContext 属性,其中包含几个有趣的properties。在您的服务中,您可以像这样获取 fqdn/ip 地址:

var address = Context.NodeContext.IPAddressOrFQDN;

Afaik 节点名称与机器名称无关,它是一个逻辑名称。节点名称可以是用户定义的名称。我会说Environment.MachineNameContext.NodeContext.IPAddressOrFQDN 是最准确的。

【讨论】:

  • @Peter Bons,有逻辑名称的目的是什么?为什么我们需要有逻辑名称虽然我们有 MachineName ?是不是因为一台机器/VM 可以有多个节点,即 Fabric.exe 和 FabricGateway.exe 的多个实例?
  • 我不确定,因为我从未使用过它。我认为默认的是以实例号为前缀的节点类型名称。
猜你喜欢
  • 2021-01-18
  • 2014-12-19
  • 2014-12-02
  • 1970-01-01
  • 2015-11-28
  • 2012-05-31
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多