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

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

Edge Microgateway نسخه 3.1.x

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

اگر اتصال اینترنت دارید Edge Microgateway را ارتقا دهید

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

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

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

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

    npm upgrade edgemicro@3.1.0 -g
  2. شماره نسخه را بررسی کنید. به عنوان مثال، اگر نسخه 3.1.0 را نصب کرده اید:
    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. راه اندازی مجدد Edge Microgateway:
    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

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

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

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

ویدئو توضیحات
پیکربندی TLS یک طرفه Northbound درباره پیکربندی TLS در Apigee Edge Microgateway بیاموزید. این ویدئو مروری بر TLS و اهمیت آن ارائه می‌کند، TLS را در Edge Microgateway معرفی می‌کند و نحوه پیکربندی Northbound One-Way TLS را نشان می‌دهد.
پیکربندی TLS دو طرفه Northbound این دومین ویدیو در مورد پیکربندی TLS در Apigee Edge Microgateway است. این ویدیو نحوه پیکربندی TLS دو طرفه شمال به شمال را توضیح می دهد.
پیکربندی 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 به نسخه 3.
servername نام سرور برای برنامه افزودنی SNI (Server Name Indication) TLS.
requestCert درست برای SSL دو طرفه. false برای 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 به نسخه 3.
servername نام سرور برای برنامه افزودنی SNI (Server Name Indication) TLS.

سفارشی کردن پروکسی edgemicro-auth

به طور پیش فرض، Edge Microgateway از یک پروکسی مستقر در Apigee Edge برای احراز هویت OAuth2 استفاده می کند. این پروکسی زمانی مستقر می شود که در ابتدا edgemicro configure اجرا می کنید. می‌توانید پیکربندی پیش‌فرض این پراکسی را تغییر دهید تا پشتیبانی از ادعاهای سفارشی را به یک توکن وب JSON (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

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

نحوه تنظیم سطح ورود به سیستم

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

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

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

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

  • stats_log_interval : (پیش‌فرض: 60) فاصله زمانی، بر حسب ثانیه، زمانی که رکورد آمار در فایل گزارش API نوشته می‌شود.
  • rotate_interval : (پیش‌فرض: 24) بازه زمانی، بر حسب ساعت، زمانی که فایل‌های گزارش چرخش می‌شوند. به عنوان مثال:
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 توصیه می‌کند که از روش‌های زیر استفاده کنید:

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

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

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

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

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

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

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

اضافه شده در: v2.3.3

به‌طور پیش‌فرض، سرویس گزارش‌گیری 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" ثبت می شود:

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

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

(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

بیایید یک به یک آنها را بررسی کنیم:

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

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

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

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

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

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

1436403888651 - مهر تاریخ یونیکس

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

4. نمونه پاسخ خروجی به مشتری

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

1436403888651 - مهر تاریخ یونیکس

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

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

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

پیام های خطا

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

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

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

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

ویژگی های edge_config

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

  • بوت استرپ : (پیش‌فرض: هیچ‌کدام) یک URL که به یک سرویس خاص Edge Microgateway در حال اجرا در Apigee Edge اشاره می‌کند. Edge Microgateway از این سرویس برای برقراری ارتباط با Apigee Edge استفاده می کند. این URL زمانی که شما دستور تولید جفت کلید عمومی/خصوصی را اجرا می‌کنید، باز می‌گردد: edgemicro genkeys . برای جزئیات به تنظیمات و پیکربندی Edge Microgateway مراجعه کنید.
  • jwt_public_key : (پیش‌فرض: هیچکدام) نشانی اینترنتی که به پراکسی 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 را پیکربندی می کند.

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

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

    به عنوان مثال:

    edgemicro:
    keep_alive_timeout: 6000
    headers_timeout: 12000

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

ویژگی های سرصفحه ها

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

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

ویژگی های oauth

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

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

ویژگی های خاص پلاگین

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

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

می‌توانید فیلتر کنید کدام پروکسی‌های آگاه از میکروگیت‌وی را یک نمونه Edge Microgateway پردازش می‌کند. هنگامی که Edge 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 را به /products API فهرست شده در فایل Edge Microgateway *.config.yaml اضافه کنید. به عنوان مثال:

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 باشد. برای مثال، regex ^[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":[

         ]
      }
   ]
}

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

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

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

به عنوان مثال:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

پوشاندن داده های تحلیلی

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

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

جداسازی تماس‌های API در Edge Analytics

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

edgemicro_proxyname-health

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

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

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

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

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 استفاده کنید

اضافه شده در نسخه 3.1.2.

برای استفاده از پروکسی 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 استفاده کنید

