Eklentileri kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Edge Microgateway v. 3.3.x

Kitle

Bu konu, Edge Microgateway ile yüklenen mevcut eklentileri kullanmak isteyen Edge Microgateway operatörleri için hazırlanmıştır. Ayrıca, kurulumla birlikte gelen ani artış engelleme ve kota eklentileri de ayrıntılı olarak ele alınır. Yeni eklentiler geliştirmek isteyen bir geliştiriciyseniz Özel eklentiler geliştirme başlıklı makaleyi inceleyin.

Edge Microgateway eklentisi nedir?

Eklentiler, Edge Microgateway'e işlevsellik ekleyen Node.js modülleridir. Eklenti modülleri tutarlı bir kalıba uyar ve Edge Microgateway tarafından bilinen bir konumda depolanır. Bu sayede microgateway, eklentileri otomatik olarak bulup yükleyebilir. Edge Microgateway'de mevcut birkaç eklenti bulunur. Ayrıca Özel eklentiler geliştirme bölümünde açıklandığı gibi özel eklentiler de oluşturabilirsiniz.

Edge Microgateway ile birlikte gelen mevcut eklentiler

Edge Microgateway ile birlikte kurulum sırasında çeşitli eklentiler sağlanır. Aşağıdaki tabloda, en çok tercih edilen eklentilerden bazıları açıklanmaktadır.

Eklenti Varsayılan olarak etkindir Açıklama
analiz Evet Edge Microgateway'den Apigee Edge'e analiz verileri gönderir.
oauth Evet Edge Microgateway'e OAuth jetonu ve API anahtarı doğrulama işlevleri ekler. Edge Microgateway'i ayarlama ve yapılandırma başlıklı makaleyi inceleyin.
quota Hayır Edge Microgateway'e yapılan isteklerde kotayı zorunlu kılar. Kotaları depolamak ve yönetmek için Apigee Edge'i kullanır. Kota eklentisini kullanma başlıklı makaleyi inceleyin.
spikearrest Hayır Trafik artışlarına ve DoS saldırılarına karşı koruma sağlar. Spike Arrest eklentisini kullanma başlıklı makaleyi inceleyin.
header-uppercase Hayır Geliştiricilerin özel eklentiler yazmasına yardımcı olacak bir kılavuz olarak tasarlanmış, yorumlu bir örnek proxy. Edge Microgateway örnek eklentisi başlıklı makaleyi inceleyin.
accumulate-request Hayır İstek verilerini, eklenti zincirindeki bir sonraki işleyiciye iletmeden önce tek bir nesnede toplar. Tek bir birikmiş istek içeriği nesnesi üzerinde çalışması gereken dönüştürme eklentileri yazmak için kullanışlıdır.
accumulate-response Hayır Verileri eklenti zincirindeki bir sonraki işleyiciye iletmeden önce yanıt verilerini tek bir nesnede toplar. Tek bir birikmiş yanıt içeriği nesnesi üzerinde çalışması gereken dönüştürme eklentileri yazmak için kullanışlıdır.
transform-uppercase Hayır İstek veya yanıt verilerini dönüştürür. Bu eklenti, dönüştürme eklentisinin en iyi uygulama uygulamasını temsil eder. Örnek eklenti, basit bir dönüşüm gerçekleştirir (istek veya yanıt verilerini büyük harfe dönüştürür). Ancak XML'den JSON'a gibi diğer dönüşümleri gerçekleştirmek için kolayca uyarlanabilir.
json2xml Hayır İsteği veya yanıt verilerini, kabul etme ya da içerik türü başlıklarına göre dönüştürür. Ayrıntılar için GitHub'daki eklenti belgelerine bakın.
quota-memory Hayır Edge Microgateway'e yapılan isteklerde kotayı zorunlu kılar. Kotaları yerel bellekte saklar ve yönetir.
healthcheck Hayır Edge Microgateway süreciyle ilgili bilgileri (ör. bellek kullanımı, CPU kullanımı) döndürür. Eklentiyi kullanmak için Edge Microgateway örneğinizde /healthcheck URL'sini çağırın. Bu eklenti, kendi durum denetimi eklentinizi uygulamak için kullanabileceğiniz bir örnek olarak tasarlanmıştır.

Mevcut eklentileri nerede bulabilirim?

