مرجع عملیات و پیکربندی برای Edge Microgateway

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

Edge Microgateway نسخه ۳.۱.۵ و بالاتر

این مبحث به نحوه مدیریت و پیکربندی Edge Microgateway می‌پردازد.

ارتقاء Edge Microgateway در صورت داشتن اتصال اینترنتی

این بخش نحوه ارتقاء نسخه موجود Edge Microgateway را توضیح می‌دهد. اگر بدون اتصال به اینترنت کار می‌کنید، به «آیا می‌توانم Edge Microgateway را بدون اتصال به اینترنت نصب کنم؟» مراجعه کنید.

شرکت Apigee توصیه می‌کند قبل از ارتقاء محیط تولید، پیکربندی فعلی خود را با نسخه جدید آزمایش کنید.

  1. برای ارتقاء به آخرین نسخه Edge Microgateway، دستور npm زیر را اجرا کنید:
    npm upgrade edgemicro -g

    برای ارتقاء به یک نسخه خاص از Edge Microgateway، باید شماره نسخه را در دستور ارتقاء مشخص کنید. اگر شماره نسخه را مشخص نکنید، آخرین نسخه نصب خواهد شد. به عنوان مثال، برای ارتقاء به نسخه 3.1.0، از دستور زیر استفاده کنید:

    npm upgrade edgemicro@3.1.0 -g
  2. شماره نسخه را بررسی کنید. برای مثال، اگر نسخه ۳.۱.۰ را نصب کرده‌اید:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.1.0
        
  3. در نهایت، به آخرین نسخه از پروکسی edgemicro-auth ارتقا دهید:
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

ایجاد تغییرات پیکربندی

فایل‌های پیکربندی که باید در مورد آنها بدانید عبارتند از:

  • فایل پیکربندی پیش‌فرض سیستم
  • فایل پیکربندی پیش‌فرض برای نمونه‌ی Edge Microgateway که به تازگی مقداردهی اولیه شده است
  • فایل پیکربندی پویا برای نمونه‌های در حال اجرا

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

فایل پیکربندی پیش‌فرض سیستم

وقتی Edge Microgateway را نصب می‌کنید، یک فایل پیکربندی سیستم پیش‌فرض در اینجا قرار می‌گیرد:

prefix/lib/node_modules/edgemicro/config/default.yaml

که prefix دایرکتوری پیشوند npm است. اگر نمی‌توانید این دایرکتوری را پیدا کنید ، به «محل نصب Edge Microgateway» مراجعه کنید.

اگر فایل پیکربندی سیستم را تغییر دهید، باید Edge Microgateway را مجدداً مقداردهی اولیه، پیکربندی و مجدداً راه‌اندازی کنید:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

فایل پیکربندی پیش‌فرض برای نمونه‌های Edge Microgateway که به تازگی مقداردهی اولیه شده‌اند

وقتی edgemicro init اجرا می‌کنید، فایل پیکربندی سیستم (که در بالا توضیح داده شد)، default.yaml ، در دایرکتوری ~/.edgemicro قرار می‌گیرد.

اگر فایل پیکربندی را در ~/.edgemicro تغییر دهید، باید Edge Microgateway را دوباره پیکربندی و مجدداً راه‌اندازی کنید:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

فایل پیکربندی پویا برای نمونه‌های در حال اجرا

وقتی edgemicro configure [params] اجرا می‌کنید، یک فایل پیکربندی پویا در ~/.edgemicro ایجاد می‌شود. این فایل طبق این الگو نامگذاری می‌شود: org - env -config.yaml ، که در آن org و env نام‌های سازمان و محیط Apigee Edge شما هستند. می‌توانید از این فایل برای ایجاد تغییرات پیکربندی استفاده کنید و سپس آنها را با زمان خرابی صفر مجدداً بارگذاری کنید. به عنوان مثال، اگر افزونه‌ای را اضافه و پیکربندی کنید، می‌توانید پیکربندی را بدون هیچ گونه خرابی، همانطور که در زیر توضیح داده شده است، مجدداً بارگذاری کنید.

اگر Edge Microgateway در حال اجرا باشد (گزینه بدون قطعی):

  1. پیکربندی Edge Microgateway را مجدداً بارگذاری کنید:
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    کجا:

    • $ORG نام سازمان Edge شما است (شما باید مدیر سازمان باشید).
    • $ENV ‎ یک محیط در سازمان شما است (مانند "test" یا "prod").
    • $KEY ‎ کلیدی است که قبلاً توسط دستور configure برگردانده شده است.
    • $SECRET ‎ کلیدی است که قبلاً توسط دستور configure برگردانده شده است.

    برای مثال

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

اگر Edge Microgateway متوقف شود:

  1. میکروگیت‌وی اج را مجدداً راه‌اندازی کنید:
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    کجا:

    • $ORG نام سازمان Edge شما است (شما باید مدیر سازمان باشید).
    • $ENV محیطی در سازمان شماست (مانند "test" یا "prod").
    • $KEY ‎ کلیدی است که قبلاً توسط دستور configure برگردانده شده است.
    • $SECRET ‎ کلیدی است که قبلاً توسط دستور configure برگردانده شده است.

    برای مثال:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

در اینجا یک نمونه فایل پیکربندی وجود دارد. برای جزئیات بیشتر در مورد تنظیمات فایل پیکربندی، به مرجع پیکربندی Edge Microgateway مراجعه کنید.

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

تنظیم متغیرهای محیطی

دستورات رابط خط فرمان که به مقادیری برای سازمان و محیط Edge شما نیاز دارند، و کلید و رمز مورد نیاز برای شروع Edge Microgateway را می‌توان در این متغیرهای محیطی ذخیره کرد:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

تنظیم این متغیرها اختیاری است. اگر آنها را تنظیم کنید، هنگام استفاده از رابط خط فرمان (CLI) برای پیکربندی و شروع Edge Microgateway نیازی به مشخص کردن مقادیر آنها ندارید.

پیکربندی SSL روی سرور Edge Microgateway

برای آشنایی با پیکربندی TLS در Apigee Edge Microgateway، ویدیوهای زیر را تماشا کنید:

ویدئو توضیحات
پیکربندی TLS یک طرفه به سمت شمال در مورد پیکربندی TLS در Apigee Edge Microgateway اطلاعات کسب کنید. این ویدیو مروری بر TLS و اهمیت آن ارائه می‌دهد، TLS را در Edge Microgateway معرفی می‌کند و نحوه پیکربندی Northbound One-Way TLS را نشان می‌دهد.
پیکربندی TLS دوطرفه Northbound این دومین ویدیو در مورد پیکربندی TLS در Apigee Edge Microgateway است. در این ویدیو نحوه پیکربندی TLS دو طرفه northbound توضیح داده شده است.
پیکربندی TLS یک طرفه و دو طرفه Southbound این سومین ویدیو در مورد پیکربندی TLS در Apigee Edge Microgateway نحوه پیکربندی TLS یک طرفه و دو طرفه به سمت جنوب را توضیح می‌دهد.

شما می‌توانید سرور Microgateway را طوری پیکربندی کنید که از SSL استفاده کند. برای مثال، با پیکربندی SSL، می‌توانید APIها را از طریق Edge Microgateway با پروتکل "https" فراخوانی کنید، مانند این:

https://localhost:8000/myapi

برای پیکربندی SSL روی سرور Microgateway، مراحل زیر را دنبال کنید:

  1. با استفاده از ابزار openssl یا هر روش دیگری که ترجیح می‌دهید، یک گواهی SSL و کلید ایجاد یا دریافت کنید.
  2. ویژگی edgemicro:ssl را به فایل پیکربندی Edge Microgateway اضافه کنید. برای لیست کامل گزینه‌ها، به جدول زیر مراجعه کنید. به عنوان مثال:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. Edge Microgateway را مجدداً راه‌اندازی کنید. بسته به اینکه کدام فایل پیکربندی را ویرایش کرده‌اید، مراحل ذکر شده در «ایجاد تغییرات پیکربندی» را دنبال کنید: فایل پیش‌فرض یا فایل پیکربندی زمان اجرا.

در اینجا مثالی از بخش edgemicro از فایل پیکربندی، با پیکربندی SSL آورده شده است:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

در اینجا لیستی از تمام گزینه‌های سرور پشتیبانی شده آمده است:

گزینه توضیحات
key مسیر فایل ca.key (با فرمت PEM).
cert مسیر فایل ca.cert (با فرمت PEM).
pfx مسیر فایل pfx حاوی کلید خصوصی، گواهی و گواهی‌های CA کلاینت با فرمت PFX.
passphrase رشته‌ای حاوی عبارت عبور برای کلید خصوصی یا PFX.
ca مسیر فایلی که حاوی فهرستی از گواهی‌های معتبر با فرمت PEM است.
ciphers رشته‌ای که رمزهای مورد استفاده را توصیف می‌کند و با ":" از هم جدا شده است.
rejectUnauthorized اگر درست باشد، گواهی سرور با لیست CA های ارائه شده تأیید می‌شود. اگر تأیید ناموفق باشد، خطایی برگردانده می‌شود.
secureProtocol متد SSL مورد استفاده. برای مثال، SSLv3_method برای مجبور کردن SSL به نسخه ۳.
servername نام سرور برای پسوند TLS مربوط به SNI (نشانگر نام سرور).
requestCert برای SSL دوطرفه درست و برای SSL یکطرفه نادرست است.

استفاده از گزینه‌های SSL/TLS کلاینت

می‌توانید Edge Microgateway را طوری پیکربندی کنید که هنگام اتصال به نقاط انتهایی هدف، یک کلاینت TLS یا SSL باشد. در فایل پیکربندی Microgateway، از عنصر targets برای تنظیم گزینه‌های SSL/TLS استفاده کنید.

این مثال تنظیماتی را ارائه می‌دهد که برای همه میزبان‌ها اعمال خواهد شد:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

در این مثال، تنظیمات فقط روی میزبان مشخص شده اعمال می‌شوند:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

در اینجا مثالی برای TLS آورده شده است:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

در اینجا لیستی از تمام گزینه‌های کلاینت پشتیبانی‌شده آمده است:

گزینه توضیحات
pfx مسیر فایل pfx حاوی کلید خصوصی، گواهی و گواهی‌های CA کلاینت با فرمت PFX.
key مسیر فایل ca.key (با فرمت PEM).
passphrase رشته‌ای حاوی عبارت عبور برای کلید خصوصی یا PFX.
cert مسیر فایل ca.cert (با فرمت PEM).
ca مسیر فایلی که حاوی فهرستی از گواهی‌های معتبر با فرمت PEM است.
ciphers رشته‌ای که رمزهای مورد استفاده را توصیف می‌کند و با ":" از هم جدا شده است.
rejectUnauthorized اگر درست باشد، گواهی سرور با لیست CA های ارائه شده تأیید می‌شود. اگر تأیید ناموفق باشد، خطایی برگردانده می‌شود.
secureProtocol متد SSL مورد استفاده. برای مثال، SSLv3_method برای مجبور کردن SSL به نسخه ۳.
servername نام سرور برای پسوند TLS مربوط به SNI (نشانگر نام سرور).

