部署 Node.js Web 应用程序  - 在 Azure 上启动并运行高度可用的 Node.js Web 应用程序
发布于 7 年前 作者 Azcommunity 3204 次浏览 来自 分享

问大家一个问题,如果让你搭建一个 Web 服务,需要几步? 难度升级一下,如何设置可进行横向扩展的具备负载均衡能力的 Web 服务呢? 难度继续升级,大家都听过“异地双活”的概念,那如何设置异地双活或多活的 Web 服务呢? 相信通过上面的问题,大家就能够体会到一个 Web 服务,从无到有直到搭建出异地多活的 Web 服务是一个多么复杂且耗时耗力的工作。 但是,当我们开发、运营一个 Web 服务的时候,为了服务的可靠性,我们必须要为系统架构设计高可用能力,甚至在一个地域出现服务中断的情况下仍旧能够对外提供服务的能力,但是让我们任何一个人从无到有自己去搭建或开发这么一套具备高可用和灾难恢复能力的 Web 服务的难度可想而知。 今天我们就会带领大家一起体验如何在由世纪互联运营的 Azure 平台上面,通过 Azure Web 应用、Azure Cosmos DB 和 Traffic Manager 等服务实现具备异地双活,横向扩展能力的 Web 服务,这次我们的应用服务基于 Node.js 来实现。

构建 Node.js 应用并连接 Cosmos DB 创建本地 Node.js 应用程序 在此步骤中,你将设置本地 Node.js 项目。 克隆示例应用程序 打开终端窗口,运行 CD 切换到工作目录。 运行以下命令克隆示例存储库。 此示例存储库包含默认的 MEAN.js 应用程序。 Git 命令行程序下执行: git clone https://github.com/prashanthmadi/mean 运行应用程序 安装所需的包并启动应用程序。 CMD 命令行窗口执行: cd mean npm install npm start 注意:执行 npm install 时可能需要较长耗时,需要耐心等待。 除非你已有一个本地 MongoDB 数据库,否则 npm start 应会终止并返回类似于下面的错误消息(这是正常显示!): { [MongoError: failed to connect to server [localhost:27017] on first connect] … name: ‘MongoError’, message: ‘failed to connect to server [localhost:27017] on first connect’ } 所以请不要担心,此时请不要设置本地 MongoDB 数据库,因为稍后将在 Azure 中创建完全兼容 MongoDB 协议的Cosmos DB。 1.png 创建支持 MongoDB 协议的 CosmosDB 数据库 在此步骤中,你要将应用程序连接到 MongoDB 数据库。对于 MongoDB,本教程使用支持 MongoDB 客户端协议连接的 Azure Cosmos DB。 换而言之,Node.js 应用程序只知道它要连接到 MongoDB 数据库,而连接由 Cosmos DB 数据库支持的事实对于应用程序是完全透明的(应用程序认为连接的是 MongoDB,因为 Cosmos DB 完全兼容 MongoDB 客户端协议)。 **登录 Azure ** 现在,你要在终端窗口中使用 Azure CLI 2.0 创建所需的资源用于在 Azure 应用服务中托管 Node.js 应用程序。 在 CMD 命令行界面使用 az login 命令登录到 Azure 订阅,并按照屏幕上的说明进行操作。 az cloud set -n AzureChinaCloud az login  按照提示,登录指定网站,输入 code 就可以登录成功。 2.png 注意:在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud。 创建资源组 使用 az group create 创建资源组。Azure 资源组是在其中部署和管理 Azure 资源(例如 Web 应用、数据库和存储帐户)的逻辑容器。 以下示例在中国北部区域中创建一个资源组。 Azure CLI 执行 az group create --name myResourceGroup --location "China North" 若要查看适用于 --location 的可能值,请使用 az appservice list-locations Azure CLI 命令。 创建 Cosmos DB 帐户 使用 az cosmosdb create 命令创建 Cosmos DB 帐户。 在以下命令中,请将出现的 <cosmosdb_name> 占位符替换为你自己的唯一 Cosmosdb 名称。此唯一名称将用作 Cosmosdb 终结点 。(https://<cosmosdb_name>.documents.azure.cn/) 的一部分,因此需要在 Azure 中的所有 Cosmosdb 帐户之间保持唯一。 Azure CLI 执行 az cosmosdb create --name <cosmosdb_name> --resource-group myResourceGroup --kind MongoDB –kind MongoDB 参数启用 MongoDB 客户端连接。 创建 Cosmosdb 帐户后,Azure CLI 将显示类似于以下示例的信息。 JSON 格式 { “databaseAccountOfferType”: “Standard”, “documentEndpoint”: “https://<cosmosdb_name>.documents.azure.cn:443/”, “id”: “/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Document DB/databaseAccounts/<cosmosdb_name>”, “kind”: “MongoDB”, “location”: “China North”, “name”: “<cosmosdb_name>”, “readLocations”: [ { “documentEndpoint”: “https://<cosmosdb_name>-chinanorth.documents.azure.cn:443/”, “failoverPriority”: 0, “id”: “<cosmosdb_name>-chinanorth”, “locationName”: “China North”, “provisioningState”: “Succeeded” } ], “resourceGroup”: “myResourceGroup”, “type”: “Microsoft.Cosmosdb/databaseAccounts”, “writeLocations”: [ { “documentEndpoint”: “https://<cosmosdb_name>-chinanorth.documents.azure.cn:443/”, “failoverPriority”: 0, “id”: “<cosmosdb_name>-chinanorth”, “locationName”: “China North”, “provisioningState”: “Succeeded” } ] } 在 Cosmos DB 全局数据窗口地图界面点击上海数据中心图标,创建中国东部数据中心为 Cosmos DB 读取区域。点击“保存”按钮。  3.png