Edge Microgateway ile birlikte gelen mevcut eklentiler burada bulunur. [prefix], npm önek dizinidir. Bu dizini bulamıyorsanız Edge Microgateway nereye yüklenir? başlıklı makaleye bakın.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

Eklenti ekleme ve yapılandırma

Eklentileri eklemek ve yapılandırmak için şu kalıbı kullanın:

  1. Edge Microgateway'i durdurun.
  2. Bir Edge Microgateway yapılandırma dosyası açın. Ayrıntılar için seçeneklerle ilgili Yapılandırma değişiklikleri yapma bölümüne bakın.
  3. Eklentiyi, yapılandırma dosyasının plugins:sequence öğesine aşağıdaki şekilde ekleyin. Eklentiler, bu listede göründükleri sırayla yürütülür.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. Eklentiyi yapılandırın. Bazı eklentilerde, yapılandırma dosyasında ayarlayabileceğiniz isteğe bağlı parametreler bulunur. Örneğin, ani artışları önleme eklentisini yapılandırmak için aşağıdaki kıtayı ekleyebilirsiniz. Daha fazla bilgi için Spike Arrest eklentisini kullanma bölümüne bakın.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
  1. Dosyayı kaydedin.
  2. Düzenlediğiniz yapılandırma dosyasına bağlı olarak Edge Microgateway'i yeniden başlatın veya yeniden yükleyin.

Eklentiye özgü yapılandırma

Bu dizinde eklentiye özel bir yapılandırma oluşturarak yapılandırma dosyasında belirtilen eklenti parametrelerini geçersiz kılabilirsiniz:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

Burada [prefix], npm ön eki dizinidir. Bu dizini bulamıyorsanız Edge Microgateway nereye yüklenir? başlıklı makaleye bakın.

plugins/<plugin_name>/config/default.yaml. Örneğin, bu engellemeyi plugins/spikearrest/config/default.yaml içine yerleştirebilirsiniz. Bu durumda, diğer tüm yapılandırma ayarları geçersiz kılınır.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Ani artış önleme eklentisini kullanma

Ani artışları önleme eklentisi, trafikteki ani artışlara karşı koruma sağlar. Bir Edge Microgateway örneği tarafından işlenen isteklerin sayısını sınırlar.

Spike Arrest eklentisini ekleme

Eklentileri ekleme ve yapılandırma başlıklı makaleyi inceleyin.

Ani artış engelleme için örnek yapılandırma

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

Ani yükselmeyi önleme için yapılandırma seçenekleri

  • timeUnit: Ani artış engelleme yürütme penceresinin ne sıklıkta sıfırlandığı. Geçerli değerler saniye veya dakikadır.
  • allow: timeUnit sırasında izin verilecek maksimum istek sayısı. Ayrıca Birden fazla Edge Micro işlemi çalıştırıyorsanız başlıklı makaleyi inceleyin.
  • bufferSize: (isteğe bağlı, varsayılan = 0) bufferSize > 0 ise ani artışları önleme özelliği, bu sayıdaki isteği arabellekte depolar. Bir sonraki yürütme "penceresi" gerçekleşir gerçekleşmez, arabelleğe alınan istekler önce işlenir. Ayrıca Arabellek ekleme başlıklı makaleyi inceleyin.

Ani artışları önleme özelliği nasıl çalışır?

Ani trafik artışını, trafiği belirli bir istek sayısıyla sınırlamanın aksine, genel olarak ani trafik artışlarına karşı koruma sağlamanın bir yolu olarak düşünebilirsiniz. API'leriniz ve arka ucunuz belirli bir trafik miktarını işleyebilir. Ani artışları önleme politikası, trafiği istediğiniz genel miktarlara düşürmenize yardımcı olur.

Çalışma zamanı ani artışını önleme davranışı, girdiğiniz dakikadaki veya saniyedeki değerlerden beklediğinizden farklıdır.

Örneğin, dakika başına 30 istek oranı belirlediğinizi varsayalım:

spikearrest:
   timeUnit: minute
   allow: 30

Test sırasında, bir dakika içinde gönderildiği sürece 1 saniyede 30 istek gönderebileceğinizi düşünebilirsiniz. Ancak politika, ayarı bu şekilde zorunlu kılmaz. Düşündüğünüzde, 1 saniyelik süre içinde 30 istek bazı ortamlarda küçük bir ani artış olarak kabul edilebilir.