سفارشی‌سازی پروکسی edgemicro-auth

به طور پیش‌فرض، Edge Microgateway از یک پروکسی مستقر در Apigee Edge برای احراز هویت OAuth2 استفاده می‌کند. این پروکسی زمانی که برای اولین بار edgemicro configure اجرا می‌کنید، مستقر می‌شود. می‌توانید پیکربندی پیش‌فرض این پروکسی را تغییر دهید تا پشتیبانی از ادعاهای سفارشی را به JSON Web Token (JWT) اضافه کنید، انقضای توکن را پیکربندی کنید و توکن‌های تازه‌سازی ایجاد کنید. برای جزئیات بیشتر، به صفحه edgemicro-auth در GitHub مراجعه کنید.

استفاده از یک سرویس احراز هویت سفارشی

به طور پیش‌فرض، Edge Microgateway از یک پروکسی مستقر در Apigee Edge برای احراز هویت OAuth2 استفاده می‌کند. این پروکسی هنگام اجرای اولیه edgemicro configure مستقر می‌شود. به طور پیش‌فرض، URL این پروکسی در فایل پیکربندی Edge Microgateway به شرح زیر مشخص شده است:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

اگر می‌خواهید از سرویس سفارشی خودتان برای مدیریت احراز هویت استفاده کنید، مقدار authUri را در فایل پیکربندی تغییر دهید تا به سرویس شما اشاره کند. برای مثال، ممکن است سرویسی داشته باشید که از LDAP برای تأیید هویت استفاده می‌کند.

مدیریت فایل‌های لاگ

Edge Microgateway اطلاعات مربوط به هر درخواست و پاسخ را ثبت می‌کند. فایل‌های گزارش، اطلاعات مفیدی را برای اشکال‌زدایی و عیب‌یابی ارائه می‌دهند.

جایی که فایل‌های لاگ ذخیره می‌شوند

به طور پیش‌فرض، فایل‌های لاگ در مسیر /var/tmp ‎ ذخیره می‌شوند.

نحوه تغییر دایرکتوری پیش‌فرض فایل‌های لاگ

دایرکتوری که فایل‌های لاگ در آن ذخیره می‌شوند، در فایل پیکربندی Edge Microgateway مشخص شده است. همچنین به بخش «ایجاد تغییرات پیکربندی» مراجعه کنید.

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

مقدار dir را تغییر دهید تا دایرکتوری فایل لاگ متفاوتی مشخص شود.

ارسال لاگ‌ها به کنسول

شما می‌توانید ثبت وقایع را طوری پیکربندی کنید که اطلاعات گزارش به جای ارسال به یک فایل گزارش، به خروجی استاندارد ارسال شود. پرچم to_console را به صورت زیر روی true تنظیم کنید:

edgemicro:
  logging:
    to_console: true

با این تنظیم، گزارش‌ها به خروجی استاندارد ارسال می‌شوند. در حال حاضر، نمی‌توانید گزارش‌ها را هم به خروجی استاندارد و هم به یک فایل گزارش ارسال کنید.

نحوه تنظیم سطح ثبت وقایع

شما می‌توانید این سطوح ثبت وقایع را تنظیم کنید: info ، warn و error . سطح info توصیه می‌شود. این سطح، تمام درخواست‌ها و پاسخ‌های API را ثبت می‌کند و پیش‌فرض است.

نحوه تغییر فواصل لاگ

می‌توانید این فواصل را در فایل پیکربندی Edge Microgateway پیکربندی کنید. همچنین به بخش «ایجاد تغییرات پیکربندی» مراجعه کنید.

ویژگی‌های قابل تنظیم عبارتند از:

  • stats_log_interval : (پیش‌فرض: ۶۰) فاصله زمانی، بر حسب ثانیه، که رکورد آمار در فایل لاگ API نوشته می‌شود.
  • rotate_interval : (پیش‌فرض: ۲۴) فاصله زمانی، بر حسب ساعت، که فایل‌های لاگ چرخانده می‌شوند. برای مثال:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

شیوه‌های خوب نگهداری فایل‌های لاگ

از آنجایی که داده‌های فایل لاگ به مرور زمان انباشته می‌شوند، Apigee توصیه می‌کند که شیوه‌های زیر را اتخاذ کنید:

  • از آنجا که فایل‌های لاگ می‌توانند بسیار بزرگ شوند، مطمئن شوید که دایرکتوری فایل لاگ فضای کافی دارد. به بخش‌های زیر مراجعه کنید: محل ذخیره فایل‌های لاگ و نحوه تغییر دایرکتوری پیش‌فرض فایل لاگ .
  • حداقل هفته‌ای یک بار، فایل‌های لاگ را حذف یا به یک پوشه بایگانی جداگانه منتقل کنید.
  • اگر سیاست شما حذف لاگ‌ها است، می‌توانید از دستور edgemicro log -c در CLI برای حذف (پاک‌سازی) لاگ‌های قدیمی‌تر استفاده کنید.

قرارداد نامگذاری فایل‌های لاگ

هر نمونه Edge Microgateway سه نوع فایل لاگ تولید می‌کند:

  • api - تمام درخواست‌ها و پاسخ‌هایی که از طریق Edge Microgateway جریان دارند را ثبت می‌کند. شمارنده‌های API (آمار) و خطاها نیز در این فایل ثبت می‌شوند.
  • err - هر چیزی که به stderr ارسال می‌شود را ثبت می‌کند.
  • خروجی - هر چیزی که به خروجی استاندارد ارسال شود را ثبت می‌کند.

این قرارداد نامگذاری است:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

برای مثال:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

درباره محتویات فایل لاگ

اضافه شده در: نسخه ۲.۳.۳

به طور پیش‌فرض، سرویس ثبت وقایع، JSON مربوط به پروکسی‌های دانلود شده، محصولات و JSON Web Token (JWT) را حذف می‌کند. اگر می‌خواهید این اشیاء را در فایل‌های گزارش خروجی دهید، هنگام شروع Edge Microgateway، DEBUG=* را تنظیم کنید. به عنوان مثال:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

محتویات فایل گزارش "api"

فایل لاگ "api" حاوی اطلاعات دقیقی در مورد جریان درخواست‌ها و پاسخ‌ها از طریق Edge Microgateway است. فایل‌های لاگ "api" به این صورت نامگذاری شده‌اند:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

برای هر درخواستی که به Edge Microgateway ارسال می‌شود، چهار رویداد در فایل گزارش "api" ثبت می‌شود:

  • درخواست دریافتی از مشتری
  • درخواست خروجی به مقصد ارسال می‌شود
  • پاسخ دریافتی از هدف
  • پاسخ خروجی به مشتری

هر یک از این ورودی‌های جداگانه با یک نمادگذاری مختصر نمایش داده شده‌اند تا به فشرده‌تر شدن فایل‌های لاگ کمک کنند. در اینجا چهار ورودی نمونه که هر یک از چهار رویداد را نشان می‌دهند، آورده شده است. در فایل لاگ، آنها به این شکل هستند (شماره خطوط فقط برای ارجاع در سند هستند، آنها در فایل لاگ ظاهر نمی‌شوند).

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

بیایید یکی یکی به آنها نگاه کنیم:

۱. نمونه درخواست دریافتی از مشتری:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • ۱۴۳۶۴۰۳۸۸۸۶۵۱ - مهر تاریخ یونیکس
  • اطلاعات - بستگی به متن دارد. بسته به سطح لاگ، می‌تواند اطلاعات، هشدار یا خطا باشد. می‌تواند برای یک رکورد آمار، آمار، هشدار یا خطا باشد.
  • req - رویداد را شناسایی می‌کند. در این مورد، از کلاینت درخواست می‌شود.
  • m - فعل HTTP استفاده شده در درخواست.
  • u - بخشی از URL که پس از مسیر پایه قرار می‌گیرد.
  • h - شماره میزبان و پورتی که Edge Microgateway در آن مشغول گوش دادن است.
  • r - میزبان و پورت راه دور که درخواست کلاینت از آنجا ارسال شده است.
  • i - شناسه درخواست. هر چهار ورودی رویداد این شناسه را به اشتراک می‌گذارند. به هر درخواست یک شناسه درخواست منحصر به فرد اختصاص داده می‌شود. مرتبط کردن رکوردهای لاگ بر اساس شناسه درخواست می‌تواند بینش ارزشمندی در مورد تأخیر هدف ارائه دهد.
  • d - مدت زمان بر حسب میلی‌ثانیه از زمان دریافت درخواست توسط Edge Microgateway. در مثال بالا، پاسخ هدف برای درخواست 0 پس از 7 میلی‌ثانیه (خط 3) دریافت شد و پاسخ پس از 4 میلی‌ثانیه اضافی (خط 4) به کلاینت ارسال شد. به عبارت دیگر، کل تأخیر درخواست 11 میلی‌ثانیه بود که از این تعداد 7 میلی‌ثانیه توسط هدف و 4 میلی‌ثانیه توسط خود Edge Microgateway گرفته شده است.

۲. نمونه درخواست خروجی ارسال شده به هدف:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • ۱۴۳۶۴۰۳۸۸۸۶۵۱ - مهر تاریخ یونیکس
  • اطلاعات - بستگی به متن دارد. بسته به سطح لاگ، می‌تواند اطلاعات، هشدار یا خطا باشد. می‌تواند برای یک رکورد آمار، آمار، هشدار یا خطا باشد.
  • treq - رویداد را شناسایی می‌کند. در این مورد، درخواست هدف.
  • m - فعل HTTP استفاده شده در درخواست هدف.
  • u - بخشی از URL که پس از مسیر پایه قرار می‌گیرد.
  • h - شماره میزبان و پورت هدف backend.
  • i - شناسه‌ی ورودی لاگ. هر چهار ورودی رویداد این شناسه را به اشتراک می‌گذارند.

۳. نمونه‌ای از پاسخ دریافتی از هدف

1436403888672 info tres s=200, d=7, i=0

۱۴۳۶۴۰۳۸۸۸۶۵۱ - مهر تاریخ یونیکس

  • اطلاعات - بستگی به متن دارد. بسته به سطح لاگ، می‌تواند اطلاعات، هشدار یا خطا باشد. می‌تواند برای یک رکورد آمار، آمار، هشدار یا خطا باشد.
  • tres - رویداد را شناسایی می‌کند. در این مورد، پاسخ هدف.
  • s - وضعیت پاسخ HTTP.
  • d - مدت زمان بر حسب میلی‌ثانیه. مدت زمان صرف شده برای فراخوانی API توسط هدف.
  • i - شناسه‌ی ورودی لاگ. هر چهار ورودی رویداد این شناسه را به اشتراک می‌گذارند.

