การใช้ปลั๊กอิน

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

Edge Microgateway เวอร์ชัน 2.4.x

ผู้ชม

หัวข้อนี้มีไว้สำหรับโอเปอเรเตอร์ Edge Microgateway ที่ต้องการใช้ปลั๊กอินที่มีอยู่ซึ่งติดตั้งด้วยไมโครเกตเวย์ นอกจากนี้ยังกล่าวถึงการจับกุมและปลั๊กอินโควต้าโดยละเอียด (ทั้ง 2 อย่างนี้รวมอยู่ในการติดตั้ง) หากคุณเป็นนักพัฒนาซอฟต์แวร์ที่ต้องการพัฒนาปลั๊กอินใหม่ โปรดดูการพัฒนาปลั๊กอินที่กำหนดเอง

ปลั๊กอิน Edge Microgateway คืออะไร

ปลั๊กอินคือโมดูล Node.js ที่เพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โมดูลปลั๊กอินจะมีรูปแบบที่สอดคล้องกันและจัดเก็บไว้ในตำแหน่งที่ Edge Microgateway รู้จัก ซึ่งช่วยให้ไมโครเกตเวย์ค้นพบและโหลดปลั๊กอินได้โดยอัตโนมัติ Edge Microgateway มีปลั๊กอินที่มีอยู่หลายรายการ และคุณยังสร้างปลั๊กอินที่กำหนดเองได้อีกด้วยตามที่อธิบายไว้ในการพัฒนาปลั๊กอินที่กำหนดเอง

ปลั๊กอินที่มีอยู่ซึ่งมาพร้อมกับ Edge Microgateway

Edge Microgateway ให้มาพร้อมกับปลั๊กอินหลายรายการที่มีอยู่แล้วในขณะติดตั้ง ซึ่งรวมถึง

ปลั๊กอิน เปิดใช้โดยค่าเริ่มต้นแล้ว คำอธิบาย
Analytics มี ส่งข้อมูลวิเคราะห์จาก Edge Microgateway ไปยัง Apigee Edge
oauth มี เพิ่มโทเค็น OAuth และการตรวจสอบคีย์ API ไปยัง Edge Microgateway โปรดดูการตั้งค่าและการกำหนดค่า Edge Microgateway
โควต้า ไม่ได้ บังคับใช้โควต้าคำขอที่ส่งไปยัง Edge Microgateway ใช้ Apigee Edge เพื่อจัดเก็บและจัดการโควต้า ดูการใช้ปลั๊กอินโควต้า
การจับกุม ไม่ได้ ป้องกันการเข้าชมที่เพิ่มขึ้นอย่างรวดเร็วและการโจมตี DoS โปรดดูการใช้ปลั๊กอินการจับกุมการเพิ่มขึ้นอย่างฉับพลัน
ตัวพิมพ์ใหญ่-เล็ก ไม่ได้ ตัวอย่างพร็อกซีที่มีความคิดเห็นซึ่งมีไว้เพื่อเป็นแนวทางเพื่อช่วยให้นักพัฒนาซอฟต์แวร์เขียนปลั๊กอินที่กำหนดเอง ดูปลั๊กอินตัวอย่าง Edge Microgateway
accumulate-request ไม่ได้ รวบรวมข้อมูลคำขอลงในออบเจ็กต์เดียวก่อนส่งข้อมูลไปยังตัวแฮนเดิลถัดไปในเชนปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการเปลี่ยนรูปแบบที่ต้องทำงานกับออบเจ็กต์เนื้อหาคำขอแบบสะสมเดี่ยว
สะสม-คำตอบ ไม่ได้ รวบรวมข้อมูลการตอบกลับลงในออบเจ็กต์เดียวก่อนส่งข้อมูลไปยังตัวแฮนเดิลถัดไปในเชนปลั๊กอิน มีประโยชน์ในการเขียนปลั๊กอินการเปลี่ยนรูปแบบที่ต้องทำงานกับออบเจ็กต์เนื้อหาการตอบกลับแบบรวมรายการเดียว
เปลี่ยนรูปแบบอักษรตัวพิมพ์ใหญ่ ไม่ได้ แปลงข้อมูลคำขอหรือการตอบกลับ ปลั๊กอินนี้แสดงให้เห็นถึงแนวทางปฏิบัติแนะนำของการใช้งานปลั๊กอิน Transform ปลั๊กอินตัวอย่างทำการเปลี่ยนรูปแบบที่ไม่สำคัญ (แปลงข้อมูลคำขอหรือการตอบกลับเป็นตัวพิมพ์ใหญ่) แต่จะนำไปปรับใช้เพื่อเปลี่ยนรูปแบบประเภทอื่นๆ เช่น XML เป็น JSON ได้อย่างง่ายดาย
json2xml ไม่ได้ แปลงข้อมูลคำขอหรือการตอบกลับตามส่วนหัวการยอมรับหรือประเภทเนื้อหา โปรดดูรายละเอียดในเอกสารประกอบเกี่ยวกับปลั๊กอินใน GitHub
หน่วยความจำโควต้า ไม่ได้ บังคับใช้โควต้าคำขอที่ส่งไปยัง Edge Microgateway จัดเก็บและจัดการโควต้าในหน่วยความจำในเครื่อง
healthcheck ไม่ได้ แสดงผลข้อมูลเกี่ยวกับกระบวนการ Edge Microgateway เช่น การใช้หน่วยความจำ การใช้ CPU ฯลฯ หากต้องการใช้ปลั๊กอิน ให้เรียก URL /healthcheck ในอินสแตนซ์ Edge Microgateway ปลั๊กอินนี้มีไว้เพื่อเป็นตัวอย่างที่คุณใช้เพื่อใช้งานปลั๊กอินการตรวจสอบประสิทธิภาพการทำงานของคุณเองได้