Bu durumda ne olur? Ani artış benzeri davranışları önlemek için ani artış önleme özelliği, ayarlarınızı daha küçük aralıklar halinde bölerek izin verilen trafiği düzeltir:

Dakika başına fiyatlar

Dakika başına oranlar, saniye cinsinden izin verilen istek aralıklarına göre düzeltilir. Örneğin, dakikada 30 istek şu şekilde düzeltilir:

60 saniye (1 dakika) / 30 = 2 saniyelik aralıklar veya yaklaşık olarak her 2 saniyede 1 isteğe izin verilir. 2 saniye içinde gönderilen ikinci istek başarısız olur. Ayrıca, bir dakika içinde gönderilen 31. istek başarısız olur.

Saniye başına fiyatlar

Saniye başına oranlar, milisaniyelik aralıklarla izin verilen istekler şeklinde düzeltilir. Örneğin, 10 istek/saniye şu şekilde düzeltilir:

1.000 milisaniye (1 saniye) / 10 = 100 milisaniyelik aralıklar veya yaklaşık olarak her 100 milisaniyede 1 isteğe izin verilir. 100 ms içinde gönderilen ikinci istek başarısız olur. Ayrıca, bir saniye içinde gönderilen 11. istek başarısız olur.

Sınır aşıldığında

İstek sayısı, belirtilen zaman aralığında sınırı aşarsa ani artış engelleme özelliği, HTTP 503 durumuyla birlikte şu hata mesajını döndürür:

{"error": "spike arrest policy violated"}

Tampon ekleme

Politikaya arabellek ekleme seçeneğiniz vardır. Arabelleği 10 olarak ayarladığınızı varsayalım. API'nin, ani artışları önleme sınırını aştığınızda hemen hata döndürmediğini görürsünüz. Bunun yerine, istekler arabelleğe alınır (belirtilen sayıya kadar) ve arabelleğe alınan istekler, bir sonraki uygun yürütme penceresi kullanılabilir hale gelir gelmez işlenir. Varsayılan bufferSize değeri 0'dır.

Birden fazla Edge Micro işlemi çalıştırıyorsanız

İzin verilen istek sayısı, çalışan Edge Micro işçi süreçlerinin sayısına bağlıdır. Ani artışları önleme, çalışan işlemi başına izin verilen istek sayısını hesaplar. Varsayılan olarak, Edge Micro işlemlerinin sayısı, Edge Micro'nun yüklü olduğu makinedeki CPU sayısına eşittir. Ancak Edge Micro'yu start komutundaki --processes seçeneğini kullanarak başlattığınızda çalışan süreçlerin sayısını yapılandırabilirsiniz. Örneğin, belirli bir süre içinde 100 istekte ani artış önlemenin tetiklenmesini istiyorsanız ve Edge Microgateway'i --processes 4 seçeneğiyle başlatırsanız ani artış önleme yapılandırmasında allow: 25 değerini ayarlayın. Özetle, genel kural allow yapılandırma parametresini "istenen ani artış durdurma sayısı / işlem sayısı" değerine ayarlamaktır.

Kota eklentisini kullanma

Kota, bir uygulamanın bir saat, gün, hafta veya ay içinde bir API'ye göndermesine izin verilen istek mesajlarının sayısını belirtir. Bir uygulama kota sınırına ulaştığında sonraki API çağrıları reddedilir. Ayrıca Ani artışları önleme ve kota arasındaki fark nedir? başlıklı makaleyi de inceleyin.

Kota eklentisini ekleme

Eklentileri ekleme ve yapılandırma başlıklı makaleyi inceleyin.

Apigee Edge'de ürün yapılandırması

Kotaları, API ürünlerini yapılandırdığınız Apigee Edge kullanıcı arayüzünde yapılandırırsınız. Kotayla sınırlamak istediğiniz mikro ağ geçidi farkında olan proxy'nin hangi üründe bulunduğunu bilmeniz gerekir. Bu ürün, bir geliştirici uygulamasına eklenmelidir. Geliştirici uygulamasındaki anahtarlar kullanılarak kimliği doğrulanmış API çağrıları yaptığınızda kota bu API çağrılarına uygulanır.

  1. Apigee Edge kuruluş hesabınıza giriş yapın.
  2. Edge kullanıcı arayüzünde, kotayı uygulamak istediğiniz microgateway'e duyarlı proxy ile ilişkili ürünü açın.
    1. Kullanıcı arayüzünde, Yayınla menüsünden Ürünler'i seçin.
    2. Kota uygulamak istediğiniz API'yi içeren ürünü açın.
    3. Düzenle'yi tıklayın.
    4. Kota alanında kota aralığını belirtin. Örneğin, her dakikada 100 istek. Veya 2 saatte 50.000 istek.

  1. Kaydet'i tıklayın.
  2. Ürünün bir geliştirici uygulamasına eklendiğinden emin olun. Kimliği doğrulanmış API çağrıları yapmak için bu uygulamanın anahtarlarına ihtiyacınız olacaktır.