۴. نمونه پاسخ ارسالی به مشتری

1436403888676 info res s=200, d=11, i=0

۱۴۳۶۴۰۳۸۸۸۶۵۱ - مهر تاریخ یونیکس

  • اطلاعات - بستگی به متن دارد. بسته به سطح لاگ، می‌تواند اطلاعات، هشدار یا خطا باشد. می‌تواند برای یک رکورد آمار، آمار، هشدار یا خطا باشد.
  • res - رویداد را شناسایی می‌کند. در این مورد، پاسخ به کلاینت.
  • s - وضعیت پاسخ HTTP.
  • d - مدت زمان بر حسب میلی‌ثانیه. این کل زمان صرف شده برای فراخوانی API است، شامل زمان صرف شده توسط API هدف و زمان صرف شده توسط خود Edge Microgateway.
  • i - شناسه‌ی ورودی لاگ. هر چهار ورودی رویداد این شناسه را به اشتراک می‌گذارند.

برنامه زمانبندی فایل لاگ

فایل‌های لاگ در بازه زمانی مشخص شده توسط ویژگی پیکربندی rotate_interval چرخش می‌یابند. ورودی‌ها تا زمان انقضای بازه چرخش، به همان فایل لاگ اضافه می‌شوند. با این حال، هر بار که Edge Microgateway مجدداً راه‌اندازی می‌شود، یک UID جدید دریافت می‌کند و مجموعه‌ای جدید از فایل‌های لاگ را با این UID ایجاد می‌کند. همچنین به شیوه‌های خوب نگهداری فایل لاگ مراجعه کنید.

پیام‌های خطا

برخی از ورودی‌های لاگ حاوی پیام‌های خطا هستند. برای کمک به شناسایی محل و دلیل وقوع خطاها، به مرجع خطای Edge Microgateway مراجعه کنید.

مرجع پیکربندی Edge Microgateway

محل فایل پیکربندی

ویژگی‌های پیکربندی شرح داده شده در این بخش در فایل پیکربندی Edge Microgateway قرار دارند. همچنین به بخش «ایجاد تغییرات پیکربندی» مراجعه کنید.

ویژگی‌های edge_config

این تنظیمات برای پیکربندی تعامل بین نمونه Edge Microgateway و Apigee Edge استفاده می‌شوند.

  • bootstrap : (پیش‌فرض: هیچ) یک URL که به یک سرویس خاص Edge Microgateway که روی Apigee Edge اجرا می‌شود اشاره می‌کند. Edge Microgateway از این سرویس برای ارتباط با Apigee Edge استفاده می‌کند. این URL هنگام اجرای دستور تولید جفت کلید عمومی/خصوصی: edgemicro genkeys بازگردانده می‌شود. برای جزئیات بیشتر به بخش راه‌اندازی و پیکربندی Edge Microgateway مراجعه کنید.
  • jwt_public_key : (پیش‌فرض: هیچ) یک URL که به پروکسی Edge Microgateway که روی Apigee Edge مستقر است اشاره می‌کند. این پروکسی به عنوان یک نقطه پایانی احراز هویت برای صدور توکن‌های دسترسی امضا شده به کلاینت‌ها عمل می‌کند. این URL هنگام اجرای دستور برای استقرار پروکسی برگردانده می‌شود: edgemicro configure . برای جزئیات بیشتر به بخش راه‌اندازی و پیکربندی Edge Microgateway مراجعه کنید.
  • quotaUri : اگر می‌خواهید سهمیه‌ها را از طریق پروکسی edgemicro-auth که در سازمان شما مستقر شده است، مدیریت کنید، این ویژگی پیکربندی را تنظیم کنید. اگر این ویژگی تنظیم نشده باشد، نقطه پایانی سهمیه به طور پیش‌فرض روی نقطه پایانی داخلی Edge Microgateway قرار می‌گیرد.
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

ویژگی‌های edgemicro

این تنظیمات، فرآیند Edge Microgateway را پیکربندی می‌کنند.

  • پورت : (پیش‌فرض: ۸۰۰۰) شماره پورتی که پردازش Edge Microgateway به آن گوش می‌دهد.
  • max_connections : (پیش‌فرض: -1) حداکثر تعداد اتصالات ورودی همزمان که Edge Microgateway می‌تواند دریافت کند را مشخص می‌کند. اگر از این تعداد تجاوز شود، وضعیت زیر برگردانده می‌شود:

    res.statusCode = 429; // Too many requests
  • max_connections_hard : (پیش‌فرض: -1) حداکثر تعداد درخواست‌های همزمان که Edge Microgateway می‌تواند قبل از قطع اتصال دریافت کند. این تنظیم برای خنثی کردن حملات انکار سرویس در نظر گرفته شده است. معمولاً آن را روی عددی بزرگتر از max_connections تنظیم کنید.
  • ثبت وقایع :
    • سطح : (پیش‌فرض: خطا)
      • info - تمام درخواست‌ها و پاسخ‌هایی را که از طریق یک نمونه Edge Microgateway جریان دارند، ثبت می‌کند.
      • هشدار - فقط پیام‌های هشدار را ثبت می‌کند.
      • error - فقط پیام‌های خطا را ثبت می‌کند.
    • dir : (پیش‌فرض: /var/tmp) دایرکتوری که فایل‌های لاگ در آن ذخیره می‌شوند.
    • stats_log_interval : (پیش‌فرض: ۶۰) فاصله زمانی، بر حسب ثانیه، که رکورد آمار در فایل لاگ API نوشته می‌شود.
    • rotate_interval : (پیش‌فرض: ۲۴) فاصله زمانی، بر حسب ساعت، که فایل‌های لاگ چرخانده می‌شوند.
  • افزونه‌ها : افزونه‌ها به Edge Microgateway قابلیت اضافه می‌کنند. برای جزئیات بیشتر در مورد توسعه افزونه‌ها، به بخش توسعه افزونه‌های سفارشی مراجعه کنید.
  • dir : یک مسیر نسبی از دایرکتوری ./gateway به دایرکتوری ./plugins، یا یک مسیر مطلق.
  • sequence : فهرستی از ماژول‌های افزونه برای اضافه کردن به نمونه Edge Microgateway شما. ماژول‌ها به ترتیبی که در اینجا مشخص شده‌اند، اجرا خواهند شد.
  • اشکال‌زدایی: اشکال‌زدایی از راه دور را به فرآیند Edge Microgateway اضافه می‌کند.
    • پورت : شماره پورتی که باید به آن گوش دهید. برای مثال، اشکال‌زدای IDE خود را طوری تنظیم کنید که به این پورت گوش دهد.
    • args : آرگومان‌هایی برای فرآیند اشکال‌زدایی. برای مثال: args --nolazy
  • config_change_poll_interval: (پیش‌فرض: ۶۰۰ ثانیه) Edge Microgateway پیکربندی جدیدی را به صورت دوره‌ای بارگذاری می‌کند و در صورت تغییر هر چیزی، بارگذاری مجدد را اجرا می‌کند. این نظرسنجی هرگونه تغییر ایجاد شده در Edge (تغییر در محصولات، پروکسی‌های آگاه از microgateway و غیره) و همچنین تغییرات ایجاد شده در فایل پیکربندی محلی را ثبت می‌کند.
  • disable_config_poll_interval: (پیش‌فرض: false) برای غیرفعال کردن نظرسنجی خودکار تغییر، روی true تنظیم کنید.
  • request_timeout : برای درخواست‌های هدف، مهلت زمانی تعیین می‌کند. این مهلت زمانی بر حسب ثانیه تنظیم می‌شود. در صورت وقوع مهلت زمانی، Edge Microgateway با کد وضعیت ۵۰۴ پاسخ می‌دهد. (نسخه ۲.۴.x اضافه شده است)
  • keep_alive_timeout : این ویژگی به شما امکان می‌دهد تا زمان انقضای Edge Microgateway را (به میلی‌ثانیه) تنظیم کنید. (پیش‌فرض: ۵ ثانیه) (اضافه شده در نسخه ۳.۰.۶)
  • headers_timeout : این ویژگی مدت زمانی (برحسب میلی‌ثانیه) را که تجزیه‌کننده HTTP برای دریافت کل هدرهای HTTP منتظر می‌ماند، محدود می‌کند.

    برای مثال:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    این پارامتر به صورت داخلی، ویژگی Server.headersTimeout مربوط به Node.js را برای درخواست‌ها تنظیم می‌کند. (پیش‌فرض: ۵ ثانیه بیشتر از زمان تعیین‌شده با edgemicro.keep_alive_timeout . این تنظیم پیش‌فرض مانع از قطع اشتباه اتصال توسط متعادل‌کننده‌های بار یا پروکسی‌ها می‌شود.) (نسخه ۳.۱.۱ اضافه شده است)

  • noRuleMatchAction: (رشته) اقدامی که باید انجام شود (اجازه یا رد دسترسی) اگر قانون تطبیق مشخص شده در افزونه accesscontrol برطرف نشود (تطبیق نیافته باشد). مقادیر معتبر: ALLOW یا DENY پیش‌فرض: ALLOW (اضافه شده: نسخه ۳.۱.۷)
  • enableAnalytics: (پیش‌فرض: true) برای جلوگیری از بارگذاری افزونه‌ی Analytics، این ویژگی را روی false تنظیم کنید. در این حالت، هیچ فراخوانی برای Apigee Edge analytics انجام نخواهد شد. اگر روی true تنظیم شود یا زمانی که این ویژگی ارائه نشود، افزونه‌ی analytics طبق معمول کار خواهد کرد. برای جزئیات بیشتر به ویژگی‌های edgemicro مراجعه کنید. (نسخه‌ی ۳.۱.۸ اضافه شد).

    مثال:

    edgemicro
      enableAnalytics=false|true

ویژگی‌های هدرها

این تنظیمات نحوه برخورد با هدرهای HTTP خاص را پیکربندی می‌کنند.

  • x-forwarded-for : (پیش‌فرض: true) برای جلوگیری از ارسال هدرهای x-forwarded-for به مقصد، روی false تنظیم شود. توجه داشته باشید که اگر هدر x-forwarded-for در درخواست باشد، مقدار آن در Edge Analytics برابر با مقدار client-ip تنظیم می‌شود.
  • x-forwarded-host : (پیش‌فرض: true) برای جلوگیری از ارسال هدرهای x-forwarded-host به مقصد، روی false تنظیم شود.
  • x-request-id : (پیش‌فرض: true) برای جلوگیری از ارسال هدرهای x-request-id به مقصد، روی false تنظیم می‌شود.
  • x-response-time : (پیش‌فرض: true) برای جلوگیری از ارسال هدرهای x-response-time به مقصد، روی false تنظیم شود.
  • via : (پیش‌فرض: true) برای جلوگیری از ارسال هدرهای via به مقصد، روی false تنظیم می‌شود.