จะหาปลั๊กอินที่มีอยู่ได้จากที่ใด

ปลั๊กอินที่มีอยู่ซึ่งมาพร้อมกับ Edge Microgateway คือที่นี่ โดยที่ [prefix] คือไดเรกทอรีคำนำหน้า npm ดูว่าEdge Microgateway ติดตั้งอยู่ที่ใด

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

การเพิ่มและกำหนดค่าปลั๊กอิน

ทำตามรูปแบบนี้เพื่อเพิ่มและกำหนดค่าปลั๊กอิน

  1. หยุด Edge Microgateway
  2. เปิดไฟล์การกำหนดค่า Edge Microgateway โปรดดูรายละเอียดที่ตัวเลือกเปลี่ยนแปลงการกำหนดค่า
  3. เพิ่มปลั๊กอินลงในองค์ประกอบ plugins:sequence ของไฟล์การกำหนดค่า ดังนี้ ปลั๊กอินจะทำงานตามลําดับที่ปรากฏในรายการนี้
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. กำหนดค่าปลั๊กอิน ปลั๊กอินบางรายการมีพารามิเตอร์ที่ไม่บังคับซึ่งคุณกำหนดค่าในไฟล์การกำหนดค่าได้ ตัวอย่างเช่น คุณเพิ่มกลุ่มภาษาต่อไปนี้เพื่อกำหนดค่าปลั๊กอินการจับกุมการเพิ่มขึ้นอย่างฉับพลันได้ ดูข้อมูลเพิ่มเติมได้ที่การใช้ปลั๊กอินการจับกุมการเพิ่มขึ้น
    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. บันทึกไฟล์
  2. รีสตาร์ทหรือโหลด Edge Microgateway ใหม่โดยขึ้นอยู่กับไฟล์การกำหนดค่าที่คุณแก้ไข ตามที่อธิบายไว้ในการเปลี่ยนแปลงการกำหนดค่า

การกำหนดค่าเฉพาะปลั๊กอิน

คุณลบล้างพารามิเตอร์ของปลั๊กอินที่ระบุในไฟล์การกำหนดค่าได้โดยสร้างการกำหนดค่าเฉพาะปลั๊กอินในไดเรกทอรีนี้

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

โดยที่ [prefix] คือไดเรกทอรีคำนำหน้า npm ดูว่าEdge Microgateway ติดตั้งอยู่ที่ใด

