【问题标题】:Dynamically altering Service Fabric Environment Variables动态更改 Service Fabric 环境变量
【发布时间】:2020-02-10 02:55:56
【问题描述】:

我在 Service Fabric 中有一个服务,其中包含在服务清单中定义的环境变量,我想在部署后动态更改该环境变量。最好的方法是什么?

据我所知,这必然涉及更新应用程序并为服务创建新版本。

【问题讨论】:

  • 能否请您更具体地说明您喜欢动态设置哪些变量?

标签: .net azure-service-fabric


【解决方案1】:
  1. 在您的服务清单中指定环境变量和值。如果您已经指定了环境变量,那么您可能已经有了这些。
<CodePackage Name="MyCode" Version="CodeVersion1">
        <EnvironmentVariables>
              <EnvironmentVariable Name="MyEnvVariable" Value="DefaultValue"/>
              <EnvironmentVariable Name="HttpGatewayPort" Value="19080"/>
        </EnvironmentVariables>
</CodePackage>
  1. 在应用程序清单中添加环境变量覆盖
<ServiceManifestImport>
    <ServiceManifestVersion="1.0.0" />
    <EnvironmentOverrides CodePackageRef="MyCode">
      <EnvironmentVariable Name="MyEnvVariable" Value="OverrideValue"/>
    </EnvironmentOverrides>
  </ServiceManifestImport>
  1. 在应用程序清单中,将环境变量值指定为应用程序参数,而不是特定的覆盖值。
<ServiceManifestImport>
    <ServiceManifestVersion="1.0.0" />
    <EnvironmentOverrides CodePackageRef="MyCode">
      <EnvironmentVariable Name="MyEnvVariable" Value="[MyEnvVariableOverride]"/>
    </EnvironmentOverrides>
  </ServiceManifestImport>

<Parameters>
   <Parameter Name="MyEnvVariableOverride" DefaultValue="DefaultOverrideValue" />
</Parameters>

  1. 执行应用程序升级,通过ApplicationParameters 哈希表更改应用程序参数(在 PS 中 - 参数名称到参数值的映射)。例如,您可以将“MyEnvVariableOverride”设置为“FinalValue”。这将向下流动并导致服务看到的环境变量值发生变化。请注意,更改环境变量需要重新启动进程。

相关文档:1234

【讨论】:

  • 工作得很好,非常感谢。作为后续,有没有办法在不重启进程的情况下做同样的事情?
  • 否,因为环境变量。如果您要使用常规服务结构配置包 (settings.xml),则相同的覆盖模式可以工作,但不需要重新启动。您仍然可以通过 - ForceRestart 选择重新启动。您也可以始终只使用数据包而不是配置或环境变量,但是您的代码必须观察这些文件本身的变化。
猜你喜欢
  • 1970-01-01
  • 2018-12-05
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 2019-07-15
  • 1970-01-01
  • 2016-12-30
相关资源
最近更新 更多