ویژگی‌های oauth

این تنظیمات نحوه‌ی اعمال احراز هویت کلاینت توسط Edge Microgateway را پیکربندی می‌کنند.

  • allowNoAuthorization : (پیش‌فرض: false) اگر روی true تنظیم شود، فراخوانی‌های API اجازه دارند بدون هیچ سربرگ Authorization از Edge Microgateway عبور کنند. برای نیاز به سربرگ Authorization (پیش‌فرض)، این مقدار را روی false تنظیم کنید.
  • allowInvalidAuthorization : (پیش‌فرض: false) اگر روی true تنظیم شود، در صورتی که توکن ارسالی در هدر Authorization نامعتبر یا منقضی شده باشد، فراخوانی‌های API مجاز به عبور هستند. برای درخواست توکن‌های معتبر، این مقدار را روی false تنظیم کنید (پیش‌فرض).
  • authorization-header : (پیش‌فرض: Authorization: Bearer) هدری که برای ارسال توکن دسترسی به Edge Microgateway استفاده می‌شود. در مواردی که هدف نیاز به استفاده از هدر Authorization برای هدف دیگری دارد، می‌توانید پیش‌فرض را تغییر دهید.
  • api-key-header : (پیش‌فرض: x-api-key) نام هدر یا پارامتر پرس‌وجو که برای ارسال کلید API به Edge Microgateway استفاده می‌شود. همچنین به بخش استفاده از کلید API مراجعه کنید.
  • keep-authorization-header : (پیش‌فرض: false) اگر روی true تنظیم شود، هدر Authorization ارسال‌شده در درخواست به مقصد منتقل می‌شود (حفظ می‌شود).
  • allowOAuthOnly -- اگر روی true تنظیم شود، هر API باید یک هدر مجوز با یک Bearer Access Token داشته باشد. به شما امکان می‌دهد فقط مدل امنیتی OAuth را مجاز کنید (ضمن حفظ سازگاری با نسخه‌های قبلی). (اضافه شده در نسخه ۲.۴.x)
  • allowAPIKeyOnly -- اگر روی true تنظیم شود، هر API باید یک هدر x-api-key (یا یک مکان سفارشی) با یک کلید API داشته باشد. به شما امکان می‌دهد فقط مدل امنیتی کلید API را مجاز کنید (ضمن حفظ سازگاری با نسخه‌های قبلی). (اضافه شده در نسخه ۲.۴.x)
  • gracePeriod -- این پارامتر به جلوگیری از خطاهای ناشی از اختلافات جزئی بین ساعت سیستم شما و زمان‌های Not Before (nbf) یا Issued At (iat) مشخص شده در توکن مجوز JWT کمک می‌کند. این پارامتر را روی تعداد ثانیه‌ها تنظیم کنید تا چنین اختلافاتی در نظر گرفته شود. (اضافه شده در 2.5.7)

ویژگی‌های خاص افزونه

برای جزئیات بیشتر در مورد ویژگی‌های قابل تنظیم برای هر افزونه، به بخش «استفاده از افزونه‌ها» مراجعه کنید.

فیلتر کردن پروکسی‌ها

شما می‌توانید پروکسی‌های آگاه از microgateway که یک نمونه Edge Microgateway پردازش می‌کند را فیلتر کنید. وقتی Edge Microgateway شروع به کار می‌کند، تمام پروکسی‌های آگاه از microgateway را در سازمانی که با آن مرتبط است دانلود می‌کند. از پیکربندی زیر برای محدود کردن پروکسی‌هایی که microgateway پردازش خواهد کرد استفاده کنید. به عنوان مثال، این پیکربندی پروکسی‌هایی را که microgateway پردازش خواهد کرد به سه عدد محدود می‌کند: edgemicro_proxy-1 ، edgemicro_proxy-2 و edgemicro_proxy-3 :

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

فیلتر کردن محصولات بر اساس نام

از پیکربندی زیر برای محدود کردن تعداد محصولات API که Edge Microgateway دانلود و پردازش می‌کند، استفاده کنید. برای فیلتر کردن محصولات دانلود شده، پارامتر query productnamefilter به API /products که در فایل *.config.yaml Edge Microgateway فهرست شده است، اضافه کنید. به عنوان مثال:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

توجه داشته باشید که مقدار پارامتر پرس‌وجو باید در قالب عبارت منظم مشخص شده و به صورت URL کدگذاری شود. برای مثال، عبارت منظم ^[Ee]dgemicro.*$ نام‌هایی مانند: "edgemicro-test-1"، "edgemicro_demo" و "Edgemicro_New_Demo" را دریافت می‌کند. مقدار کدگذاری شده URL که برای استفاده در پارامتر پرس‌وجو مناسب است، عبارت است از: %5E%5BEe%5Ddgemicro.%2A%24 .

خروجی اشکال‌زدایی زیر نشان می‌دهد که فقط محصولات فیلتر شده دانلود شده‌اند:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

فیلتر کردن محصولات بر اساس ویژگی‌های سفارشی

برای فیلتر کردن محصولات بر اساس ویژگی‌های سفارشی:

  1. در رابط کاربری Edge، پروکسی edgemicro_auth را در سازمان/محیطی که Edge Microgateway را پیکربندی کرده‌اید، انتخاب کنید.
  2. در تب Develop، پالیسی JavaCallout را در ویرایشگر باز کنید.
  3. یک ویژگی سفارشی با کلید products.filter.attributes به همراه لیستی از نام ویژگی‌ها که با کاما از هم جدا شده‌اند، اضافه کنید. فقط محصولاتی که حاوی هر یک از نام‌های ویژگی سفارشی باشند، به Edge Microgateway بازگردانده می‌شوند.
  4. شما می‌توانید به صورت اختیاری بررسی فعال بودن محصول برای محیط فعلی را با تنظیم ویژگی سفارشی products.filter.env.enable به false غیرفعال کنید (پیش‌فرض true است).
  5. (فقط ابر خصوصی) اگر از Edge برای ابر خصوصی استفاده می‌کنید، ویژگی org.noncps را روی true تنظیم کنید تا محصولات را برای محیط‌های غیر CPS دریافت کنید.
  6. برای مثال:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>

پیکربندی فرکانس ارسال گزارش‌های تحلیلی

از این پارامترهای پیکربندی برای کنترل فرکانس ارسال داده‌های تحلیلی توسط Edge Microgateway به Apigee استفاده کنید:

  • bufferSize (اختیاری): حداکثر تعداد رکوردهای تحلیلی که بافر می‌تواند قبل از شروع حذف قدیمی‌ترین رکوردها در خود نگه دارد. پیش‌فرض: ۱۰۰۰۰
  • batchSize (اختیاری): حداکثر اندازه یک دسته از رکوردهای تحلیلی ارسال شده به Apigee. پیش‌فرض: ۵۰۰
  • flushInterval (اختیاری): تعداد میلی‌ثانیه‌ها بین هر بار خالی کردن دسته‌ای از رکوردهای تحلیلی ارسال شده به Apigee. پیش‌فرض: ۵۰۰۰

برای مثال:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

پنهان کردن داده‌های تحلیلی

پیکربندی زیر از نمایش اطلاعات مسیر درخواست در Edge analytics جلوگیری می‌کند. برای پنهان کردن URI درخواست و/یا مسیر درخواست، موارد زیر را به پیکربندی microgateway اضافه کنید. توجه داشته باشید که URI شامل نام میزبان و بخش‌های مسیر درخواست است.

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

جداسازی فراخوانی‌های API در Edge Analytics

شما می‌توانید افزونه‌ی آنالیتیکس را طوری پیکربندی کنید که یک مسیر API خاص را جدا کند تا به عنوان یک پروکسی جداگانه در داشبوردهای Edge Analytics ظاهر شود. به عنوان مثال، می‌توانید یک API بررسی سلامت را در داشبورد جدا کنید تا از اشتباه گرفته شدن آن با فراخوانی‌های پروکسی API واقعی جلوگیری شود. در داشبورد آنالیتیکس، پروکسی‌های جدا شده از این الگوی نامگذاری پیروی می‌کنند:

edgemicro_proxyname-health

تصویر زیر دو پروکسی مجزا را در داشبورد آنالیتیکس نشان می‌دهد: edgemicro_hello-health و edgemicro_mock-health :

از این پارامترها برای جداسازی مسیرهای نسبی و مطلق در داشبورد آنالیتیکس به عنوان پروکسی‌های جداگانه استفاده کنید:

  • relativePath (اختیاری): یک مسیر نسبی برای جداسازی در داشبورد Analytics مشخص می‌کند. برای مثال، اگر /healthcheck را مشخص کنید، تمام فراخوانی‌های API که شامل مسیر /healthcheck هستند، در داشبورد به صورت edgemicro_ proxyname -health ظاهر می‌شوند. توجه داشته باشید که این پرچم، مسیر پایه پروکسی را نادیده می‌گیرد. برای جداسازی بر اساس یک مسیر کامل، از جمله مسیر پایه، از پرچم proxyPath استفاده کنید.
  • proxyPath (اختیاری): یک مسیر پروکسی کامل API، شامل مسیر پایه پروکسی، را برای جداسازی در داشبورد تحلیلی مشخص می‌کند. برای مثال، اگر /mocktarget/healthcheck مشخص کنید، که در آن /mocktarget مسیر پایه پروکسی است، تمام فراخوانی‌های API با مسیر /mocktarget/healthcheck در داشبورد به صورت edgemicro_ proxyname -health ظاهر می‌شوند.

برای مثال، در پیکربندی زیر، هر مسیر API که شامل /healthcheck باشد، توسط افزونه analytics تفکیک خواهد شد. این یعنی، /foo/healthcheck و /foo/bar/healthcheck به عنوان یک پروکسی جداگانه به نام edgemicro_ proxyname -health در داشبورد analytics تفکیک می‌شوند.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

در پیکربندی زیر، هر API با مسیر پروکسی /mocktarget/healthcheck به عنوان یک پروکسی جداگانه به نام edgemicro_ proxyname -health در داشبورد تحلیلی تفکیک خواهد شد.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

راه‌اندازی Edge Microgateway پشت فایروال شرکت

برای ارتباط با Apigee Edge از پروکسی HTTP استفاده کنید

در نسخه ۳.۱.۲ اضافه شد.