plugins/<plugin_name>/config/default.yaml เช่น คุณใส่บล็อกนี้ลงใน plugins/spikearrest/config/default.yaml ได้และการบล็อกนี้จะลบล้างการตั้งค่าการกำหนดค่าอื่นๆ

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

การใช้ปลั๊กอินการจับกุมการเพิ่มขึ้นอย่างฉับพลัน

ส่วนนี้จะพูดถึงปลั๊กอินการจับกุมอย่างฉับพลัน

เกี่ยวกับการจับกุมอย่างฉับพลัน

Spike Arrest ป้องกันการเข้าชมที่เพิ่มขึ้นอย่างรวดเร็ว ซึ่งจะควบคุมจำนวนคำขอที่ประมวลผลโดยอินสแตนซ์ Edge Microgateway โปรดดูข้อมูลเพิ่มเติมที่การจับกุมการเพิ่มขึ้นอย่างไร โปรดดูข้อมูลเพิ่มเติมในหัวข้อการจับกุมและโควต้าแตกต่างกันอย่างไร

การเพิ่มปลั๊กอินการจับกุมการเพิ่มขึ้นอย่างฉับพลัน

โปรดดูขั้นตอนพื้นฐานในการปฏิบัติตามสำหรับปลั๊กอินต่างๆ ที่การเพิ่มและการกำหนดค่าปลั๊กอิน

ตัวอย่างการกำหนดค่าสำหรับการยับยั้งการเพิ่มขึ้นอย่างรวดเร็ว

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

ตัวเลือกการกำหนดค่าสำหรับการยับยั้งการเพิ่มขึ้นอย่างรวดเร็ว

  • timeUnit: ความถี่ในการรีเซ็ตหน้าต่างดำเนินการระงับการเพิ่มขึ้นอย่างฉับพลัน ค่าที่ถูกต้องคือค่าวินาทีหรือนาที
  • allow: จำนวนคำขอที่อนุญาตสูงสุดในระหว่าง timeUnit
  • bufferSize: (ไม่บังคับ, ค่าเริ่มต้น = 0) หากBufferSize > 0 การปิดกั้นการขัดขวางจัดเก็บจำนวนคำขอดังกล่าวไว้ในบัฟเฟอร์ ทันทีที่มี "กรอบเวลา" การดำเนินการถัดไปเกิดขึ้น ระบบจะประมวลผลคำขอที่บัฟเฟอร์ก่อน โปรดดูหัวข้อ การเพิ่มบัฟเฟอร์

การจับกุมการเพิ่มขึ้นอย่างฉับพลันทำงานอย่างไร

โดยทั่วไปแล้ว การยับยั้งการเพิ่มขึ้นอย่างฉับพลันเป็นวิธีป้องกันการเข้าชมที่เพิ่มขึ้นอย่างรวดเร็ว ไม่ใช่วิธีจำกัดปริมาณการรับส่งข้อมูลให้เป็นไปตามจำนวนคำขอที่ตั้งไว้เท่านั้น API และแบ็กเอนด์รองรับการรับส่งข้อมูลจำนวนหนึ่งได้ และนโยบายการระงับการเพิ่มขึ้นอย่างรวดเร็วช่วยให้การรับส่งข้อมูลไปยังปริมาณทั่วไปที่ต้องการเป็นไปอย่างราบรื่น

พฤติกรรมการยับยั้งการเพิ่มขึ้นอย่างรวดเร็วรันไทม์แตกต่างจากสิ่งที่คุณคาดว่าจะเห็นจากค่าลิเทอรัลต่อนาทีหรือต่อวินาทีที่คุณป้อน

ตัวอย่างเช่น สมมติว่าคุณระบุอัตราคำขอ 30 รายการต่อนาที เช่นนี้

spikearrest:
   timeUnit: minute
   allow: 30

ในการทดสอบ คุณอาจคิดว่าจะส่งคำขอได้ 30 คำขอใน 1 วินาที ตราบใดที่คำขอมาถึงภายใน 1 นาที แต่นั่นไม่ใช่วิธีที่นโยบายบังคับใช้การตั้งค่า ลองคิดดูนะว่าคำขอ 30 รายการภายในช่วง 1 วินาทีอาจถือว่าเป็นการเพิ่มขึ้นอย่างมากในบางสภาพแวดล้อม