Kota için örnek yapılandırma

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

Kota için yapılandırma seçenekleri

Kota eklentisini yapılandırmak için yapılandırma dosyanıza aşağıdaki örnekte gösterildiği gibi quotas öğesini ekleyin:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
    isHTTPStatusTooManyRequestEnabled: true
...
Seçenek Açıklama
bufferSize

(Tam sayı) bufferSize yapılandırması, Edge Microgateway'in kota sayısını Apigee Edge ile ne sıklıkta senkronize edeceğini ayarlamanıza olanak tanır. bufferSize anlamak için aşağıdaki örnek yapılandırmayı inceleyin:

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

Kota aralığı "dakika" olarak ayarlanmışsa mikro ağ geçidi, varsayılan olarak kota sayacını 5 saniyede bir Apigee Edge ile senkronize eder. Yukarıdaki yapılandırma, kota aralığı API ürününde "dakika" olarak ayarlanırsa Edge Microgateway'in, 500 istekten sonra veya 5 saniye sonra (hangisi önce gelirse) mevcut kota sayısını almak için Edge ile senkronize olacağını belirtir. Daha fazla bilgi için Kotaların nasıl sayıldığını anlama başlıklı makaleyi inceleyin.

İzin verilen zaman birimleri şunlardır: minute, hour, day, week, month ve default.

isHTTPStatusTooManyRequestEnabled

Kota ihlali varsa kota eklentisini durum 403 yerine HTTP 429 yanıt durumunu döndürecek şekilde yapılandırır.

Varsayılan: false. Varsayılan olarak veya işaret false olarak ayarlanmışsa kota aşıldığında kota, 403 HTTP durumunu döndürür.

İşaret true olarak ayarlanırsa kota aşıldığında kota, 429 HTTP durumunu döndürür.

Varsayılan HTTP dönüş durumunu 429 olarak değiştirmek için aşağıdaki yapılandırmayı kullanın:

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
...
failOpen Bu özellik etkinleştirildiğinde, kota işleme hatası oluşursa veya Edge'e gönderilen "kota uygulama" isteği uzak kota sayaçlarını güncelleyemezse kota, bir sonraki başarılı uzak kota senkronizasyonu gerçekleşene kadar yalnızca yerel sayımlara göre işlenir. Bu iki durumda da istek nesnesinde quota-failed-open işareti ayarlanır.

Kota "fail open" özelliğini etkinleştirmek için aşağıdaki yapılandırmayı ayarlayın:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId Kota yanıtlarında MP (mesaj işlemcisi) kimliğinin günlüğe kaydedilmesini etkinleştirmek için bu işareti true olarak ayarlayın.

Bu özelliği kullanmak için aşağıdaki yapılandırmayı ayarlamanız gerekir:

edgemicro:
...
quotas:
  useDebugMpId: true
...

useDebugMpId ayarlandığında Edge'den gelen kota yanıtları MP kimliğini içerir ve Edge Microgateway tarafından günlüğe kaydedilir. Örneğin:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis true olarak ayarlanırsa eklenti, kota destekli mağaza için Redis'i kullanır. Ayrıntılar için Using a Redis backing store for quota (Kota için Redis destekli depolama alanı kullanma) başlıklı makaleyi inceleyin.

Kotaların nasıl sayıldığını anlama

Kota aralığı "dakika" olarak ayarlanmışsa mikro ağ geçidi, varsayılan olarak kota sayacını 5 saniyede bir Apigee Edge ile senkronize eder. Aralık "dakika"dan daha yüksek bir seviyeye (ör. "hafta" veya "ay") ayarlanırsa varsayılan yenileme süresi 1 dakikadır.