将 Node.js 应用程序连接到数据库 在此步骤中,你要使用 MongoDB 连接字符串将 MEAN.js 示例应用程序连接到刚刚创建的 Cosmos DB 数据库。 检索数据库密钥 若要连接到 Cosmosdb 数据库,需要数据库密钥。 使用 az cosmosdb list-keys 命令检索主密钥。 Azure CLI 执行 az cosmosdb list-keys --name <cosmosdb_name> --resource-group myResourceGroup Azure CLI 输出类似于以下示例的信息。 JSON 格式 { “primaryMasterKey”: “RUayjYjixJDWG5xTqIiXjC…”, “primaryReadonlyMasterKey”: “…”, “secondaryMasterKey”: “…”, “secondaryReadonlyMasterKey”: “…” } 将 primaryMasterKey 的值复制到文本编辑器。 下一步骤需要用到此信息。 在 Node.js 应用程序中配置连接字符串 在 MEAN.js 存储库中打开 config/env/development.js。 将此文件的内容替换为以下代码。 另外,请务必将两个 <cosmosdb_name> 占位符替换为你的 Cosmos DB 数据库名称,将 <primary_maste_key> 占位符替换为在上一步骤中复制的密钥。 db: { uri: ‘mongodb://<cosmosdb_name>:<primary_master_key>@<cosmosdb_name>.documents.azure.cn:10250/mean?ssl=true&sslverifycertificate=false’, … } 注意: ssl=true 选项非常重要,因为 Azure Cosmos DB 需要 SSL。 保存所做更改。 再次运行应用程序 再次运行 npm start。 CMD命令行执行: npm start 此时不会出现前面所示的错误消息,而应会出现一条控制台消息,指出开发环境已启动并正在运行。 在浏览器中导航到 http://localhost:8443。 在顶部菜单中单击“注册”,然后尝试创建一个虚构的用户。 MEAN.js 示例应用程序将用户数据存储在数据库中。 如果上述操作成功并且 MEAN.js 可自动登录到创建的用户,则表示 MongoDB 数据库连接可正常工作。 4.png 在终端中,通过键入 Ctrl+C 停止 Node.js。

更多步骤 请即刻点击前往查询

欢迎交流 A究院研究生 Azurecommunity@qq.com

回到顶部