แล้วสิ่งที่เกิดขึ้นนั้นเป็นอะไรกันแน่ เพื่อป้องกันพฤติกรรมที่มีลักษณะเหมือนการเพิ่มขึ้นอย่างรวดเร็ว การจับจองที่เพิ่มขึ้นจะช่วยให้การเข้าชมที่ได้รับอนุญาตราบรื่นยิ่งขึ้น โดยแบ่งการตั้งค่าออกเป็นช่วงๆ ดังนี้

อัตราต่อนาที

ระบบจะปรับอัตราต่อนาทีเป็นคำขอเป็นช่วงเวลาไม่กี่วินาทีที่ได้รับอนุญาต ตัวอย่างเช่น ระบบจะปรับคำขอ 30 รายการต่อนาทีให้เรียบเนียนดังนี้

60 วินาที (1 นาที) / 30 = ช่วงเวลา 2 วินาที หรือประมาณ 1 คำขอในทุกๆ 2 วินาที คำขอที่ 2 ภายใน 2 วินาทีจะล้มเหลว และคำขอครั้งที่ 31 ภายใน 1 นาทีก็จะล้มเหลวด้วย

อัตราต่อวินาที

อัตราต่อวินาทีจะถูกปรับเป็นคำขอที่อนุญาตในหน่วยมิลลิวินาที ตัวอย่างเช่น ระบบจะปรับคำขอ 10 รายการ/วินาทีให้ราบรื่นดังนี้

1, 000 มิลลิวินาที (1 วินาที) / 10 = ช่วงเวลา 100 มิลลิวินาที หรือประมาณ 1 คำขอที่อนุญาตทุก 100 มิลลิวินาที คำขอที่ 2 ภายใน 100 มิลลิวินาทีจะล้มเหลว และคำขอครั้งที่ 11 ภายใน 1 วินาทีก็จะล้มเหลวด้วย

เมื่อเกินขีดจำกัด

หากจำนวนคำขอเกินขีดจำกัดภายในช่วงเวลาที่ระบุ การแจ้งเตือนการเพิ่มขึ้นอย่างรวดเร็วจะแสดงข้อความแสดงข้อผิดพลาดนี้พร้อมด้วยสถานะ HTTP 503 ดังนี้

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

การเพิ่มบัฟเฟอร์

คุณเลือกเพิ่มบัฟเฟอร์ลงในนโยบายได้ สมมติว่าคุณตั้งค่าบัฟเฟอร์เป็น 10 คุณจะเห็นว่า API ไม่แสดงผลข้อผิดพลาดทันทีเมื่อมีการใช้งานเกินขีดจำกัดการกักเก็บที่เพิ่มขึ้น แต่คำขอจะถูกบัฟเฟอร์ (ตามจำนวนที่ระบุ) และคำขอที่บัฟเฟอร์จะได้รับการประมวลผลทันทีที่หน้าต่างการดำเนินการที่เหมาะสมถัดไปพร้อมใช้งาน bufferSize เริ่มต้นคือ 0

การใช้ปลั๊กอินโควต้า

ส่วนนี้จะพูดถึงปลั๊กอินโควต้า

เกี่ยวกับปลั๊กอินโควต้า

โควต้าจะระบุจำนวนข้อความคำขอที่แอปได้รับอนุญาตให้ส่งไปยัง API ในช่วงเวลา 1 ชั่วโมง วัน สัปดาห์ หรือเดือน เมื่อแอปใช้โควต้าถึงขีดจำกัดแล้ว การเรียก API ที่ตามมาจะถูกปฏิเสธ ดูข้อมูลเพิ่มเติมเกี่ยวกับการจับกุมการเพิ่มขึ้นและโควต้าแตกต่างกันอย่างไร

การเพิ่มปลั๊กอินโควต้า

โปรดดูขั้นตอนพื้นฐานในการปฏิบัติตามสำหรับปลั๊กอินต่างๆ ที่การเพิ่มและการกำหนดค่าปลั๊กอิน