برای استفاده از پروکسی HTTP برای ارتباط بین Edge Microgateway و Apigee Edge، موارد زیر را انجام دهید:

  1. متغیرهای محیطی HTTP_PROXY ، HTTPS_PROXY و NO_PROXY را تنظیم کنید. این متغیرها میزبان‌های هر پروکسی HTTP را که می‌خواهید برای ارتباط با Apigee Edge استفاده کنید، یا میزبان‌هایی که نباید ارتباط با Apigee Edge را مدیریت کنند، کنترل می‌کنند. برای مثال:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    توجه داشته باشید که NO_PROXY می‌تواند فهرستی از دامنه‌هایی باشد که Edge Microgateway نباید به آنها پروکسی ارسال کند و با کاما از هم جدا شده باشند.

    برای اطلاعات بیشتر در مورد این متغیرها، به https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables مراجعه کنید.

  2. Edge Microgateway را مجدداً راه اندازی کنید.

استفاده از پروکسی HTTP برای ارتباط با هدف

در نسخه ۳.۱.۲ اضافه شد.

برای استفاده از پروکسی HTTP برای ارتباط بین Edge Microgateway و اهداف backend، موارد زیر را انجام دهید:

  1. پیکربندی زیر را به فایل پیکربندی microgateway اضافه کنید:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    کجا:

    • tunnel : (اختیاری) وقتی مقدار آن درست باشد، Edge Microgateway از متد HTTP CONNECT برای تونل کردن درخواست‌های HTTP روی یک اتصال TCP واحد استفاده می‌کند. (اگر متغیرهای محیطی، همانطور که در زیر ذکر شده است، برای پیکربندی پروکسی، TLS فعال باشند، نیز همین وضعیت صادق است.) پیش‌فرض: false
    • url : آدرس اینترنتی پروکسی HTTP.
    • bypass : (اختیاری) یک یا چند URL میزبان هدف جدا شده با کاما را مشخص می‌کند که باید از پروکسی HTTP عبور کنند. اگر این ویژگی تنظیم نشده باشد، از متغیر محیطی NO_PROXY برای مشخص کردن URLهای هدفی که باید عبور کنند، استفاده کنید.
    • enabled : اگر true باشد و proxy.url تنظیم شده باشد، از مقدار proxy.url برای پروکسی HTTP استفاده کنید. اگر true باشد و proxy.url تنظیم نشده باشد، از پروکسی‌های مشخص شده در متغیرهای محیطی پروکسی HTTP HTTP_PROXY و HTTPS_PROXY ، همانطور که در بخش «استفاده از پروکسی HTTP برای ارتباط با Apigee Edge» توضیح داده شده است، استفاده کنید.

    برای مثال:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. Edge Microgateway را مجدداً راه اندازی کنید.

استفاده از wildcardها در پروکسی‌های آگاه از Microgateway

شما می‌توانید از یک یا چند کاراکتر "*" در مسیر پایه یک پروکسی edgemicro_* (Microgateway-aware) استفاده کنید. برای مثال، مسیر پایه /team/*/members به ​​کلاینت‌ها اجازه می‌دهد تا بدون نیاز به ایجاد پروکسی‌های API جدید برای پشتیبانی از تیم‌های جدید، https://[host]/team/blue/members و https://[host]/team/green/members را فراخوانی کنند. توجه داشته باشید که /**/ پشتیبانی نمی‌شود.

