مرجع اهداف میزبانی شده

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

محدودیت‌های متغیر محیطی

Hosted Targets اندازه و تعداد متغیرهای محیطی را که می‌توانید در محیط زمان اجرای Hosted Targets تنظیم کنید، محدود می‌کند.

  • ۱۰۰۰: حداکثر طول یک متغیر محیطی واحد.
  • ۱۰۰: حداکثر تعداد متغیرهای محیطی که می‌توانید تنظیم کنید.

برای اطلاعات در مورد تنظیم متغیرهای محیطی، به فایل مانیفست مراجعه کنید.

متغیرهای محیطی تنظیم شده در زمان اجرای برنامه

وقتی یک برنامه Hosted Targets را مستقر می‌کنید، متغیرهای محیطی زیر تنظیم شده و در زمان اجرا در دسترس برنامه شما هستند:

  • APIGEE_ENVIRONMENT - محیطی که پروکسی Hosted Target در آن مستقر است.
  • APIGEE_ORGANIZATION - سازمانی که پروکسی Hosted Target در آن مستقر شده است.
  • PORT - پورتی که برنامه Hosted Target باید به آن گوش دهد.

تخصیص منابع سیستم

هر نمونه Hosted Targets منابع زیر را دریافت می‌کند:

  • حافظه ۲۵۶ مگابایت
  • پردازنده ۱.۲ گیگاهرتزی

مقیاس‌بندی

این بخش نحوه‌ی مقیاس‌پذیری برنامه‌های Hosted Targets را بسته به نوع حساب کاربری Edge شما شرح می‌دهد.
  • نسخه آزمایشی Apigee Edge به ازای هر پروکسی به یک نمونه Hosted Targets محدود شده است.
  • حساب‌های کاربری پولی Apigee Edge به صورت خودکار بر اساس نرخ درخواست، تأخیر پاسخ و سایر معیارهای برنامه به ازای هر پروکسی، مقیاس‌بندی می‌شوند.
  • برنامه‌های Hosted Targets که روی هر دو نسخه پولی و آزمایشی Apigee Edge مستقر شده‌اند، در دوره‌های عدم فعالیت، مقیاس را به صفر می‌رسانند. در این حالت، ممکن است برای مدت کوتاهی متوجه زمان پاسخگویی کندتر شوید. همچنین به مشکلات شناخته شده مراجعه کنید.

فایل مانیفست

برای جمع‌آوری اطلاعات زمان اجرا جهت ساخت و استقرار برنامه میزبانی‌شده، Edge به دنبال یک فایل مانیفست به نام app.yaml در دایرکتوری resources/hosted می‌گردد. این فایل حاوی اطلاعات لازم برای ساخت و استقرار برنامه Hosted Targets است.

سینتکس فایل Manfiest

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

عناصر فایل مانیفست

