คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
Edge Microgateway v. 2.5.x
กลุ่มเป้าหมาย
หัวข้อนี้มีไว้สำหรับผู้ปฏิบัติงาน Edge Microgateway ที่ต้องการใช้ปลั๊กอินที่มีอยู่ซึ่ง ติดตั้งไว้กับ Microgateway นอกจากนี้ยังกล่าวถึงปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลันและการจำกัดโควต้าโดยละเอียด (ทั้ง 2 รายการรวมอยู่ในการติดตั้ง) หากคุณเป็นนักพัฒนาแอปที่ต้องการพัฒนาปลั๊กอินใหม่ โปรดดูหัวข้อพัฒนา ปลั๊กอินที่กำหนดเอง
ปลั๊กอิน Edge Microgateway คืออะไร
ปลั๊กอินคือโมดูล Node.js ที่เพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โมดูลปลั๊กอิน เป็นไปตามรูปแบบที่สอดคล้องกันและจัดเก็บไว้ในตำแหน่งที่ Edge Microgateway ทราบ ซึ่งช่วยให้ Microgateway ค้นพบและโหลดโมดูลเหล่านั้นได้โดยอัตโนมัติ Edge Microgateway มีปลั๊กอินที่มีอยู่หลายรายการ และคุณยังสร้างปลั๊กอินที่กำหนดเองได้ด้วยตามที่อธิบายไว้ในหัวข้อพัฒนาปลั๊กอินที่กำหนดเอง
ปลั๊กอินที่มีอยู่ซึ่งรวมอยู่ใน Edge Microgateway
Edge Microgateway มีปลั๊กอินที่มีอยู่หลายรายการเมื่อติดตั้ง ซึ่งรวมถึงปลั๊กอินต่อไปนี้
| ปลั๊กอิน | เปิดใช้โดยค่าเริ่มต้นแล้ว | คำอธิบาย |
|---|---|---|
| analytics | ใช่ | ส่งข้อมูล Analytics จาก Edge Microgateway ไปยัง Apigee Edge |
| oauth | ใช่ | เพิ่มการตรวจสอบโทเค็น OAuth และคีย์ API ลงใน Edge Microgateway ดูหัวข้อ การตั้งค่า และการกำหนดค่า Edge Microgateway |
| quota | ไม่ | บังคับใช้โควต้ากับคำขอที่ส่งไปยัง Edge Microgateway ใช้ Apigee Edge เพื่อจัดเก็บและจัดการ โควต้า ดูหัวข้อการใช้ปลั๊กอินโควต้า |
| spikearrest | ไม่ | ป้องกันการเพิ่มขึ้นอย่างฉับพลันของปริมาณการเข้าชมและการโจมตีแบบ DoS ดูหัวข้อ การใช้ปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน |
| header-uppercase | ไม่ | พร็อกซีตัวอย่างที่มีคำอธิบายประกอบ ซึ่งมีไว้เพื่อเป็นแนวทางช่วยนักพัฒนาแอปเขียนปลั๊กอินที่กำหนดเอง ดู ปลั๊กอินตัวอย่าง Edge Microgateway |
| accumulate-request | ไม่ | สะสมข้อมูลคำขอเป็นออบเจ็กต์เดียวก่อนที่จะส่งข้อมูลไปยังแฮนเดิลอร์ถัดไปในเชนปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการแปลงที่ต้องทำงานกับออบเจ็กต์เนื้อหาคำขอสะสมรายการเดียว |
| accumulate-response | ไม่ | สะสมข้อมูลการตอบสนองเป็นออบเจ็กต์เดียวก่อนที่จะส่งข้อมูลไปยังตัวแฮนเดิลถัดไปในเชนปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการแปลงที่ต้องทำงานกับออบเจ็กต์เนื้อหาการตอบสนองสะสมรายการเดียว |
| transform-uppercase | ไม่ | แปลงข้อมูลคำขอหรือการตอบสนอง ปลั๊กอินนี้แสดงถึงการใช้งานปลั๊กอินการแปลงตามแนวทางปฏิบัติแนะนำ ปลั๊กอินตัวอย่างจะทำการแปลงแบบง่าย (แปลงข้อมูลคำขอหรือการตอบสนองเป็นตัวพิมพ์ใหญ่) แต่สามารถปรับเปลี่ยนให้ทำการแปลงประเภทอื่นๆ ได้อย่างง่ายดาย เช่น XML เป็น JSON |
| json2xml | ไม่ | แปลงข้อมูลคำขอหรือการตอบสนองตามส่วนหัว Accept หรือ Content-Type ดูรายละเอียดได้ในเอกสารประกอบของปลั๊กอินใน GitHub |
| quota-memory | ไม่ | บังคับใช้โควต้ากับคำขอที่ส่งไปยัง 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
การเพิ่มและการกำหนดค่าปลั๊กอิน
ทำตามรูปแบบต่อไปนี้เพื่อเพิ่มและกำหนดค่าปลั๊กอิน
- หยุด Edge Microgateway
- เปิดไฟล์การกำหนดค่า Edge Microgateway ดูรายละเอียดได้ที่ การทำการเปลี่ยนแปลงการกำหนดค่า สำหรับตัวเลือก
- เพิ่มปลั๊กอินลงในองค์ประกอบ
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
- กำหนดค่าปลั๊กอิน ปลั๊กอินบางรายการมีพารามิเตอร์ที่ไม่บังคับซึ่งคุณกำหนดค่าได้ใน
ไฟล์การกำหนดค่า เช่น คุณสามารถเพิ่ม stanza ต่อไปนี้เพื่อกำหนดค่าปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน
ดูข้อมูลเพิ่มเติมได้ที่การใช้ปลั๊กอินการป้องกันช่วงที่เพิ่มขึ้น
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
- บันทึกไฟล์
- รีสตาร์ทหรือโหลด 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
การใช้ปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลัน
ปลั๊กอินการป้องกันการเพิ่มขึ้นอย่างฉับพลันช่วยป้องกันการเพิ่มขึ้นอย่างฉับพลันของปริมาณการเข้าชม โดยจะควบคุมจำนวนคำขอ ที่อินสแตนซ์ 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 ดูเพิ่มเติมที่ ที่ หากคุณเรียกใช้กระบวนการ Edge Micro หลายรายการ
- 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
หากคุณเรียกใช้กระบวนการ Edge Micro หลายรายการ
จำนวนคำขอที่อนุญาตจะขึ้นอยู่กับจำนวนกระบวนการทำงานของ Edge Micro ที่กำลังทำงานอยู่
การป้องกันการเพิ่มขึ้นอย่างฉับพลันจะคำนวณจำนวนคำขอที่อนุญาตต่อกระบวนการทำงาน โดยค่าเริ่มต้น
จำนวนกระบวนการ Edge Micro จะเท่ากับจำนวน CPU ในเครื่องที่ติดตั้ง Edge Micro
อย่างไรก็ตาม คุณสามารถกำหนดค่าจำนวนกระบวนการทำงานได้เมื่อเริ่ม Edge Micro
โดยใช้ตัวเลือก --processes ในคำสั่ง start ตัวอย่างเช่น หากคุณ
ต้องการให้การป้องกันการเพิ่มขึ้นอย่างฉับพลันทริกเกอร์ที่คำขอ 100 รายการในช่วงเวลาที่กำหนด และหากคุณเริ่ม Edge
Microgateway ด้วยตัวเลือก --processes 4 ให้ตั้งค่า allow: 25 ในการ
กำหนดค่าการป้องกันการเพิ่มขึ้นอย่างฉับพลัน โดยสรุป กฎง่ายๆ คือให้ตั้งค่าพารามิเตอร์การกำหนดค่า allow config
เป็นค่า "จำนวนการป้องกันการเพิ่มขึ้นอย่างฉับพลันที่ต้องการ / จำนวนกระบวนการ"
การใช้ปลั๊กอินโควต้า
โควต้าจะระบุจำนวนข้อความคำขอที่แอปได้รับอนุญาตให้ส่งไปยัง API ในช่วงเวลา 1 ชั่วโมง 1 วัน 1 สัปดาห์ หรือ 1 เดือน เมื่อแอปถึงขีดจำกัดโควต้า ระบบจะปฏิเสธการเรียก API ครั้งต่อๆ ไป ดูเพิ่มเติมที่การป้องกันการเพิ่มขึ้นอย่างฉับพลันและการจำกัดโควต้าแตกต่างกันอย่างไร
การเพิ่มปลั๊กอินโควต้า
ดูหัวข้อ การเพิ่มและการกำหนดค่าปลั๊กอิน
การกำหนดค่าผลิตภัณฑ์ใน Apigee Edge
คุณกำหนดค่าโควต้าใน UI ของ Apigee Edge ซึ่งเป็นที่ที่คุณกำหนดค่าผลิตภัณฑ์ API คุณต้องทราบ ว่าผลิตภัณฑ์ใดมีพร็อกซีที่รับรู้ถึง Microgateway ซึ่งคุณต้องการจำกัดด้วยโควต้า คุณต้องเพิ่มผลิตภัณฑ์นี้ลงในแอปของนักพัฒนาแอป เมื่อคุณเรียก API ที่มีการตรวจสอบสิทธิ์โดยใช้ คีย์ในแอปของนักพัฒนาแอป ระบบจะใช้โควต้ากับการเรียก API เหล่านั้น
- เข้าสู่ระบบบัญชีขององค์กร Apigee Edge
- ใน UI ของ Edge ให้เปิดผลิตภัณฑ์ที่เชื่อมโยงกับพร็อกซีที่รับรู้ถึง Microgateway ซึ่ง
คุณต้องการใช้โควต้า
- ใน UI ให้เลือกผลิตภัณฑ์ จากเมนู "เผยแพร่"
- เปิดผลิตภัณฑ์ที่มี API ที่คุณต้องการใช้โควต้า
- คลิกแก้ไข
- ในช่อง "โควต้า" ให้ระบุช่วงเวลาโควต้า เช่น คำขอ 100 รายการทุกๆ
1 นาที หรือคำขอ 50,000 รายการทุกๆ 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 ชั่วโมง 1 วัน 1 สัปดาห์ หรือ 1 เดือน นโยบายโควต้าจะบังคับใช้ขีดจำกัดการใช้งานกับแอปไคลเอ็นต์โดย การดูแลรักษาตัวนับแบบกระจายที่จะนับคำขอขาเข้า
ใช้นโยบายโควต้าเพื่อบังคับใช้สัญญาทางธุรกิจหรือ SLA กับนักพัฒนาแอปและพาร์ทเนอร์ ไม่ใช่เพื่อการจัดการปริมาณการเข้าชมในการดำเนินงาน ตัวอย่างเช่น คุณอาจใช้โควต้าเพื่อจำกัดปริมาณการเข้าชมสำหรับ บริการฟรี ขณะเดียวกันก็อนุญาตให้ลูกค้าที่ชำระเงินเข้าถึงได้อย่างเต็มที่
ใช้การป้องกันการเพิ่มขึ้นอย่างฉับพลันเพื่อป้องกันการเพิ่มขึ้นอย่างฉับพลันของปริมาณการเข้าชม API โดยปกติแล้ว การป้องกันการเพิ่มขึ้นอย่างฉับพลันจะ ใช้เพื่อป้องกันการโจมตีแบบ DDoS หรือการโจมตีที่เป็นอันตรายอื่นๆ ที่อาจเกิดขึ้น