مهم: Apigee از استفاده از کاراکتر "*" به عنوان اولین عنصر یک مسیر پایه پشتیبانی نمی‌کند. برای مثال، این مورد پشتیبانی نمی‌شود: /*/ search.

کلیدهای چرخشی JWT

مدتی پس از تولید اولیه JWT، ممکن است نیاز به تغییر جفت کلید عمومی/خصوصی ذخیره شده در Edge encryption KVM داشته باشید. این فرآیند تولید یک جفت کلید جدید، چرخش کلید نامیده می‌شود.

نحوه استفاده Edge Microgateway از JWTها

JSON Web Token (JWT) یک استاندارد توکن است که در RFC7519 شرح داده شده است. JWT راهی برای امضای مجموعه‌ای از ادعاها ارائه می‌دهد که می‌تواند به طور قابل اعتمادی توسط گیرنده JWT تأیید شود.

شما می‌توانید با استفاده از رابط خط فرمان (CLI) یک JWT تولید کنید و از آن در هدر Authorization فراخوانی‌های API به جای کلید API استفاده کنید. برای مثال:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

برای اطلاعات بیشتر در مورد تولید JWTها با رابط خط فرمان (CLI)، به بخش «ایجاد توکن» مراجعه کنید.

چرخش کلید چیست؟

مدتی پس از تولید اولیه JWT، ممکن است نیاز به تغییر جفت کلید عمومی/خصوصی ذخیره شده در KVM رمزگذاری شده Edge داشته باشید. این فرآیند تولید یک جفت کلید جدید، چرخش کلید نامیده می‌شود. هنگامی که کلیدها را می‌چرخانید، یک جفت کلید خصوصی/عمومی جدید تولید و در KVM "microgateway" در سازمان/محیط Apigee Edge شما ذخیره می‌شود. علاوه بر این، کلید عمومی قدیمی به همراه مقدار شناسه کلید اصلی آن حفظ می‌شود.

برای تولید یک JWT، Edge از اطلاعات ذخیره شده در KVM رمزگذاری شده استفاده می‌کند. یک KVM به نام microgateway هنگام راه‌اندازی (پیکربندی) اولیه Edge Microgateway ایجاد و با کلیدها پر شده است. کلیدهای موجود در KVM برای امضا و رمزگذاری JWT استفاده می‌شوند.

کلیدهای KVM عبارتند از:

  • private_key - جدیدترین (جدیدترین) کلید خصوصی RSA که برای امضای JWTها استفاده می‌شود.

  • public_key - آخرین (اخیراً ایجاد شده) گواهی که برای تأیید JWT های امضا شده با private_key استفاده می‌شود.

  • private_key_kid - آخرین (آخرین) شناسه کلید خصوصی ایجاد شده. این شناسه کلید با مقدار private_key مرتبط است و برای پشتیبانی از چرخش کلید استفاده می‌شود.

  • public_key1_kid - آخرین (آخرین) شناسه کلید عمومی ایجاد شده. این کلید با مقدار public_key1 مرتبط است و برای پشتیبانی از چرخش کلید استفاده می‌شود. این مقدار همان کلید خصوصی kid است.

  • public_key1 - آخرین (آخرین کلید عمومی ایجاد شده).

وقتی چرخش کلید را انجام می‌دهید، مقادیر کلید موجود در نقشه جایگزین می‌شوند و کلیدهای جدید برای حفظ کلیدهای عمومی قدیمی اضافه می‌شوند. برای مثال:

  • public_key2_kid - شناسه کلید عمومی قدیمی. این کلید با مقدار public_key2 مرتبط است و برای پشتیبانی از چرخش کلید استفاده می‌شود.

  • public_key2 - کلید عمومی قدیمی.

JWT های ارائه شده برای تأیید با استفاده از کلید عمومی جدید تأیید می‌شوند. اگر تأیید ناموفق باشد، از کلید عمومی قدیمی استفاده می‌شود تا زمانی که JWT منقضی شود (پس از بازه token_expiry*، پیش‌فرض 30 دقیقه). به این ترتیب، می‌توانید کلیدها را بدون ایجاد اختلال فوری در ترافیک API، "چرخش" دهید.

نحوه چرخش کلید

این بخش نحوه انجام چرخش کلید را توضیح می‌دهد.

  1. برای ارتقاء KVM، از دستور edgemicro upgradekvm استفاده کنید. برای جزئیات بیشتر در مورد اجرای این دستور، به بخش ارتقاء KVM مراجعه کنید. شما فقط باید این مرحله را یک بار انجام دهید.
  2. برای ارتقاء پروکسی edgemicro-oauth ، از دستور edgemicro upgradeauth استفاده کنید. برای جزئیات بیشتر در مورد اجرای این دستور، به بخش ارتقاء پروکسی edgemicro-auth مراجعه کنید. شما فقط باید این مرحله را یک بار انجام دهید.
  3. خط زیر را به فایل ~/.edgemicro/org-env-config.yaml خود اضافه کنید، که در آن باید همان سازمان و محیطی را که microgateway برای استفاده از آن پیکربندی کرده‌اید، مشخص کنید:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. برای چرخاندن کلیدها، دستور چرخش کلید را اجرا کنید. برای جزئیات بیشتر در مورد این دستور، به «چرخاندن کلیدها» مراجعه کنید.

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    برای مثال:

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

پس از چرخش کلید، Edge چندین کلید را به Edge Microgateway برمی‌گرداند. در مثال زیر توجه داشته باشید که هر کلید یک مقدار منحصر به فرد "kid" (شناسه کلید) دارد. سپس microgateway از این کلیدها برای اعتبارسنجی توکن‌های مجوز استفاده می‌کند. اگر اعتبارسنجی توکن با شکست مواجه شود، microgateway بررسی می‌کند که آیا کلید قدیمی‌تری در مجموعه کلید وجود دارد یا خیر و آن کلید را امتحان می‌کند. قالب کلیدهای برگشتی JSON Web Key (JWK) است. می‌توانید در مورد این قالب در RFC 7517 مطالعه کنید.

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

پیکربندی تأخیر «قبل از»

برای نسخه‌های ۳.۱.۵ و قبل از آن، کلید خصوصی جدید تولید شده توسط دستور rotatekey بلافاصله اعمال می‌شد و توکن‌های جدید تولید شده با کلید خصوصی جدید امضا می‌شدند. با این حال، کلید عمومی جدید فقط هر ۱۰ دقیقه (به طور پیش‌فرض) هنگام به‌روزرسانی پیکربندی میکروگیت‌وی، در دسترس نمونه‌های Edge Microgateway قرار می‌گرفت. به دلیل این تأخیر بین امضای توکن و به‌روزرسانی نمونه میکروگیت‌وی، توکن‌های امضا شده با آخرین کلید تا زمانی که همه نمونه‌ها آخرین کلید عمومی را دریافت کنند، رد می‌شدند.

در مواردی که چندین نمونه میکروگیت‌وی وجود دارد، تأخیر کلید عمومی گاهی منجر به خطاهای زمان اجرا متناوب با وضعیت ۴۰۳ می‌شد، زیرا اعتبارسنجی توکن در یک نمونه انجام می‌شد، اما در نمونه دیگر تا زمانی که همه نمونه‌ها به‌روزرسانی نشوند، با شکست مواجه می‌شد.

از نسخه ۳.۱.۶، یک پرچم جدید در دستور rotatekey به شما امکان می‌دهد تا تأخیری را برای فعال شدن کلید خصوصی جدید مشخص کنید، که به همه نمونه‌های microgateway زمان می‌دهد تا به‌روزرسانی شوند و کلید عمومی جدید را دریافت کنند. پرچم جدید --nbf است که مخفف "قبل از این نیست" است. این پرچم یک مقدار صحیح می‌گیرد که تعداد دقایق لازم برای تأخیر را نشان می‌دهد.

در مثال زیر، تأخیر روی ۱۵ دقیقه تنظیم شده است:

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

توجه داشته باشید که یک روش خوب این است که تأخیر را بیشتر از مقدار پیکربندی config_change_poll_internal تنظیم کنید، که به طور پیش‌فرض 10 دقیقه است. همچنین به ویژگی‌های edgemicro مراجعه کنید.

فیلتر کردن پروکسی‌های دانلود شده

به طور پیش‌فرض، Edge Microgateway تمام پروکسی‌های موجود در سازمان Edge شما را که با پیشوند نامگذاری "edgemicro_" شروع می‌شوند، دانلود می‌کند. می‌توانید این پیش‌فرض را تغییر دهید تا پروکسی‌هایی را دانلود کنید که نام آنها با یک الگو مطابقت دارد.

  1. فایل پیکربندی Edge Micro خود را باز کنید: ~/.edgemicro/org-env-config.yaml
  2. عنصر proxyPattern را در زیر edge_config اضافه کنید. برای مثال، الگوی زیر پروکسی‌هایی مانند edgemicro_foo، edgemicro_fast و edgemicro_first را دانلود می‌کند.
    edge_config:
    …
    proxyPattern: edgemicro_f*

مشخص کردن محصولات بدون پروکسی API

در Apigee Edge، می‌توانید یک محصول API ایجاد کنید که حاوی هیچ پروکسی API نباشد. این پیکربندی محصول به یک کلید API مرتبط با آن محصول اجازه می‌دهد تا با هر پروکسی مستقر در سازمان شما کار کند. از نسخه ۲.۵.۴، Edge Microgateway از این پیکربندی محصول پشتیبانی می‌کند.

اشکال‌زدایی و عیب‌یابی

اتصال به دیباگر

شما می‌توانید Edge Microgateway را با یک اشکال‌زدا، مانند node-inspector ، اجرا کنید. این ابزار برای عیب‌یابی و اشکال‌زدایی افزونه‌های سفارشی مفید است.

  1. Edge Microgateway را در حالت اشکال‌زدایی (debug mode) مجدداً راه‌اندازی کنید. برای انجام این کار، DEBUG=* را به ابتدای دستور start اضافه کنید:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    برای هدایت خروجی اشکال‌زدایی به یک فایل، می‌توانید از این دستور استفاده کنید:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. اشکال‌زدای خود را اجرا کنید و آن را طوری تنظیم کنید که برای فرآیند اشکال‌زدایی به شماره پورت گوش دهد.
  3. اکنون می‌توانید کد Edge Microgateway را قدم به قدم بررسی کنید، نقاط شکست را تنظیم کنید، عبارات را بررسی کنید و غیره.

شما می‌توانید پرچم‌های استاندارد Node.js مربوط به حالت اشکال‌زدایی را مشخص کنید. برای مثال، --nolazy به اشکال‌زدایی کد ناهمزمان کمک می‌کند.

بررسی فایل‌های لاگ

اگر مشکلی دارید، حتماً فایل‌های لاگ را برای جزئیات اجرا و اطلاعات خطا بررسی کنید. برای جزئیات بیشتر، به مدیریت فایل‌های لاگ مراجعه کنید.

استفاده از امنیت کلید API

کلیدهای API مکانیزم ساده‌ای برای احراز هویت کلاینت‌هایی که به Edge Microgateway درخواست می‌دهند، ارائه می‌دهند. شما می‌توانید با کپی کردن مقدار Consumer Key (که به آن Client ID نیز گفته می‌شود) از یک محصول Apigee Edge که شامل پروکسی احراز هویت Edge Microgateway است، یک کلید API دریافت کنید.

ذخیره سازی کلیدها

کلیدهای API با توکن‌های حامل که ذخیره می‌شوند، مبادله می‌شوند. می‌توانید با تنظیم هدر Cache-Control: no-cache در درخواست‌های ورودی به Edge Microgateway، ذخیره سازی را غیرفعال کنید.

استفاده از کلید API

شما می‌توانید کلید API را در یک درخواست API یا به عنوان یک پارامتر کوئری یا در یک هدر ارسال کنید. به طور پیش‌فرض، نام هدر و پارامتر کوئری هر دو x-api-key هستند.

مثال پارامتر پرس و جو:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

مثال سربرگ:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

پیکربندی نام کلید API

به طور پیش‌فرض، x-api-key نامی است که هم برای هدر کلید API و هم برای پارامتر کوئری استفاده می‌شود. می‌توانید این پیش‌فرض را در فایل پیکربندی تغییر دهید، همانطور که در «ایجاد تغییرات پیکربندی » توضیح داده شده است. به عنوان مثال، برای تغییر نام به apiKey :

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

در این مثال، هم پارامتر کوئری و هم نام هدر به apiKey تغییر داده شده‌اند. نام x-api-key دیگر در هیچ یک از این دو حالت کار نخواهد کرد. همچنین به بخش «ایجاد تغییرات پیکربندی» مراجعه کنید.

برای مثال:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

برای اطلاعات بیشتر در مورد استفاده از کلیدهای API با درخواست‌های پروکسی، به Secure Edge Microgateway مراجعه کنید.

فعال کردن کدهای پاسخ بالادستی

به طور پیش‌فرض، افزونه oauth فقط کدهای وضعیت خطای 4xx را در صورتی که پاسخ وضعیت 200 نباشد، برمی‌گرداند. شما می‌توانید این رفتار را تغییر دهید تا بسته به نوع خطا، همیشه کد دقیق 4xx یا 5xx را برگرداند.

برای فعال کردن این ویژگی، ویژگی oauth.useUpstreamResponse: true را به پیکربندی Edge Microgateway خود اضافه کنید. برای مثال:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

استفاده از امنیت توکن OAuth2

این بخش نحوه دریافت توکن‌های دسترسی OAuth2 و توکن‌های به‌روزرسانی را توضیح می‌دهد. توکن‌های دسترسی برای برقراری تماس‌های API امن از طریق microgateway استفاده می‌شوند. توکن‌های به‌روزرسانی برای دریافت توکن‌های دسترسی جدید استفاده می‌شوند.

چگونه یک توکن دسترسی دریافت کنیم

این بخش نحوه استفاده از پروکسی edgemicro-auth برای دریافت توکن دسترسی را توضیح می‌دهد.

همچنین می‌توانید با استفاده از دستور edgemicro token CLI یک توکن دسترسی دریافت کنید. برای جزئیات بیشتر در مورد CLI، به مدیریت توکن‌ها مراجعه کنید.

API 1: ارسال اعتبارنامه‌ها به عنوان پارامترهای بدنه

نام‌های org و environment خود را در URL جایگزین کنید و مقادیر Consumer Id و Consumer Secret که از یک برنامه توسعه‌دهنده در Apigee Edge به دست آمده است را برای پارامترهای بدنه client_id و client_secret جایگزین کنید:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2: ارسال اعتبارنامه‌ها در یک هدر Basic Auth

اطلاعات احراز هویت کلاینت را به عنوان سربرگ Basic Authentication و grant_type به عنوان پارامتر فرم ارسال کنید. این فرم دستور همچنین در RFC 6749: The OAuth 2.0 Authorization Framework مورد بحث قرار گرفته است.

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

خروجی نمونه

API یک پاسخ JSON برمی‌گرداند. توجه داشته باشید که هیچ تفاوتی بین ویژگی‌های token و access_token وجود ندارد. می‌توانید از هر یک از آنها استفاده کنید.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": "108000"
}

چگونه یک توکن به‌روزرسانی دریافت کنیم؟

برای دریافت یک توکن به‌روزرسانی، یک فراخوانی API به نقطه پایانی /token پروکسی edgemicro-auth انجام دهید. شما باید این فراخوانی API را با نوع اعطای password انجام دهید. مراحل زیر این فرآیند را شرح می‌دهند.

  1. با استفاده از API /token یک توکن دسترسی و به‌روزرسانی دریافت کنید. توجه داشته باشید که نوع اعطای مجوز password است:
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    این API یک توکن دسترسی و یک توکن به‌روزرسانی را برمی‌گرداند. پاسخ مشابه این است:

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": "108000",
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": "431999",
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. اکنون می‌توانید با فراخوانی نقطه پایانی /refresh از همان API، از توکن refresh برای دریافت یک توکن دسترسی جدید استفاده کنید. برای مثال:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    API یک توکن دسترسی جدید برمی‌گرداند. پاسخ مشابه این است:

    {
        "token": "your-new-access-token"
        }

نظارت همیشگی

Forever ابزاری برای Node.js است که در صورت بروز مشکل یا خطا در فرآیند، یک برنامه Node.js را به طور خودکار مجدداً راه‌اندازی می‌کند. Edge Microgateway یک فایل forever.json دارد که می‌توانید آن را پیکربندی کنید تا تعداد دفعات و فواصل زمانی راه‌اندازی مجدد Edge Microgateway را کنترل کنید. این فایل، یک سرویس Forever به نام forever-monitor را پیکربندی می‌کند که Forever را به صورت برنامه‌نویسی مدیریت می‌کند.

می‌توانید فایل forever.json را در دایرکتوری نصب ریشه Edge Microgateway پیدا کنید. به بخش «محل نصب Edge Microgateway» مراجعه کنید. برای جزئیات بیشتر در مورد گزینه‌های پیکربندی، به مستندات forever-monitor مراجعه کنید.

دستور edgemicro forever شامل فلگ‌هایی است که به شما امکان می‌دهد مکان فایل forever.json (فلگ -f ) را مشخص کنید و فرآیند نظارت Forever (فلگ -a ) را شروع/متوقف کنید. برای مثال:

edgemicro forever -f ~/mydir/forever.json -a start

برای اطلاعات بیشتر، به مرجع نظارت دائمی در CLI مراجعه کنید.

مشخص کردن نقطه پایانی فایل پیکربندی

اگر چندین نمونه Edge Microgateway را اجرا می‌کنید، ممکن است بخواهید پیکربندی‌های آنها را از یک مکان واحد مدیریت کنید. می‌توانید این کار را با مشخص کردن یک نقطه پایانی HTTP که Edge Micro بتواند فایل پیکربندی خود را از آنجا دانلود کند، انجام دهید. می‌توانید این نقطه پایانی را هنگام شروع Edge Micro با استفاده از پرچم -u مشخص کنید.

برای مثال:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

جایی که نقطه پایانی mgconfig محتویات فایل پیکربندی شما را برمی‌گرداند. این فایلی است که به طور پیش‌فرض در ~/.edgemicro قرار دارد و دارای قرارداد نامگذاری org-env-config.yaml است.

غیرفعال کردن بافرینگ داده اتصال TCP

شما می‌توانید از ویژگی پیکربندی nodelay برای غیرفعال کردن بافرینگ داده برای اتصالات TCP مورد استفاده توسط Edge Microgateway استفاده کنید.

به طور پیش‌فرض، اتصالات TCP از الگوریتم Nagle برای بافر کردن داده‌ها قبل از ارسال آنها استفاده می‌کنند. تنظیم nodelay روی true ، این رفتار را غیرفعال می‌کند (هر بار که socket.write() فراخوانی می‌شود، داده‌ها بلافاصله ارسال می‌شوند). برای جزئیات بیشتر به مستندات Node.js نیز مراجعه کنید.

برای فعال کردن nodelay ، فایل پیکربندی Edge Micro را به صورت زیر ویرایش کنید:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

اجرای Edge Microgateway در حالت مستقل

شما می‌توانید Edge Microgateway را بدون اتصال کامل به هرگونه وابستگی به Apigee Edge اجرا کنید. این سناریو که حالت مستقل نامیده می‌شود، به شما امکان می‌دهد Edge Microgateway را بدون اتصال به اینترنت اجرا و آزمایش کنید.

در حالت مستقل، ویژگی‌های زیر کار نمی‌کنند، زیرا نیاز به اتصال به Apigee Edge دارند:

  • کلید OAuth و API
  • سهمیه
  • تجزیه و تحلیل

از طرف دیگر، افزونه‌های سفارشی و spike arrest به طور معمول کار می‌کنند، زیرا نیازی به اتصال به Apigee Edge ندارند. علاوه بر این، افزونه جدیدی به نام extauth به شما امکان می‌دهد در حالت مستقل، فراخوانی‌های API به microgateway را با JWT مجاز کنید.

پیکربندی و شروع دروازه

برای اجرای Edge Microgateway در حالت مستقل:

  1. یک فایل پیکربندی با نام زیر ایجاد کنید: $HOME/.edgemicro/ $ORG - $ENV -config.yaml

    برای مثال:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. کد زیر را در فایل قرار دهید:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. متغیر محیطی زیر را با مقدار "1" اکسپورت کنید:
    export EDGEMICRO_LOCAL=1
  4. دستور start زیر را اجرا کنید، که در آن مقادیری را برای نمونه‌سازی پروکسی محلی ارائه می‌دهید:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    کجا:

    • $ORG نام "org" است که در نام فایل پیکربندی استفاده کرده‌اید.
    • $ENV نام "env" است که در نام فایل پیکربندی استفاده کرده‌اید.
    • $LOCAL_PROXY_NAME نام پروکسی محلی است که ایجاد خواهد شد. می‌توانید از هر نامی که می‌خواهید استفاده کنید.
    • $LOCAL_PROXY_VERSION ‎ شماره نسخه پروکسی است.
    • $TARGET_URL ‎ آدرس اینترنتی (URL) مقصد پروکسی است. ( هدف ، سرویسی است که پروکسی آن را فراخوانی می‌کند.)
    • $BASE_PATH مسیر پایه پروکسی است. این مقدار باید با یک اسلش شروع شود. برای مسیر پایه ریشه، فقط یک اسلش مشخص کنید؛ برای مثال، "/".

    برای مثال:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. پیکربندی را آزمایش کنید.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    از آنجا که افزونه‌ی extauth در فایل foo-bar-config.yaml قرار دارد، با خطای "missing_authorization" مواجه می‌شوید. این افزونه JWT را اعتبارسنجی می‌کند که باید در سربرگ Authorization فراخوانی API وجود داشته باشد. در بخش بعدی، JWT را دریافت خواهید کرد که امکان اجرای فراخوانی‌های API را بدون خطا فراهم می‌کند.

مثال: دریافت توکن مجوز

مثال زیر نحوه دریافت JWT از نقطه پایانی Edge Microgateway JWT روی Apigee Edge ( edgemicro-auth/jwkPublicKeys ) را نشان می‌دهد. این نقطه پایانی هنگام انجام تنظیمات و پیکربندی استاندارد Edge Microgateway مستقر می‌شود. برای دریافت JWT از نقطه پایانی Apigee، ابتدا باید تنظیمات استاندارد Edge Microgateway را انجام دهید و به اینترنت متصل باشید. نقطه پایانی Apigee در اینجا فقط برای اهداف مثالی استفاده می‌شود و الزامی نیست. در صورت تمایل می‌توانید از نقطه پایانی توکن JWT دیگری استفاده کنید. در این صورت، باید JWT را با استفاده از API ارائه شده برای آن نقطه پایانی دریافت کنید.

مراحل زیر نحوه دریافت توکن با استفاده از نقطه پایانی edgemicro-auth/jwkPublicKeys را توضیح می‌دهد:.

  1. شما باید تنظیمات و پیکربندی استاندارد Edge Microgateway را برای استقرار پروکسی edgemicro-auth در سازمان/محیط خود در Apigee Edge انجام دهید. اگر قبلاً این مرحله را انجام داده‌اید، نیازی به تکرار آن ندارید.
  2. اگر Edge Microgateway را روی Apigee Cloud مستقر کرده‌اید، باید به اینترنت متصل باشید تا بتوانید از این نقطه پایانی JWT دریافت کنید.
  3. میکروگیت‌وی لبه را متوقف کنید:
    edgemicro stop
  4. در فایل پیکربندی که قبلاً ایجاد کرده‌اید ( $HOME/.edgemicro / org - env -config.yaml )، ویژگی extauth:publickey_url را به نقطه پایانی edgemicro-auth/jwkPublicKeys در سازمان/محیط Apigee Edge خود ارجاع دهید. برای مثال:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. مانند قبل، با استفاده از نام‌های org/env که در نام فایل پیکربندی استفاده کردید، Edge Microgateway را مجدداً راه‌اندازی کنید. برای مثال:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. یک توکن JWT از نقطه پایانی احراز هویت دریافت کنید. از آنجا که از نقطه پایانی edgemicro-auth/jwkPublicKeys استفاده می‌کنید، می‌توانید از این دستور CLI استفاده کنید:

شما می‌توانید با استفاده از دستور edgemicro token یا یک API، یک JWT برای Edge Microgateway ایجاد کنید. برای مثال:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

کجا:

  • your_org نام سازمان Apigee شماست که قبلاً Edge Microgateway را برای آن پیکربندی کرده‌اید.
  • your_env یک محیط در سازمان است.
  • گزینه i کلید مصرف‌کننده را از یک برنامه توسعه‌دهنده که محصولی شامل پروکسی edgemicro-auth دارد، مشخص می‌کند.
  • گزینه s ، راز مصرف‌کننده را از یک برنامه توسعه‌دهنده که محصولی شامل پروکسی edgemicro-auth دارد، مشخص می‌کند.

این دستور از Apigee Edge می‌خواهد که یک JWT تولید کند که بتوان از آن برای تأیید فراخوانی‌های API استفاده کرد.

همچنین به بخش «ایجاد یک توکن» مراجعه کنید.

پیکربندی مستقل را آزمایش کنید

برای آزمایش پیکربندی، API را با توکن اضافه شده در هدر Authorization به صورت زیر فراخوانی کنید:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

مثال:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

خروجی مثال:

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

استفاده از حالت پروکسی محلی

در حالت پروکسی محلی، Edge Microgateway نیازی به استقرار یک پروکسی آگاه از microgateway در Apigee Edge ندارد. در عوض، شما با ارائه نام پروکسی محلی، مسیر پایه و URL هدف هنگام شروع microgateway، یک "پروکسی محلی" را پیکربندی می‌کنید. سپس فراخوانی‌های API به microgateway به URL هدف پروکسی محلی ارسال می‌شوند. از هر نظر دیگر، حالت پروکسی محلی دقیقاً مانند اجرای Edge Microgateway در حالت عادی خود عمل می‌کند. احراز هویت، همانند توقیف spike و اعمال سهمیه، افزونه‌های سفارشی و غیره، به همان شکل عمل می‌کند.

مورد استفاده و مثال

حالت پروکسی محلی زمانی مفید است که فقط نیاز به مرتبط کردن یک پروکسی واحد با یک نمونه Edge Microgateway داشته باشید. به عنوان مثال، می‌توانید Edge Microgateway را به عنوان یک پروکسی جانبی به Kubernetes تزریق کنید، که در آن یک microgateway و یک سرویس هر کدام در یک pod واحد اجرا می‌شوند و microgateway ترافیک را به و از سرویس همراه خود مدیریت می‌کند. شکل زیر این معماری را نشان می‌دهد که در آن Edge Microgateway به عنوان یک پروکسی جانبی در یک کلاستر Kubernetes عمل می‌کند. هر نمونه microgateway فقط با یک نقطه پایانی در سرویس همراه خود ارتباط برقرار می‌کند:

اج‌میکرو به عنوان سایدکار

یکی از مزایای این سبک معماری این است که Edge Microgateway مدیریت API را برای سرویس‌های منفرد مستقر در یک محیط کانتینر، مانند یک کلاستر Kubernetes، فراهم می‌کند.

پیکربندی حالت پروکسی محلی

برای پیکربندی Edge Microgateway برای اجرا در حالت پروکسی محلی، این مراحل را دنبال کنید:

  1. edgemicro init اجرا کنید تا محیط پیکربندی محلی خود را تنظیم کنید، دقیقاً مانند کاری که در یک راه‌اندازی معمولی Edge Microgateway انجام می‌دهید. همچنین به Configure Edge Microgateway مراجعه کنید.
  2. edgemicro configure اجرا کنید، همانطور که در یک روش معمول راه‌اندازی Edge Microgateway انجام می‌دهید. برای مثال:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    این دستور، سیاست edgemicro-auth را در Edge مستقر می‌کند و یک کلید و رمز را که برای شروع microgateway به آن نیاز دارید، برمی‌گرداند. اگر به کمک نیاز دارید، به پیکربندی Edge Microgateway مراجعه کنید.

  3. در Apigee Edge، یک محصول API ایجاد کنید و الزامات پیکربندی اجباری زیر را در آن قرار دهید (می‌توانید سایر پیکربندی‌ها را به دلخواه خود مدیریت کنید):
    • شما باید پروکسی edgemicro-auth را به محصول اضافه کنید. این پروکسی هنگام اجرای edgemicro configure به طور خودکار مستقر شده است.
    • شما باید یک مسیر منبع ارائه دهید. Apigee توصیه می‌کند این مسیر را به محصول اضافه کنید: /** . برای کسب اطلاعات بیشتر، به پیکربندی رفتار مسیر منبع مراجعه کنید. همچنین به بخش ایجاد محصولات API در مستندات Edge مراجعه کنید.
  4. در Apigee Edge، یک توسعه‌دهنده ایجاد کنید، یا در صورت تمایل می‌توانید از یک توسعه‌دهنده موجود استفاده کنید. برای راهنمایی، به افزودن توسعه‌دهندگان با استفاده از رابط کاربری مدیریت Edge مراجعه کنید.

  5. در Apigee Edge، یک برنامه توسعه‌دهنده ایجاد کنید. شما باید محصول API که اخیراً ایجاد کرده‌اید را به برنامه اضافه کنید. برای راهنمایی، به ثبت یک برنامه در رابط کاربری مدیریت Edge مراجعه کنید.
  6. روی دستگاهی که Edge Microgateway نصب شده است، متغیر محیطی زیر را با مقدار "1" صادر کنید.
    export EDGEMICRO_LOCAL_PROXY=1
  7. دستور start زیر را اجرا کنید:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    کجا:

    • your_org سازمان Apigee شماست.
    • your_environment محیطی در سازمان شماست.
    • your_key کلیدی است که هنگام اجرای edgemicro configure برگردانده شده است.
    • your_secret رازی است که هنگام اجرای edgemicro configure برگردانده شده است.
    • local_proxy_name نام پروکسی محلی است که ایجاد خواهد شد.
    • local_proxy_version شماره نسخه پروکسی است.
    • target_url آدرس اینترنتی (URL) هدف پروکسی (سرویسی که پروکسی فراخوانی می‌کند) است.
    • base_path مسیر پایه پروکسی است. این مقدار باید با یک اسلش شروع شود. برای مسیر پایه ریشه، فقط یک اسلش مشخص کنید؛ برای مثال، "/".

    برای مثال:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

آزمایش پیکربندی

شما می‌توانید پیکربندی پروکسی محلی را با فراخوانی نقطه پایانی پروکسی آزمایش کنید. برای مثال، اگر مسیر پایه /echo را مشخص کرده‌اید، می‌توانید پروکسی را به صورت زیر فراخوانی کنید:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

این فراخوانی اولیه API به دلیل عدم ارائه کلید API معتبر، خطایی ایجاد کرد. می‌توانید این کلید را در برنامه توسعه‌دهنده‌ای که قبلاً ایجاد کرده‌اید، پیدا کنید. برنامه را در رابط کاربری Edge باز کنید، کلید مصرف‌کننده را کپی کنید و از آن کلید به صورت زیر استفاده کنید:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

برای مثال:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

خروجی مثال:

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

با استفاده از هماهنگ کننده

این بخش نحوه استفاده از همگام‌ساز را توضیح می‌دهد، یک ویژگی اختیاری که با فراهم کردن امکان بازیابی داده‌های پیکربندی از Apigee Edge و نوشتن آن در یک پایگاه داده محلی Redis، تاب‌آوری Edge Microgateway را بهبود می‌بخشد. با اجرای یک نمونه همگام‌ساز، سایر نمونه‌های Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند، می‌توانند پیکربندی خود را مستقیماً از این پایگاه داده بازیابی کنند.

ویژگی همگام‌ساز در حال حاضر برای کار با Redis 5.0.x پشتیبانی می‌شود.

هماهنگ کننده چیست؟

هماهنگ‌کننده سطحی از انعطاف‌پذیری را برای Edge Microgateway فراهم می‌کند. این امر تضمین می‌کند که هر نمونه از Edge Microgateway از پیکربندی یکسانی استفاده می‌کند و در صورت اختلال در اینترنت، نمونه‌های Edge Microgateway می‌توانند راه‌اندازی و به درستی اجرا شوند.

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

هماهنگ‌کننده‌ی Edge Microgateway یک مکانیزم جایگزین برای نمونه‌های Edge Microgateway فراهم می‌کند تا داده‌های پیکربندی مورد نیاز برای راه‌اندازی و پردازش ترافیک پروکسی API را بازیابی کنند. داده‌های پیکربندی بازیابی شده از فراخوانی‌ها به Apigee Edge شامل موارد زیر است: فراخوانی jwk_public_keys ، فراخوانی jwt_public_key ، فراخوانی bootstrap و فراخوانی محصولات API. این هماهنگ‌کننده این امکان را فراهم می‌کند که تمام نمونه‌های Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند، به درستی راه‌اندازی شوند و حتی اگر اتصال اینترنت بین Edge Microgateway و Apigee Edge مختل شود، همگام باقی بمانند.

هماهنگ‌کننده یک نمونه پیکربندی‌شده ویژه از Edge Microgateway است. تنها هدف آن نظرسنجی از Apigee Edge (زمان‌بندی قابل تنظیم)، بازیابی داده‌های پیکربندی و نوشتن آن در یک پایگاه داده محلی Redis است. نمونه هماهنگ‌کننده به خودی خود نمی‌تواند ترافیک پروکسی API را پردازش کند. نمونه‌های دیگر Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند را می‌توان طوری پیکربندی کرد که داده‌های پیکربندی را از پایگاه داده Redis به جای Apigee Edge بازیابی کنند. از آنجا که همه نمونه‌های microgateway داده‌های پیکربندی خود را از پایگاه داده محلی می‌گیرند، می‌توانند حتی در صورت اختلال در اینترنت، درخواست‌های API را راه‌اندازی و پردازش کنند.

پیکربندی یک نمونه همگام‌ساز

پیکربندی زیر را به فایل org-env /config.yaml برای نصب Edge Microgateway که می‌خواهید به عنوان هماهنگ‌کننده استفاده کنید، اضافه کنید:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

برای مثال:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
گزینه توضیحات
redisHost هاستی که نمونه Redis شما در آن اجرا می‌شود. پیش‌فرض: ۱۲۷.۰.۰.۱
redisPort پورت نمونه Redis. پیش‌فرض: ۶۳۷۹
redisDb پایگاه داده Redis مورد استفاده. پیش‌فرض: 0
redisPassword رمز عبور پایگاه داده شما.

در نهایت، فایل پیکربندی را ذخیره کنید و نمونه Edge Microgateway را اجرا کنید. این نمونه شروع به نمونه‌برداری از Apigee Edge و ذخیره داده‌های پیکربندی دانلود شده در پایگاه داده Redis خواهد کرد.

پیکربندی نمونه‌های معمولی Edge Microgateway

با اجرای هماهنگ‌کننده، می‌توانید گره‌های اضافی Edge Microgateway را برای اجرای نمونه‌های معمولی microgateway که ترافیک پروکسی API را پردازش می‌کنند، پیکربندی کنید. با این حال، این نمونه‌ها را طوری پیکربندی می‌کنید که داده‌های پیکربندی خود را از پایگاه داده Redis به جای Apigee Edge دریافت کنند.

پیکربندی زیر را به فایل org-env /config.yaml هر گره Edge Microgateway اضافی اضافه کنید. توجه داشته باشید که ویژگی synchronizerMode روی 0 تنظیم شده است. این ویژگی، نمونه را طوری تنظیم می‌کند که به عنوان یک نمونه معمولی Edge Microgateway عمل کند که ترافیک پروکسی API را پردازش می‌کند و این نمونه، داده‌های پیکربندی خود را از پایگاه داده Redis دریافت خواهد کرد.

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

برای مثال:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

ویژگی‌های پیکربندی

ویژگی‌های پیکربندی زیر برای پشتیبانی از استفاده از هماهنگ‌کننده اضافه شده‌اند:

ویژگی ارزش‌ها توضیحات
edge_config.synchronizerMode ۰ یا ۱

اگر 0 (پیش‌فرض) باشد، Edge Microgateway در حالت استاندارد خود عمل می‌کند.

اگر ۱ باشد، نمونه‌ی Edge Microgateway را طوری راه‌اندازی کنید که به عنوان یک هماهنگ‌کننده عمل کند. در این حالت، نمونه، داده‌های پیکربندی را از Apigee Edge دریافت کرده و در یک پایگاه داده‌ی محلی Redis ذخیره می‌کند. این نمونه قادر به پردازش درخواست‌های پروکسی API نیست؛ تنها هدف آن، نظرسنجی از Apigee Edge برای داده‌های پیکربندی و نوشتن آنها در پایگاه داده‌ی محلی است. سپس باید نمونه‌های دیگر microgateway را برای خواندن از پایگاه داده پیکربندی کنید.

edge_config.redisBasedConfigCache درست یا غلط اگر درست باشد، نمونه‌ی Edge Microgateway داده‌های پیکربندی خود را به جای Apigee Edge از پایگاه داده‌ی Redis دریافت می‌کند. پایگاه داده‌ی Redis باید همان پایگاه داده‌ای باشد که هماهنگ‌کننده برای نوشتن در آن پیکربندی شده است. اگر پایگاه داده‌ی Redis در دسترس نباشد یا اگر پایگاه داده خالی باشد، microgateway به دنبال یک فایل cache-config.yaml موجود برای پیکربندی خود می‌گردد.

اگر مقدار false باشد (پیش‌فرض)، نمونه‌ی Edge Microgateway طبق معمول داده‌های پیکربندی را از Apigee Edge دریافت می‌کند.

edgemicro.config_change_poll_interval فاصله زمانی، بر حسب ثانیه فاصله زمانی رای‌گیری برای هماهنگ‌کننده جهت دریافت داده‌ها از Apigee Edge را مشخص می‌کند.

پیکربندی حذف URLها برای افزونه‌ها

شما می‌توانید microgateway را طوری پیکربندی کنید که پردازش افزونه‌ها را برای URLهای مشخص‌شده نادیده بگیرد. می‌توانید این URLهای «حذف‌شده» را به‌صورت سراسری (برای همه افزونه‌ها) یا برای افزونه‌های خاص پیکربندی کنید.

برای مثال:

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

در این مثال، افزونه‌ها فراخوانی‌های پروکسی API ورودی با مسیرهای /hello یا /proxy_one را پردازش نمی‌کنند. علاوه بر این، افزونه json2xml برای APIهایی که مسیر آنها /hello/xml است، نادیده گرفته می‌شود.

تنظیم ویژگی‌های پیکربندی با مقادیر متغیرهای محیطی

شما می‌توانید متغیرهای محیطی را با استفاده از تگ‌ها در فایل پیکربندی مشخص کنید. تگ‌های متغیر محیطی مشخص شده با مقادیر واقعی متغیر محیطی جایگزین می‌شوند. مقادیر جایگزین فقط در حافظه ذخیره می‌شوند و در فایل‌های پیکربندی یا حافظه پنهان اصلی ذخیره نمی‌شوند.

در این مثال، key ویژگی با مقدار متغیر محیطی TARGETS_SSL_CLIENT_KEY جایگزین می‌شود و به همین ترتیب ادامه می‌یابد.

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

در این مثال، از تگ <n> برای نشان دادن یک مقدار صحیح استفاده شده است. فقط اعداد صحیح مثبت پشتیبانی می‌شوند.

edgemicro:
  port: <E><n>EMG_PORT</n></E>

در این مثال، از تگ <b> برای نشان دادن یک مقدار بولی (یعنی درست یا غلط) استفاده شده است.

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>