Eklentileri kullanma

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

Edge Microgateway v. 3.3.x

Kitle

Bu konu, mikro ağ geçidiyle yüklenmiş mevcut eklentileri kullanmak isteyen Edge Microgateway operatörlerine yöneliktir. Ayrıca, artış durdurma ve kota eklentileri ayrıntılı olarak tartışılır (her ikisi de kuruluma dahildir). Yeni eklentiler geliştirmek isteyen bir geliştiriciyseniz Özel eklentiler geliştirme başlıklı makaleyi inceleyin.

Edge Mikro Geçit eklentisi nedir?

Eklenti, Edge Mikro Ağ Geçidi'ne işlev ekleyen bir Node.js modülüdür. Eklenti modülleri tutarlı bir düzende tutulur ve Edge Microgateway tarafından bilinen bir konumda depolanır. Böylece mikro ağ geçidi, bunları otomatik olarak keşfedip yükleyebilir. Edge Microgateway, birkaç mevcut eklenti içerir ve Özel eklentiler geliştirme konusunda açıklandığı gibi özel eklentiler de oluşturabilirsiniz.

Edge Microgateway ile birlikte sunulan mevcut eklentiler

Kurulum sırasında Edge Microgateway ile bir dizi eklenti sağlanır. Aşağıdaki tabloda en sık kullanılan eklentilerden bazıları açıklanmaktadır.

Eklenti Varsayılan olarak etkindir Açıklama
analiz Evet Analiz verilerini Edge Microgateway'den Apigee Edge'e gönderir.
oauth Evet Edge Mikro Ağ Geçidi'ne OAuth jetonu ve API Anahtarı doğrulaması ekler. Edge Mikro Ağ Geçidi'ni kurma ve yapılandırma sayfasını inceleyin.
kota Hayır Edge Mikro Ağ Geçidi isteklerinde kotayı zorunlu kılar. Kotaları depolamak ve yönetmek için Apigee Edge'i kullanır. Kota eklentisini kullanma başlıklı makaleyi inceleyin.
araştırma Hayır Trafik artışlarına ve DoS saldırılarına karşı koruma sağlar. Sıçramayı durdurma eklentisini kullanma bölümünü inceleyin.
üstbilgi-büyük harf Hayır Geliştiricilerin özel eklentiler yazmalarına yardımcı olmak üzere hazırlanmış bir rehber olarak hazırlanmış, yorumlanmış, örnek bir proxy. Edge Microgateway örnek eklentisi bölümüne göz atın.
topla-istek Hayır Verileri eklenti zincirinde bir sonraki işleyiciye iletmeden önce istek verilerini tek bir nesnede toplar. Tek bir toplanmış istek içeriği nesnesi üzerinde çalışması gereken dönüştürme eklentileri yazmak için yararlıdır.
toplanmış-yanıt Hayır Verileri eklenti zincirinde bir sonraki işleyiciye iletmeden önce yanıt verilerini tek bir nesnede toplar. Birikmiş tek bir yanıt içeriği nesnesi üzerinde çalışması gereken dönüştürme eklentileri yazmak için yararlıdır.
büyük-harf-dönüştür Hayır İstek veya yanıt verilerini dönüştürür. Bu eklenti, bir dönüşüm eklentisinin en iyi uygulamasını temsil eder. Örnek eklenti, sıradan bir dönüştürme işlemi gerçekleştirir (istek veya yanıt verilerini büyük harfe dönüştürür). Ancak XML'den JSON'a dönüştürme gibi diğer dönüşüm türlerini gerçekleştirmek için kolayca uyarlanabilir.
json2xml Hayır Kabul veya içerik türü üstbilgilerine göre istek veya yanıt verilerini dönüştürür. Ayrıntılı bilgi için GitHub'daki eklenti dokümanlarına bakın.
kota-bellek Hayır Edge Mikro Ağ Geçidi isteklerinde kotayı zorunlu kılar. Yerel bellekteki kotaları depolar ve yönetir.
healthcheck Hayır Edge Microgateway süreciyle (bellek kullanımı, cpu kullanımı vb.) ilgili bilgileri 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 eklentiler nerede bulunur?