اضافه شده در نسخه 3.1.2.

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

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

    کجا:

    • تونل : (اختیاری) وقتی درست است، Edge Microgateway از روش HTTP CONNECT برای تونل کردن درخواست‌های HTTP از طریق یک اتصال TCP استفاده می‌کند. (اگر متغیرهای محیطی، همانطور که در زیر ذکر شد، برای پیکربندی پراکسی، TLS فعال باشند، صادق است). پیش فرض: false
    • url : 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-aware

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

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

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

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

چگونه Edge Microgateway از JWT استفاده می کند

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

Edge Microgateway از JWT ها به عنوان توکن های حامل برای امنیت OAuth استفاده می کند. هنگامی که یک توکن OAuth برای Edge Microgateway تولید می کنید، یک JWT پس می گیرید. سپس می توانید از JWT در سربرگ مجوز تماس های API استفاده کنید. به عنوان مثال:

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

تولید یک JWT جدید

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

edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

این دستور از Apigee Edge می‌خواهد تا یک JWT ایجاد کند که می‌تواند برای تأیید تماس‌های API استفاده شود. پارامترهای -i و -s شناسه مصرف کننده و مقادیر مخفی یک برنامه توسعه دهنده در سازمان Apigee Edge شما هستند.

یا، شما همچنین می توانید یک JWT با استفاده از مدیریت API ایجاد کنید:

curl -i -X POST "http://$ORG-$ENV.apigee.net/edgemicro-auth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "$CLIENT_ID": "your consumer key",
    "$CLIENT_SECRET": "your consumer secret",
    "grant_type": "client_credentials"
  }'

کجا:

  • $ORG نام سازمان Edge شماست (شما باید یک مدیر سازمان باشید).
  • $ENV یک محیط در سازمان شما است (مانند "test" یا "prod").
  • $CLIENT_ID شناسه مصرف‌کننده در برنامه برنامه‌نویسی است که قبلاً ایجاد کرده‌اید.
  • $CLIENT_SECRET راز مصرف کننده در برنامه توسعه دهنده ای است که قبلاً ایجاد کرده اید.

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

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

برای تولید JWT، Edge از اطلاعات ذخیره شده در KVM رمزگذاری شده استفاده می کند. هنگامی که شما در ابتدا Edge Microgateway را راه‌اندازی (پیکربندی) کردید، یک KVM به نام 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 های ارائه شده برای تأیید با استفاده از کلید عمومی جدید تأیید می شوند. اگر تأیید ناموفق باشد، از کلید عمومی قدیمی استفاده می شود، تا زمانی که منقضی شود (پس از 30 دقیقه). به این ترتیب، می‌توانید کلیدها را بدون ایجاد اختلال در ترافیک API، «چرخش» کنید.

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

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

اگر نمونه Edge Microgateway خود را قبل از نسخه 2.5.2 پیکربندی کرده باشید

اگر نمونه Edge Microgateway خود را قبل از نسخه 2.5.2 پیکربندی کرده اید، باید دو دستور زیر را برای ارتقا KVM و سیاست احراز هویت اجرا کنید:

upgradekvm -o $ORG -e $ENV -u $USERNAME

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

دستور بعدی پروکسی edgemicro-oauth را که در زمان پیکربندی Edge Microgateway در سازمان Apigee شما مستقر شده بود، ارتقا می‌دهد. این پروکسی خدمات مورد نیاز برای تولید توکن ها را ارائه می دهد.

upgradeauth -o $ORG -e $ENV -u $USERNAME

برای اطلاعات بیشتر در مورد این دستور، به ارتقای پروکسی edgemicro-auth مراجعه کنید.

چرخاندن کلیدها

خط زیر را به فایل ~/.edgemicro/org-env-config.yaml خود اضافه کنید، جایی که باید همان سازمان و محیطی را که microgateway را برای استفاده از آن پیکربندی کرده اید، مشخص کنید:

jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'

برای چرخاندن کلیدها دستور چرخش کلید را اجرا کنید. (برای اطلاعات بیشتر در مورد این دستور، کلیدهای چرخشی را ببینید.)

edgemicro rotatekey -o $ORG -e $ENV -u $USERNAME -k $KID_VALUE

به عنوان مثال:

edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2
current nodejs version is v12.5.0
current edgemicro version is 3.1.0
password:
Checking if private key exists in the KVM...
Checking for certificate...
Found Certificate
Generating New key/cert pair...
Extract new public key
Key Rotation successfully completed!

پارامتر -k یک شناسه کلید (کودک) را مشخص می کند. این شناسه برای مطابقت با یک کلید خاص استفاده می شود. Edge Microgateway از این مقدار برای انتخاب از میان مجموعه ای از کلیدها در حین چرخش کلید استفاده می کند. برای اطلاعات بیشتر، به بخش 4.5 مشخصات کلید وب JSON مراجعه کنید.