یک فایل مانیفست app.yaml شامل این عناصر است:

  • زمان اجرا - (الزامی) نوع برنامه‌ای که مستقر می‌کنید را مشخص می‌کند. باید node را مشخص کنید.
  • runtimeVersion - (اختیاری) نسخه زمان اجرایی که برنامه شما از آن استفاده می‌کند. پیش‌فرض: Node.js LTS (v10.x). برای گزینه‌های دیگر به مخزن رسمی Docker برای Node مراجعه کنید.
  • command - (اختیاری) به شما امکان می‌دهد دستوری را برای اجرا مشخص کنید، غیر از دستور پیش‌فرضی که برای شروع برنامه شما استفاده می‌شود. پیش‌فرض: Node.js=npm
  • args - (اختیاری) آرایه‌ای از آرگومان‌های خط فرمان که باید به برنامه ارسال شوند (مشخص شده در سینتکس آرایه استاندارد YAML). معمولاً این آرگومان‌ها به دستور پیش‌فرض اضافه می‌شوند. مقدار پیش‌فرض start است. برای مثال، به طور پیش‌فرض دستور npm start به برنامه Node.js ارسال می‌شود.
  • env - (اختیاری) آرایه‌ای از متغیرهای محیطی (جفت‌های نام/مقدار) برای تنظیم در محیط زمان اجرای Hosted Targets. این متغیرها برای برنامه Hosted Targets مستقر شده شما در دسترس هستند.
    • نام - نام متغیر.
    • مقدار | valueRef - شما دو گزینه دارید. می‌توانید یک مقدار تحت‌اللفظی تنظیم کنید یا به مقداری که در یک نگاشت کلید-مقدار ذخیره شده است، ارجاع دهید. نگاشت کلید-مقدار باید از قبل در محیط Edge شما وجود داشته باشد. به کار با نگاشت‌های کلید-مقدار مراجعه کنید.
      • اگر از value استفاده می‌کنید، باید name متغیر و value تحت‌اللفظی آن را مشخص کنید. برای مثال:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • اگر از valueRef استفاده می‌کنید، باید نام یک Key Value Map (KVM) که قبلاً در Edge ایجاد کرده‌اید و یک کلید را ارائه دهید. برای مثال:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    مثال فایل‌های مانیفست

    این بخش شامل فایل‌های مانیفست نمونه برای برنامه‌های Node.js است. برای استقرار یک برنامه Hosted Targets به یک فایل مانیفست نیاز است و باید در دایرکتوری apiproxy/resources/hosted قرار داشته باشد و نام فایل باید app.yaml باشد.

    در ادامه نمونه‌هایی از فایل‌های app.yaml (مانیفست) برای برنامه‌های Node.js آمده است.

    مثالی که یک متغیر محیطی تحت‌اللفظی را مشخص می‌کند:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    مثالی با یک دستور شروع، آرگومان‌های خط فرمان و یک متغیر محیطی.

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    مثالی که مرجع نگاشت کلید-مقدار (KVM) را مشخص می‌کند:

    برای اطلاعات بیشتر در مورد دسترسی KVM، به فایل Manifest مراجعه کنید.

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    نمونه برنامه‌های Hosted Targets در گیت‌هاب

    Apigee نمونه‌هایی از پروکسی‌ها را در GitHub با برنامه‌های Hosted Targets نوشته شده در Node.js ارائه می‌دهد. می‌توانید این مخزن را کلون کنید و دستورالعمل‌های README را برای استقرار هر یک از پروکسی‌ها دنبال کنید.

    پیش‌نیازها

    برای نصب نمونه‌ها، باید دو ابزار روی سیستم خود نصب داشته باشید:

    • apigeetool -- یک ابزار خط فرمان برای استقرار پروکسی‌های Edge.
    • get_token - یک ابزار خط فرمان برای دریافت توکن مجوز مورد نیاز apigeetool.

    اگر می‌خواهید نمونه‌ها را به صورت محلی آزمایش کنید، باید Node.js را نیز نصب کرده باشید.

    دریافت نمونه رپو

    1. در یک مرورگر، به آدرس https://github.com/apigee/api-platform-samples بروید.
    2. روی Clone کلیک کنید یا با استفاده از روش دلخواه خود، مخزن را دانلود و به سیستم محلی خود منتقل کنید.
    3. به <your install dir>/api-platform-samples/doc-samples/hosted-targets بروید.
    4. پس از دانلود مخزن، می‌توانید با دستور cd به هر یک از دایرکتوری‌های نمونه بروید و دستورالعمل‌های README را برای استقرار یک پروکسی نمونه در Edge دنبال کنید. دستور استقرار در زیر نشان داده شده است. به سادگی پارامترهای مشخص شده را با پارامترهای حساب Apigee خود جایگزین کنید:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    مثال: اجرای یک برنامه نمونه

    مخزن نمونه‌ها را کلون کنید

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    برنامه را به صورت محلی آزمایش کنید

    برای انجام این تست محلی باید Node.js را نصب کرده باشید.

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081

    خروجی مثال:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    پراکسی را مستقر کنید

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    آزمایش استقرار

    ممکن است تکمیل استقرار چند دقیقه طول بکشد. اگر با خطای استقرار مواجه شدید، دستور deploy را دوباره اجرا کنید.

    curl http://myorg-test.apigee.net/node-hosted-hello

    خروجی مثال:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    مشکلات شناخته شده

    • تأخیرهای شبکه - اکنون که برنامه Node.js دیگر در JVM مربوط به MP اجرا نمی‌شود، یک جهش شبکه بین MP و استقرار وجود دارد. البته این هزینه‌ای دارد، اما معیارهای اولیه نشان می‌دهند که این هزینه در حد معقولی است.
    • پاسخ‌های کند API - زیرساختی که برنامه‌های شما را اجرا می‌کند، به‌طور خودکار بر اساس نیاز مقیاس‌پذیر می‌شود. این بدان معناست که برنامه شما می‌تواند در واقع به صفر نمونه کاهش یابد و در این صورت، درخواست API بعدی کمی بیشتر از درخواست‌های API معمولی طول خواهد کشید، زیرا زیرساخت در حال راه‌اندازی نمونه(ها) برای پردازش درخواست(ها) است.
    • خطای استقرار - اگر هنگام استقرار پروکسی Hosted Targets با خطای استقرار مواجه شدید، سعی کنید پروکسی را مجدداً مستقر کنید. در برخی موارد، استقرار می‌تواند با وقفه زمانی مواجه شود و اگر مجدداً مستقر شوید، مشکل خود به خود حل خواهد شد.