Edge Microgateway ile birlikte sunulan mevcut eklentiler burada bulunur. Burada [prefix], npm ön ek dizinidir. Bu dizini bulamıyorsanız Edge Microgateway nerede yüklü? bölümüne 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 düzeni uygulayın:

  1. Edge Mikro Ağ Geçidi'ni durdurun.
  2. Bir Edge Microgateway yapılandırma dosyasını açın. Ayrıntılar için 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 gibi ekleyin. Eklentiler bu listede göründükleri sırayla çalıştırı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ı eklentilerin, yapılandırma dosyasında yapılandırabileceğiniz isteğe bağlı parametreleri vardır. Örneğin, ani artış durdurma eklentisini yapılandırmak için aşağıdaki dizeyi ekleyebilirsiniz. Daha fazla bilgi için Sıçrama önleme 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 Mikro Ağ Geçidi'ni yeniden başlatın veya yeniden yükleyin.

Eklentiye özel 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 ek dizinidir. Bu dizini bulamıyorsanız Edge Microgateway nerede yüklü? bölümüne bakın.

plugins/<plugin_name>/config/default.yaml. Örneğin, bu engellemeyi plugins/spikearrest/config/default.yaml içine yerleştirebilirsiniz ve bu blok diğer yapılandırma ayarlarını geçersiz kılar.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Sıçrama durdurma eklentisini kullanma

Ani artış engelleme eklentisi, trafikteki artışlara karşı koruma sağlar. Edge Microgateway örneği tarafından işlenen istek sayısını kısıtlar.

Çivi durdurma eklentisi ekleme

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

Ani artış durdurması 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 artış durması için yapılandırma seçenekleri

  • timeUnit: Ani durdurma yürütme aralığının 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ı. Birden fazla Edge Micro işlemi çalıştırıyorsanız başlıklı makaleyi de inceleyin.
  • bufferSize: (isteğe bağlı, varsayılan = 0) bufferSize > 0 ise artış durdurma bu sayıda istek sayısını bir arabellekte depolar. Bir sonraki yürütme "window"u gerçekleşir gerçekleşmez, ilk olarak arabelleğe alınan istekler işlenir. Ayrıca Tampon ekleme konusuna da bakın.

Ani artış yakalaması nasıl çalışır?

Ani artış durdurmasını, trafiği belirli bir sayıda istekle sınırlamanın bir yolu yerine, genel olarak trafik artışlarına karşı korumanın bir yolu olarak düşünebilirsiniz. API'leriniz ve arka ucunuz belirli bir miktarda trafiği yönetebilir. Ani artış durdurma politikası ise trafiği istediğiniz genel miktarlarda azaltmanıza yardımcı olur.

Çalışma zamanı artış durdurma davranışı, girdiğiniz dakika veya saniye başına değişmez değerlerden görmeyi bekleyebileceğinizden farklıdır.

Örneğin, aşağıdaki gibi dakikada 30 istek hızı belirlediğinizi varsayalım:

spikearrest:
   timeUnit: minute
   allow: 30

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

Peki, tam olarak ne olacak? Ani artış benzeri davranışları önlemek için ayarlarınızı aşağıdaki gibi daha kısa aralıklara bölerek izin verilen trafiği yumuşatır:

Dakika başına fiyatlar

Dakika başına fiyatlar, izin verilen saniye aralıklarına dönüştürülür. Örneğin, dakika başına 30 istek şu şekilde yumuşatılır:

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

Saniye başına fiyatlar

Saniye başına fiyatlar, milisaniyelik aralıklarla izin verilen isteklere dönüştürülür. Örneğin, 10 istek/saniye şu şekilde yumuşatılır:

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

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

İstek sayısı belirtilen zaman aralığı içinde sınırı aşarsa ani artış durdurma değeri şu hata mesajını HTTP 503 durumuyla döndürür:

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

Arabellek ekleme

Politikaya tampon ekleyebilirsiniz. Tamponu 10 olarak ayarladığınızı varsayalım. Ani artış durdurma sınırını aştığınızda API'nin hemen hata döndürmediğini görürsünüz. Bunun yerine, istekler belirtilen sayıya kadar arabelleğe alınır (belirtilen sayıya kadar) ve arabelleğe alınan istekler bir sonraki uygun yürütme aralığı kullanılabilir olur olmaz işlenir. Varsayılan bufferSize 0'dır.

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