پس از چرخش کلید، 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"
    }
  ]
}

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

به طور پیش‌فرض، 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 مرتبط با آن محصول اجازه می‌دهد تا با هر پروکسی مستقر در سازمان شما کار کند. از نسخه 2.5.4، Edge Microgateway از این پیکربندی محصول پشتیبانی می کند.

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

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

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

  1. Edge Microgateway را در حالت اشکال زدایی مجدداً راه اندازی کنید. برای انجام این کار، 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 و هم برای پارامتر query استفاده می‌شود. می توانید این پیش فرض را در فایل پیکربندی تغییر دهید، همانطور که در ایجاد تغییرات پیکربندی توضیح داده شده است. به عنوان مثال، برای تغییر نام به apiKey :

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

در این مثال، هم پارامتر query و هم نام سرصفحه به apiKey تغییر یافته است. نام x-api-key دیگر در هر دو مورد کار نخواهد کرد. همچنین به ایجاد تغییرات پیکربندی مراجعه کنید.

به عنوان مثال:

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

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

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

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

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

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

با استفاده از امنیت رمز OAuth2

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

نحوه دریافت رمز دسترسی

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

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

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

نام سازمان و محیط خود را در 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 ارسال کنید

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

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. با /token API یک نشانه دسترسی و بازخوانی دریافت کنید. توجه داشته باشید که نوع کمک هزینه 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.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
  • سهمیه
  • تجزیه و تحلیل

از طرف دیگر، پلاگین های سفارشی و دستگیری اسپیک به طور معمول کار می کنند، زیرا نیازی به اتصال به 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 را تأیید می کند که باید در هدر مجوز تماس 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. Stop Edge Microgateway:
    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. Edge Microgateway را مانند قبل با استفاده از نام‌های org/env که در نام فایل پیکربندی استفاده کرده‌اید، راه‌اندازی مجدد کنید. به عنوان مثال:
    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 Consumer Secret را از یک برنامه توسعه دهنده مشخص می کند که دارای محصولی است که شامل پروکسی 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 ندارد. در عوض، هنگام راه‌اندازی microgateway، با ارائه یک نام پروکسی محلی، مسیر پایه و URL هدف، یک «پراکسی محلی» را پیکربندی می‌کنید. تماس‌های API به میکرو گیت‌وی سپس به URL هدف پروکسی محلی ارسال می‌شوند. از همه جهات دیگر، حالت پروکسی محلی دقیقاً مانند اجرای Edge Microgateway در حالت عادی کار می کند. احراز هویت مانند دستگیری و اجرای سهمیه، پلاگین های سفارشی و غیره یکسان عمل می کند.

از مورد و مثال استفاده کنید

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

Edgemicro به عنوان Sidecar

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

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

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

  1. edgemicro init را اجرا کنید تا محیط پیکربندی محلی خود را تنظیم کنید، دقیقاً همانطور که در راه اندازی معمولی Edge Microgateway انجام می دهید. پیکربندی 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 management مراجعه کنید.

  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 نشانی اینترنتی هدف پروکسی است (سرویسی که پراکسی با آن تماس خواهد گرفت).
    • 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 معتبری ارائه نکردید. می توانید کلید را در برنامه Developer که قبلا ایجاد کرده اید پیدا کنید. برنامه را در Edge UI باز کنید، Consumer Key را کپی کنید و از آن کلید به صورت زیر استفاده کنید:

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":""
}

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

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

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

همگام ساز چیست؟

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

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

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

همگام ساز یک نمونه پیکربندی خاص از Edge Microgateway است. تنها هدف آن نظرسنجی Apigee Edge (زمان بندی قابل تنظیم است)، بازیابی داده های پیکربندی و نوشتن آن در پایگاه داده محلی Redis است. نمونه همگام ساز خود نمی تواند ترافیک پروکسی API را پردازش کند. سایر نمونه‌های Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند را می‌توان برای بازیابی داده‌های پیکربندی از پایگاه داده Redis به جای Apigee Edge پیکربندی کرد. از آنجایی که همه نمونه‌های میکرو گیت‌وی داده‌های پیکربندی خود را از پایگاه داده محلی بیرون می‌آورند، می‌توانند درخواست‌های 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 شما در آن اجرا می شود. پیش فرض: 127.0.0.1
redisPort بندر نمونه Redis. پیش فرض: 6379
redisDb Redis DB برای استفاده. پیش فرض: 0
redisPassword رمز عبور پایگاه داده شما

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

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

با اجرای همگام‌ساز، می‌توانید گره‌های Edge 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 یا 1

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

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

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

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

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