Kota aralıklarını Apigee Edge'de tanımlanan API ürünlerinde belirttiğinizi unutmayın. Kota aralıkları, bir dakika, saat, gün, hafta veya ay için kaç isteğe izin verildiğini belirtir. Örneğin, A ürünü için kota aralığı dakikada 100 istek,B ürünü için ise saatte 10.000 istek olabilir.

Edge Microgateway quota eklentisinin YAML yapılandırması, kota aralığını ayarlamaz. Bunun yerine, yerel bir Edge Microgateway örneğinin kota sayısını Apigee Edge ile senkronize etme sıklığını ayarlamanın bir yolunu sunar.

Örneğin, Apigee Edge'de aşağıdaki kota aralıklarının belirtildiği üç API ürünü tanımlandığını varsayalım:

  • A ürünü için dakikada 100 istek kotası vardır.
  • B ürünü için saatte 5.000 istek kotası vardır.
  • C ürünü için aylık 1.000.000 istek kotası var.

Bu kota ayarlarını göz önünde bulundurarak Edge Microgateway quota eklentisi nasıl yapılandırılmalıdır? En iyi uygulama, Edge Microgateway'i API ürünlerinde tanımlanan kota aralıklarından daha düşük senkronizasyon aralıklarıyla yapılandırmaktır. Örneğin:

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

Bu yapılandırma, daha önce açıklanan API ürünleri için aşağıdaki senkronizasyon aralıklarını tanımlar:

  • A ürünü "dakika" aralığına ayarlanmıştır. Edge Microgateway, her 50. istekten veya 5 saniyeden sonra (hangisi önce gelirse) Edge ile senkronize olur.
  • B ürünü "saat" aralığına ayarlanmıştır. Edge Microgateway, her 2.000 istekten sonra veya 1 dakika sonra (hangisi önce gelirse) Edge ile senkronize olur.
  • C ürünü "ay" aralığına ayarlanmıştır. Edge Microgateway, her istekten sonra veya 1 dakika içinde (hangisi önceyse) Edge ile senkronize olur.

Bir mikro ağ geçidi örneği Edge ile her senkronize olduğunda, mikro ağ geçidinin kota sayısı, alınan kota sayısına ayarlanır.

bufferSize ayarları, kota sayacının Edge ile nasıl senkronize edileceğini ayarlamanıza olanak tanır. Yoğun trafik durumlarında bufferSize ayarları varsayılan zamana dayalı senkronizasyon tetiklenmeden önce arabellek sayacının senkronize edilmesine olanak tanır.

Kota kapsamını anlama

Kota sayısı, bir kuruluştaki bir ortamla sınırlıdır. Bu kapsamı elde etmek için Edge Microgateway, "org + env + appName + productName" kombinasyonundan oluşan bir kota tanımlayıcısı oluşturur.

Kota için Redis destekli depolama alanı kullanma

Kota için Redis destekli bir depolama alanı kullanmak istiyorsanız Synchronizer özelliği için kullanılan yapılandırmayı kullanın. Kota depolama için Redis'i kullanmak üzere gereken temel yapılandırma aşağıda verilmiştir:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
edgemicro.redis* parametreleri hakkında ayrıntılı bilgi için Senkronizasyon aracını kullanma başlıklı makaleyi inceleyin.

Kota eklentisini test etme

Kota aşıldığında istemciye HTTP 403 durumuyla birlikte aşağıdaki mesaj döndürülür:

{"error": "exceeded quota"}

Ani artış sınırlaması ile kota arasındaki fark nedir?

Mevcut iş için doğru aracı seçmek önemlidir. Kota politikaları, bir istemci uygulamasının bir saat, gün, hafta veya ay boyunca bir API'ye göndermesine izin verilen istek mesajlarının sayısını yapılandırır. Kota politikası, gelen istekleri sayan dağıtılmış bir sayaç tutarak istemci uygulamalarındaki tüketim sınırlarını zorunlu kılar.

İşletme sözleşmelerini veya HDS'leri geliştiriciler ve iş ortaklarıyla uygulamak için kota politikası kullanın. Bu politika, operasyonel trafik yönetimi için kullanılmaz. Örneğin, ücretsiz bir hizmetin trafiğini sınırlamak için kota kullanılabilirken ücretli müşterilere tam erişim izni verilebilir.

API trafiğindeki ani artışlara karşı koruma sağlamak için ani artışları engelleme özelliğini kullanın. Ani artışları önleme genellikle olası DDoS veya diğer kötü amaçlı saldırıları engellemek için kullanılır.