針對 Node.js 運行時的 Auto-scaling 增強

DruForsyth 8年前發布 | 7K 次閱讀 Node.js Bluemix Node.js 開發

簡介

在 Auto-Scaling for Bluemix服務的上一個版本中,它僅支持 Node.js 應用程序的 “內存” 指標。通過將內存使用指標合并到當前版本中,我們可以評估應用程序的健康情況,從而確定是否需要所評估應用程序的更多實例。但是,有時我們需要更準確地控制應用程序的實例數量。

Auto-Scaling 服務最近發布了一項針對 Node.js 運行時的增強。它提供了另外兩種指標類型:堆和吞吐量。在 Node.js 中,堆、堆棧和代碼段構成了主要內存模式。堆存儲對象(也是 Node.js 垃圾收集機制中的對象)對評估 Node.js 應用程序的健康至關重要。對于 Web 應用程序,它的健康條件也可以通過應用程序在過去一段時間處理了多少個請求來評估。應用程序處理的請求越多,使用的資源就會越多,它的健康條件也就有可能降低。

本文將演示如何對 Node.js 應用程序應用 Auto-Scaling 服務的新增強。

構建您的應用程序需要做的準備工作

您是否知道 developerWorks Premium 不僅提供了 12 個月的 Bluemix 訂閱,還提供了 240 美元的貸款用于開發應用程序?您還可以在 Premium 的 Safari Books Online 圖書館中查閱 50 多部有關安全的圖書!立即查閱!

  • 一個Bluemix? 帳戶。
  • Node.js 編程的基礎知識,包括:
    • 知道如何使用 Node.js 編寫 Web 應用程序
    • 知道如何為 Node.js 應用程序構建 “package.json” 文件
    </li>
  • HTML 和 JavaScript 的知識。
  • 一個可將 Node.js 應用程序上傳到 Bluemix 的開發環境,比如Eclipse。
  • Apache JMeter? 的基礎知識。
  • </ul>

    準備應用程序

    要準備您的應用程序,請執行以下步驟:

    1. 更新應用程序的 package.json。
    2. 使用以下命令為 “bluemix-autoscaling-agent” 創建一個依賴條目:
      "bluemix-autoscaling-agent":"*"
    3. bluemix-autoscaling-agent 是一個可從 npm 安裝的 Node.js 模塊。在應用程序綁定到一個 Auto-Scaling 服務實例后,該代理可以收集應用程序的指標并發送給 Auto-Scaling 服務的服務器。
    4. 依據您在 Bluemix 上為您的應用程序分配的內存,設置 “script” 中的堆限制:
      "start":"node --max-old-space-size=600 app.js"
    5. 如果想觸發基于堆使用率的擴展,可以為 “max-old-space-size” 設置一個值。如果在啟動應用程序時未設置該值,那么無論您在 Bluemix 中分配了多少內存,都將使用 1.4GB 的默認 Node.js 堆限制,這可能導致制定不正確的自動擴展決策。
      以下代碼是 package.json 文件在更新后包含的內容。
      {
          "name": "nodejsdemoapp",
          "version": "0.0.1",
          "description": "A sample nodejs app for Bluemix",
          "scripts": {
              "start": "node --max-old-space-size=600 app.js"
          },
          "dependencies": {
              "bluemix-autoscaling-agent": "*”
          },
          "repository": {},
          "engines": {
              "node": "0.12.x"
          } 
          }
    6. 在您的應用程序中啟動 Auto-Scaling Node.js 代理,方法是將下面這行添加到您的入口 JavaScript 中。
      var agent = require('bluemix_autoscaling-agent');
    7. 將應用程序推送到 Bluemix,單擊 創建服務 將該應用程序綁定到一個Auto-Scaling 服務實例。
    8. 單擊服務列表中的 Auto-Scaling
    9. 在左側下拉框“連接到:”里選擇您要綁定的應用程序,并單擊 創建 ,您會看到創建的新 Auto-Scaling 服務。它現在已綁定到我們剛創建的應用程序。

      針對 Node.js 運行時的 Auto-scaling 增強

    創建一個 Auto-Scaling 策略

    要進一步了解分配擴展規則,了解應用 JMeter 的更多細節,請參閱 “ 讓您的應用程序在 Bluemix 上富有彈性 ”。

    您現在已準備好應用程序,可以開始創建擴展規則了。

    請注意,有 3 種指標類型受到支持。在下圖中,我們使用 “吞吐量” 作為示例。

    針對 Node.js 運行時的 Auto-scaling 增強

    向應用程序添加工作負載并監視它的資源使用

    在本教程中,我使用 Apache JMeter 向我們的應用程序添加工作負載。JMeter 運行該工作負載后,我打開 Auto-Scaling 儀表板并切換到 Metrics Statistics 選項卡。

    在下圖中可以注意到,隨著工作負載的運行,吞吐量也會增加。

    針對 Node.js 運行時的 Auto-scaling 增強

    當吞吐量連續 120 秒(保持時間)達到每秒 50 個請求時(達到上限),將創建一個新實例,使實例總數變為 2,如下圖所示。

    針對 Node.js 運行時的 Auto-scaling 增強

    結束語

    現在,您已經知道了如何讓 Node.js 應用程序利用 Bluemix 上的新 Auto-Scaling 增強。這些新功能很容易掌握,而且有助于提高應用程序的彈性。利用 IBM Auto-Scaling for Bluemix 服務,還可以根據您定義的策略來自動增加或減少應用程序的 CPU 閾值,從而節省總成本、時間和工作量。

    下載資源

    • Node.js 代理演示 (nodejsAgentDemo.zip | 1MB)

     

    來自:http://www.ibm.com/developerworks/cn/security/se-auto-scaling-enhancements-node.js-runtime-trs/index.html?ca=drs-

     

 本文由用戶 DruForsyth 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!