【问题标题】:Accessing Azure ServiceConfiguration settings in Node.js在 Node.js 中访问 Azure ServiceConfiguration 设置
【发布时间】:2012-09-11 10:26:56
【问题描述】:

我即将进入构建 Node.js 应用程序的 beta 部署阶段,该应用程序通过 Windows Azure 上的 iisnode 运行。在设置了多个实例以及生产/暂存分离之后,我的研究得出了以下结论:

如果我想在不重新部署代码的情况下即时更改配置设置,我需要使用服务配置.cscfg 文件。

我的问题是我在web.config<appSettings><iisnode> 元素中存储了我可能想要更改的各种配置设置,这些设置目前通过进程全局对象在我的Node 应用程序中公开。

我环顾了 MSDNNode documentationSO(通常情况下),但找不到 Node 是否可以或可以以相同方式公开服务配置设置。如果没有,有没有办法可以将它们公开给我的应用程序?

编辑:更具体地说,我真的只想将 node_env 设置从 web.config 移动到服务配置,因为我希望能够从暂存中切换只需更改配置即可进行生产设置。原因 - 我们使用 IP 切换在 staging 和 prod 之间进行交换,并且两者之间存在一些非常小的差异(例如,它使用的 RESTful Web 服务的 URL)。

我也知道我可以在iisnode读取的iisnode.yaml文件中配置node_env,但这仍然会回收应用程序,我不想修改x yaml文件并重新部署,其中 x 是生产/暂存应用程序的实例数。

【问题讨论】:

    标签: node.js azure iisnode


    【解决方案1】:

    您可以通过 Azure SDK for Node.js 访问配置设置。

    安装:

    npm install azure

    获取配置设置:

    var azure = require('azure');
    
    azure.RoleEnvironment.getConfigurationSettings(function(error, settings) {
      if (!error) {
        // You can get the value of setting "setting1" via settings['setting1']
      }
    });
    

    【讨论】:

      【解决方案2】:

      这些设置似乎保存在 Azure 机器的 c:\Config\ 文件夹中的 XML 文件中。

      我确定您不应该直接访问这些,但您可以轻松解析此 XML 并在节点启动时读取设置。

      【讨论】:

      • 我很容易出错,但我不同意您不应该访问这些 - Azure 云工具附带的 API 包含 Microsoft.WindowsAzure.ServiceRuntime 程序集和命名空间。其中,RoleEnvironment 类提供了一个静态方法,用于在运行时访问这些配置值。非常适合 C# 和您拥有的东西,但不适用于 Node。
      • 我认为他的意思是您不打算读取 VM 上的 XML 文件。 (您应该使用 API。)
      猜你喜欢
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多