【问题标题】:Changing Azure .cscfg settings on Role Start在角色启动时更改 Azure .cscfg 设置
【发布时间】:2013-07-15 19:07:16
【问题描述】:

我正在尝试创建一个启动脚本或任务,以更改 cscfg 文件中的配置设置,并在角色启动时执行。

我可以访问这些设置,但无法成功更改它们。我希望获得有关如何更改角色开始设置的指针,或者是否有可能。

谢谢。

编辑:我想要完成的事情

我正在尝试提供一项服务,以便更轻松地在 Azure 应用程序上配置配置值。现在,如果我想在 7 个不同的环境中更改相同的设置,我必须在 7 个不同的 .cscfg 文件中更改它。

我的想法是我可以创建一个 Web 服务,应用程序将查询其配置值。 Web 服务将在存储位置(如 Azure 表)中查找,并返回正确的配置值。这样,我可以只编辑表格中的一个值,并且在正确的环境中更改它的速度会更快。

我已经能够非常轻松地将其集成到部署脚本中(打包应用程序、获取设置、更改 cscfg 文件、部署)。问题是每次您想更改设置时,都必须重新部署。

【问题讨论】:

  • 通过这个操作,你想完成什么?可能有更好的方法。您在这里面临的部分挑战是,如果您有 10 个实例,他们都会尝试这样做。所以我们需要小心“全球”的启动操作,通常有更好的方法来满足您的需求。
  • - 尝试使用特定于构建配置的 cscfg 文件:..DEV.cscfg、..TEST.cscfg - 并部署它们。
  • 添加一些关于我想要完成的事情的背景故事。就像你说的那样,我有单独的环境配置设置。对于某些项目,有 30 多个 cscfg 文件 - 用于不同的实例、版本等。

标签: azure configuration startup azure-web-roles


【解决方案1】:

Black-o,鉴于您似乎希望管理多个部署 (30+) 之间的连接设置,我建议您使用单独的配置存储可能会更好地满足您的需求。这可能是 Azure 存储(表,或者可能只是 Blob 容器中的配置文件)、关系数据库,甚至可能是外部配置服务。

这些选项只需要将最少量的信息放入 cscfg 文件(刚好足以指向和授权配置存储),并允许您并排维护所有详细设置。

一个简单的示例可能使用单个存储帐户,将配置设置放入 Azure 表,并使用“部署”ID 作为分区键。然后,用于部署的配置文件只需要存储位置的连接信息(除非您想使用共享访问签名)及其部署 ID。然后可以在角色启动时检索配置设置并将它们缓存在本地以提高性能(在分布式内存缓存中或可能在每个实例的临时“本地存储”驱动器上)。

将所有这些组合在一起的代码应该不会超过几个小时。只要确保您还考虑了弹性,以防您选择的配置提供程序不可用。

【讨论】:

  • 这就是我想要做的,我只是在中间有 web 服务来从存储中获取设置,并将它们返回到应用程序。我遇到的问题是如何在角色启动时执行此操作(获取设置,设置它们,防止角色重新启动)。目前,由于我还没有设置表存储,我只是让 web 服务返回一个静态值。但这不应该影响应用程序端的任何东西,如果它使用表,它会从服务中获得完全相同的东西。
  • 根据您的原始帖子,您正在尝试更改云服务配置设置。我的建议是,您建立自己的商店,而不是这样做,因此不再需要更新 cscfg。只需从您自己的商店中提取设置即可。
  • 是的,这就是我的意思,也许我只是不清楚。我确实说过改变,但我的意思是改变应用程序正在使用的值。这并不一定意味着更改 cscfg 中的值,只是更改存储中的值。在存储中更改它会更改应用程序正在使用的值。在 cscfg 中,除了默认值之外,我唯一需要的设置是到存储的连接字符串。我根本不需要更新/更改 cscfg 文件。
  • 我遇到的问题是在角色启动时连接到 Web 服务并获取应用程序的值。我可以很好地检索这些值,但我不知道如何实际使用它们,或者让应用程序将这些值用作设置。另外,当检索到新的配置设置时,我必须绕过角色回收的默认行为,否则它将无限重启(启动角色,运行角色启动脚本,获取设置,因为检索到新设置而重新启动)
  • 在角色启动时,调用您的配置服务并将所有设置作为一个包/有效负载提取。获取从那里返回的值,然后将其放入本地存储(与您的角色实例并置的临时存储位置)。这为您提供了准持久的本地、低延迟存储选项。接下来设置一个定期触发的任务,以查询配置服务的更改。恕我直言,最简单的方法是使用哈希快速查看有效负载中是否存在版本更改。
【解决方案2】:

在运行时更改设置的唯一方法是通过管理 API - 制作新设置并执行“更新部署”操作。这将相当慢,因为它尊重更新域。因此,根据您的实际问题,可能会有更好的方法来解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2019-10-03
    • 2013-10-09
    • 2013-02-28
    相关资源
    最近更新 更多