İzin verilen isteklerin sayısı, çalışan Edge Mikro çalışan işlemlerinin sayısına bağlıdır. Ani artış, ç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 start komutundaki --processes seçeneğini kullanarak Edge Micro'yu başlattığınızda çalışan işlemlerinin sayısını yapılandırabilirsiniz. Örneğin, artış durdurmanın belirli bir dönemde 100 istekte tetiklenmesini istiyorsanız ve Edge Microgateway'i --processes 4 seçeneğiyle başlatırsanız artış durdurma yapılandırmasında allow: 25 değerini ayarlayın. Özetle, genel kural allow config parametresini "istenen artış durdurma sayısı / işlem sayısı" değerine ayarlamaktır.

Kota eklentisini kullanma

Kota, bir uygulamanın saat, gün, hafta veya ay boyunca bir API'ye göndermesine izin verilen istek mesajı sayısını belirtir. Bir uygulama kota sınırına ulaştığında sonraki API çağrıları reddedilir. Ani artış durdurma ve kota arasındaki fark nedir? bölümünü de inceleyin.

Kota eklentisini ekleme

Eklenti 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. Hangi ürünün, kotayla sınırlandırmak istediğiniz mikro ağ geçidine duyarlı proxy'yi içerdiğini bilmeniz gerekir. Bu ürün, bir geliştirici uygulamasına eklenmelidir. Geliştirici uygulamasında anahtarlar kullanılarak kimliği doğrulanan API çağrıları yaptığınızda kota, bu API çağrılarına uygulanır.

  1. Apigee Edge kurumsal hesabınıza giriş yapın.
  2. Edge kullanıcı arayüzünde, kotayı uygulamak istediğiniz mikro ağ geçidi duyarlı proxy ile ilişkili ürünü açın.
    1. Kullanıcı arayüzündeki Yayınla menüsünden Ürünler'i seçin.
    2. Kotayı 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, dakikada 100 istek. Veya 2 saatte bir 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 uygulamadaki anahtarlara ihtiyacınız olacak.

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 quotas öğesini aşağıdaki örnekte gösterildiği gibi yapılandırma dosyanıza 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
...
Option 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ızı sağlar. bufferSize öğesini anlamak için aşağıdaki örnek yapılandırmayı inceleyin:

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

Varsayılan olarak, kota aralığı "dakika" olarak ayarlanırsa mikro ağ geçidi, kota sayacını Apigee Edge'le her 5 saniyede bir senkronize eder. Yukarıdaki yapılandırmada, API ürününde kota aralığı "dakika" olarak ayarlanırsa Edge Microgateway, her 500 istekte bir veya 5 saniye sonra (hangisi önce gerçekleşirse) geçerli kota sayısını almak için Edge ile senkronize olur. Daha fazla bilgi için Kotaların nasıl sayıldığını anlama bölümüne bakın.

İzin verilen süre birimleri şunları içerir: minute, hour, day, week, month ve default.

isHTTPStatusTooManyRequestEnabled

Kota ihlali olması durumunda kota eklentisini, durum 403 yerine HTTP 429 yanıt durumu döndürecek şekilde yapılandırır.

Varsayılan: false. Varsayılan olarak veya işaret false değerine ayarlanırsa kota, kota aşıldığında 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öndürme 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 "kota uygulama" isteği uzak kota sayaçlarını güncelleyemezse kota, yalnızca bir sonraki başarılı uzaktan kota senkronizasyonu gerçekleşene kadar yerel sayılara göre işlenir. Her iki durumda da istek nesnesinde bir quota-failed-open işareti ayarlanır.

Kotanın "açılamadı" ö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şlemci) kimliğinin günlük kaydını 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 ayarlanırsa 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 destekleme deposu için Redis kullanır. Ayrıntılar için Kota için Redis yedekleme deposu kullanma başlıklı makaleye bakın.

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