การกำหนดค่าผลิตภัณฑ์ใน Apigee Edge

คุณจะกำหนดค่าโควต้าใน UI ของ Apigee Edge ที่คุณกำหนดค่าผลิตภัณฑ์ API ได้ คุณต้องทราบว่าผลิตภัณฑ์ใดมีพร็อกซี Microgateway-Aware ที่คุณต้องการจำกัดโควต้า คุณต้องเพิ่มผลิตภัณฑ์นี้ลงในแอปของนักพัฒนาซอฟต์แวร์ เมื่อคุณทำการเรียก API ที่มีการตรวจสอบสิทธิ์โดยใช้คีย์ในแอปนักพัฒนาซอฟต์แวร์ โควต้าจะใช้กับการเรียก API เหล่านั้น

  1. ลงชื่อเข้าสู่ระบบบัญชีองค์กร Apigee Edge
  2. ใน Edge UI ให้เปิดผลิตภัณฑ์ที่เชื่อมโยงกับพร็อกซี microgateway-Aware ที่คุณต้องการใช้โควต้า
    1. ใน UI ให้เลือกผลิตภัณฑ์จากเมนู "เผยแพร่"
    2. เปิดผลิตภัณฑ์ที่มี API ที่คุณต้องการใช้โควต้า
    3. คลิกแก้ไข
    4. ในช่องโควต้า ให้ระบุช่วงโควต้า เช่น คำขอ 100 รายการทุก 1 นาที หรือ 50,000 คำขอทุก 2 ชั่วโมง

  1. คลิกบันทึก
  2. โปรดตรวจสอบว่าได้เพิ่มผลิตภัณฑ์ลงในแอปนักพัฒนาซอฟต์แวร์แล้ว คุณจะต้องใช้คีย์จากแอปนี้เพื่อเรียกใช้ API ที่ตรวจสอบสิทธิ์แล้ว

ตัวอย่างการกำหนดค่าสำหรับโควต้า

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

ตัวเลือกการกำหนดค่าสำหรับโควต้า

ไม่มีตัวเลือกการกำหนดค่าเพิ่มเติมสำหรับปลั๊กอินโควต้า

การทดสอบปลั๊กอินโควต้า

เมื่อเกินโควต้า ระบบจะส่งสถานะ HTTP 403 กลับไปยังไคลเอ็นต์ พร้อมกับข้อความต่อไปนี้

{"error": "exceeded quota"}

การจับกุมการเพิ่มขึ้นอย่างรวดเร็วแตกต่างกันอย่างไร

คุณควรเลือกเครื่องมือที่เหมาะกับงานที่กำลังทำอยู่ นโยบายโควต้าจะกำหนดค่าจำนวนข้อความคำขอที่แอปไคลเอ็นต์ได้รับอนุญาตให้ส่งไปยัง API ในช่วงเวลา 1 ชั่วโมง วัน สัปดาห์ หรือเดือน นโยบายโควต้าบังคับใช้ขีดจำกัดการใช้งานในแอปไคลเอ็นต์โดยดูแลรักษาตัวนับแบบกระจายซึ่งจะนับคำขอขาเข้า

ใช้นโยบายโควต้าเพื่อบังคับใช้สัญญาหรือ SLA ทางธุรกิจกับนักพัฒนาซอฟต์แวร์และพาร์ทเนอร์แทนการจัดการการเข้าชมในส่วนการดำเนินงาน เช่น อาจมีการใช้โควต้าเพื่อจำกัดการเข้าชมของบริการฟรี แต่ในขณะเดียวกันก็อนุญาตให้เข้าถึงอย่างเต็มรูปแบบสำหรับลูกค้าที่ชำระเงิน โปรดดูเพิ่มเติมที่การใช้ปลั๊กอินโควต้า

ใช้การจับกุมการเพิ่มขึ้นอย่างรวดเร็วเพื่อป้องกันการรับส่งข้อมูลของ API ที่พุ่งสูงขึ้นอย่างกะทันหัน โดยปกติแล้ว การจับกุมอย่างฉับพลันจะใช้เพื่อขัดขวาง DDoS หรือการโจมตีที่เป็นอันตรายอื่นๆ