Varsayılan olarak, kota aralığı "dakika" olarak ayarlanırsa mikro ağ geçidi, kota sayacını Apigee Edge'le her 5 saniyede bir senkronize eder. Aralık "dakika" değerinden daha yüksek bir seviyeye (ör. "hafta" veya "ay") ayarlanırsa varsayılan yenileme dönemi 1 dakikadır.

Apigee Edge'de tanımlanan API ürünlerinde kota aralıklarını belirtmeniz önemlidir. Kota aralıkları bir dakika, saat, gün, hafta veya ay için kaç isteğe izin verildiğini belirtir. Örneğin, Ürün A'nın kota aralığı dakikada 100 istek,Ürün B'nin kota aralığı 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 sağlar.

Örneğin, Apigee Edge'de aşağıdaki kota aralıklarına göre tanımlanmış üç API ürünü olduğunu varsayalım:

  • Ürün A'nın dakikada 100 istek kotası vardır
  • Ürün B'nin saatte 5.000 istek kotası vardır
  • Ürün C'nin aylık 1000.000 istek kotası vardır

Bu kota ayarları göz önünde bulundurulduğunda Edge Microgateway quota eklentisi nasıl yapılandırılmalıdır? En iyi uygulama, Edge Mikro Ağ Geçidi'ni 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 ayarlanır. Edge Mikro Ağ Geçidi, her 50. istekte veya 5 saniyeden sonra (hangisi önce gelirse) Edge ile senkronize edilir.
  • B ürünü "saat" aralığına ayarlanmıştır. Edge Microgateway, her 2.000. istekte veya 1 dakikadan sonra (hangisi önce gelirse) Edge ile senkronize edilir.
  • C Ürünü "ay" aralığına ayarlanır. Edge Microgateway, her bir istekte veya 1 dakikadan sonra (hangisi önce gelirse) Edge ile senkronize edilir.

Bir mikro ağ geçidi örneğinin Edge ile her senkronize edilişinde, 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. Trafiğin yüksek olduğu durumlarda bufferSize ayarları, varsayılan zamana dayalı senkronizasyon tetiklenmeden önce arabellek sayacının senkronize edilmesine izin verir.

Kota kapsamını anlama

Kota sayısı, kuruluştaki bir ortama göre belirlenir. Edge Microgateway, bu kapsamı elde etmek için "org + env + appName + productName" öğelerinin kombinasyonundan oluşan bir kota tanımlayıcısı oluşturur.

Kota için bir Redis yedekleme deposu kullanma

Kota için bir Redis yedekleme deposu kullanmak üzere Senkronizasyon Aracı özelliğinde kullanılan yapılandırmayı kullanın. Kota depolama alanı olarak Redis kullanmak için gereken temel yapılandırma aşağıda verilmiştir:

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

quotas:
  useRedis: true
edgemicro.redis* parametreleriyle ilgili ayrıntılar için Senkronize ediciyi kullanma sayfasına göz atın.

Kota eklentisini test etme

Kota aşıldığında istemciye aşağıdaki mesajla birlikte bir HTTP 403 durumu döndürülür:

{"error": "exceeded quota"}

Ani artış durdurma ile kota arasındaki fark nedir?

Elinizdeki iş için doğru aracı seçmek önemlidir. Kota politikaları; bir istemci uygulamasının saat, gün, hafta veya ay boyunca bir API'ye göndermesine izin verilen istek mesajı sayısını yapılandırır. Kota politikası, gelen istekleri sayan dağıtılmış bir sayacı koruyarak istemci uygulamalarında tüketim sınırları uygular.

Operasyonel trafik yönetimi yerine geliştiriciler ve iş ortaklarıyla iş sözleşmelerini veya HDS'leri zorunlu kılmak için bir kota politikası kullanın. Örneğin kota, ödeme yapan müşterilere tam erişime izin verirken ücretsiz bir hizmet için trafiği sınırlandırmak için kullanılabilir.

API trafiğindeki ani artışlardan korunmak için artış durdurma özelliğini kullanın. Genellikle ani artış önleme özelliği olası DDoS saldırılarını veya diğer kötü amaçlı saldırıları önlemek için kullanılır.