คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
Apigee Edge ช่วยเพิ่มความพร้อมใช้งานของ API โดยให้การรองรับในตัวสำหรับการจัดสรรภาระงานและเฟลโอเวอร์ในอินสแตนซ์เซิร์ฟเวอร์แบ็กเอนด์หลายรายการ
การกำหนดค่า TargetServer จะแยก URL ปลายทางที่เฉพาะเจาะจงจากการกำหนดค่า TargetEndpoint TargetServer แต่ละรายการจะอ้างอิงตามชื่อใน TargetEndpoint HTTPConnection คุณสามารถกำหนดค่า TargetServer ที่มีชื่ออย่างน้อย 1 รายการตามที่อธิบายไว้ในส่วนTargetEndpoint แทนที่จะกำหนด URL ที่เฉพาะเจาะจงในการกำหนดค่า
คำจำกัดความ TargetServer ประกอบด้วยชื่อ โฮสต์ และพอร์ต พร้อมองค์ประกอบเพิ่มเติมเพื่อ ระบุว่า TargetServer เปิดหรือปิดใช้
วิดีโอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดเส้นทาง API และการจัดสรรภาระงานโดยใช้เซิร์ฟเวอร์เป้าหมายได้จากวิดีโอต่อไปนี้
| วิดีโอ | คำอธิบาย |
|---|---|
| การจัดสรรภาระงาน โดยใช้เซิร์ฟเวอร์เป้าหมาย | API การจัดสรรภาระงานในเซิร์ฟเวอร์เป้าหมาย |
| การกำหนดเส้นทาง API ตาม สภาพแวดล้อมโดยใช้เซิร์ฟเวอร์เป้าหมาย | กำหนดเส้นทาง API ไปยังเซิร์ฟเวอร์เป้าหมายอื่นตามสภาพแวดล้อม |
| การกำหนดเส้นทาง API และ การจัดสรรภาระงานโดยใช้เซิร์ฟเวอร์เป้าหมาย (Edge แบบคลาสสิก) | กำหนดเส้นทาง API ไปยังเซิร์ฟเวอร์เป้าหมายอื่นตามสภาพแวดล้อมและโหลดบาลานซ์ API ในเซิร์ฟเวอร์เป้าหมายใน UI ของ Classic Edge |
ตัวอย่างการกำหนดค่า TargetServer
โค้ดต่อไปนี้กำหนดเซิร์ฟเวอร์เป้าหมาย
<TargetServer name="target1"> <Host>1.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer >
องค์ประกอบการกำหนดค่า TargetServer
ตารางต่อไปนี้อธิบายองค์ประกอบที่ใช้ในการสร้างและกำหนดค่า TargetServer
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
name |
ชื่อของการกำหนดค่า TargetServer ซึ่งต้องไม่ซ้ำกันภายใน สภาพแวดล้อม ชื่อ TargetServer ต้องประกอบด้วยอักขระที่เป็นตัวอักษรและตัวเลขคละกันเท่านั้น | ไม่มี | ใช่ |
Host |
URL ของโฮสต์ของบริการแบ็กเอนด์ (ไม่มีโปรโตคอล) | ไม่มี | ใช่ |
Port |
พอร์ตที่บริการแบ็กเอนด์กำลังรอการติดต่อสื่อสารอยู่ | ไม่มี | ใช่ |
IsEnabled |
บูลีนที่ระบุว่ามีการเปิดหรือปิดใช้การกำหนดค่า TargetServer ซึ่งช่วยให้คุณนำ TargetServer ออกจากการหมุนเวียนได้โดยไม่ต้องแก้ไขการกำหนดค่าพร็อกซี API การใช้งานทั่วไปคือการเขียนแอปหรือสคริปต์ที่เปิดหรือปิดใช้ TargetServer โดยอัตโนมัติตามข้อกำหนดด้านความจุที่คาดไว้ กำหนดการบำรุงรักษา ฯลฯ | true |
ใช่ |
การจัดการเซิร์ฟเวอร์เป้าหมายโดยใช้ UI
จัดการเซิร์ฟเวอร์เป้าหมายตามที่อธิบายไว้ด้านล่าง
Edge
วิธีจัดการเซิร์ฟเวอร์เป้าหมายโดยใช้ Edge UI
- ลงชื่อเข้าใช้ apigee.com/edge
- เลือกผู้ดูแลระบบ > สภาพแวดล้อม > เซิร์ฟเวอร์เป้าหมายในแถบนำทางด้านซ้าย
- เลือกสภาพแวดล้อมที่ต้องการ เช่น test หรือ prod
- วิธีสร้างเซิร์ฟเวอร์เป้าหมาย
- คลิก + เซิร์ฟเวอร์เป้าหมาย
- ป้อนชื่อ โฮสต์ และพอร์ตสำหรับเซิร์ฟเวอร์เป้าหมาย
เช่น
- ชื่อ: target1
- โฮสต์: 1.mybackendservice.com
- พอร์ต: 80
- เลือก SSL หากจำเป็น
- เลือกเปิดใช้เพื่อเปิดใช้เซิร์ฟเวอร์เป้าหมาย
- คลิกเพิ่ม
- วิธีแก้ไขเซิร์ฟเวอร์เป้าหมาย
- วางเคอร์เซอร์เหนือเซิร์ฟเวอร์เป้าหมายที่ต้องการแก้ไขเพื่อแสดงเมนูการดำเนินการ
- คลิก

- แก้ไขค่าเซิร์ฟเวอร์เป้าหมาย
- คลิกอัปเดต
- วิธีลบเซิร์ฟเวอร์เป้าหมาย
- วางเคอร์เซอร์เหนือเซิร์ฟเวอร์เป้าหมายที่ต้องการลบเพื่อแสดงเมนูการดำเนินการ
- คลิก

- คลิกลบเพื่อยืนยันการดำเนินการ
Classic Edge (Private Cloud)
วิธีเข้าถึงวิซาร์ดสร้างพร็อกซีโดยใช้ UI ของ Edge แบบคลาสสิก
- ลงชื่อเข้าใช้
http://ms-ip:9000โดยที่ ms-ip คือ ที่อยู่ IP หรือชื่อ DNS ของโหนดเซิร์ฟเวอร์การจัดการ - เลือก API > การกำหนดค่าสภาพแวดล้อม > เซิร์ฟเวอร์เป้าหมาย ในแถบนำทางด้านซ้าย
- เลือกสภาพแวดล้อมที่ต้องการ เช่น test หรือ prod
- วิธีสร้างเซิร์ฟเวอร์เป้าหมาย
- คลิกแก้ไข
- คลิก + เซิร์ฟเวอร์เป้าหมาย
- ป้อนชื่อ โฮสต์ และพอร์ตสำหรับเซิร์ฟเวอร์เป้าหมาย
เช่น
- ชื่อ: target1
- โฮสต์: 1.mybackendservice.com
- พอร์ต: 80
- เลือกเปิดใช้เพื่อเปิดใช้เซิร์ฟเวอร์เป้าหมาย
- คลิกบันทึก
- วิธีแก้ไขเซิร์ฟเวอร์เป้าหมาย
- คลิกแก้ไข
- แก้ไขค่าเซิร์ฟเวอร์เป้าหมาย
- คลิกบันทึก
- วิธีลบเซิร์ฟเวอร์เป้าหมาย
- คลิกแก้ไข
- คลิกลบ
การจัดการเซิร์ฟเวอร์เป้าหมายโดยใช้ API
คุณสามารถใช้ Edge API เพื่อสร้าง ลบ อัปเดต รับ และแสดงรายการเซิร์ฟเวอร์เป้าหมาย ดูข้อมูลเพิ่มเติมได้ที่ TargetServers
ใช้การเรียก API ต่อไปนี้เพื่อสร้างเซิร์ฟเวอร์เป้าหมาย
$ curl -H "Content-Type:text/xml" -X POST -d \
'<TargetServer name="target1">
<Host>1.mybackendservice.com</Host>
<Port>80</Port>
<IsEnabled>true</IsEnabled>
</TargetServer>' \
-u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
ตัวอย่างการตอบกลับ
{
"host" : "1.mybackendservice.com",
"isEnabled" : true,
"name" : "target1",
"port" : 80
}หลังจากสร้าง TargetServer แรกแล้ว ให้ใช้การเรียก API ต่อไปนี้เพื่อสร้าง TargetServer ที่ 2 การกำหนด TargetServer 2 รายการจะทำให้คุณระบุ URL 2 รายการที่ TargetEndpoint ใช้สำหรับการจัดสรรภาระงานได้ ดังนี้
$ curl -H "Content-type:text/xml" -X POST -d \
'<TargetServer name="target2">
<Host>2.mybackendservice.com</Host>
<Port>80</Port>
<IsEnabled>true</IsEnabled>
</TargetServer >' \
-u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
ตัวอย่างการตอบกลับ
{
"host" : "2.mybackendservice.com",
"isEnabled" : true,
"name" : "target2",
"port" : 80
}ใช้การเรียก API ต่อไปนี้เพื่อดึงข้อมูลรายการ TargetServer ในสภาพแวดล้อม
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
ตัวอย่างการตอบกลับ
[ "target2", "target1" ]
ตอนนี้มี TargetServer 2 รายการที่พร้อมให้ใช้กับพร็อกซี API ที่ติดตั้งใช้งานในสภาพแวดล้อมการทดสอบ หากต้องการจัดสรรภาระงานการรับส่งข้อมูลใน TargetServer เหล่านี้ คุณต้องกำหนดค่าการเชื่อมต่อ HTTP ในปลายทางเป้าหมายของพร็อกซี API เพื่อใช้ TargetServer
มี TargetServer ได้ไม่เกิน 500 รายการต่อสภาพแวดล้อม ดังที่ระบุไว้ในหัวข้อขีดจำกัด
การกำหนดค่า TargetEndpoint เพื่อกระจายภาระงานใน TargetServer ที่มีชื่อ
ตอนนี้คุณมี TargetServer 2 รายการแล้ว คุณสามารถแก้ไขการตั้งค่าการเชื่อมต่อ HTTP ของ TargetEndpoint เพื่ออ้างอิง TargetServer ทั้ง 2 รายการตามชื่อได้ดังนี้
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Server name="target1" />
<Server name="target2" />
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
</TargetEndpoint>การกำหนดค่าข้างต้นเป็นการกำหนดค่าการจัดสรรภาระงานขั้นพื้นฐานที่สุด ตัวจัดสรรภาระงานรองรับอัลกอริทึมการจัดสรรภาระงาน 3 แบบ ได้แก่ Round Robin, Weighted และ Least Connection Round Robin เป็นอัลกอริทึมเริ่มต้น เนื่องจากไม่ได้ระบุอัลกอริทึมในการกำหนดค่าข้างต้น คำขอขาออกจากพร็อกซี API ไปยังเซิร์ฟเวอร์แบ็กเอนด์จะสลับกันระหว่าง target1 และ target2
องค์ประกอบ <Path> จะสร้าง basepath ของ URI ของ TargetEndpoint สำหรับ
เซิร์ฟเวอร์เป้าหมายทั้งหมด ระบบจะใช้เฉพาะเมื่อมีการใช้ <LoadBalancer> ไม่เช่นนั้น ระบบจะไม่สนใจ ในตัวอย่างข้างต้น คำขอที่ส่งไปยัง "target1" จะเป็น
http://target1/test และเช่นเดียวกันกับเซิร์ฟเวอร์เป้าหมายอื่นๆ
การตั้งค่าตัวเลือกตัวจัดสรรภาระงาน
คุณสามารถปรับความพร้อมใช้งานได้โดยใช้ตัวเลือกสำหรับการจัดสรรภาระงานและเฟลโอเวอร์ที่ระดับตัวจัดสรรภาระงานและ TargetServer ส่วนนี้จะอธิบายตัวเลือกเหล่านี้
อัลกอริทึม
ตั้งค่าอัลกอริทึมที่ <LoadBalancer> ใช้ อัลกอริทึมที่ใช้ได้คือ RoundRobin, Weighted และ LeastConnections
ซึ่งแต่ละอัลกอริทึมมีเอกสารประกอบอยู่ด้านล่าง
การสลับกันทำงาน
อัลกอริทึมเริ่มต้นแบบการสลับกันทำงาน จะส่งต่อคำขอไปยัง TargetServer แต่ละรายการตามลำดับที่เซิร์ฟเวอร์แสดงอยู่ใน HTTP Connection ของปลายทางเป้าหมาย เช่น
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Algorithm>RoundRobin</Algorithm>
<Server name="target1" />
<Server name="target2" />
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
</TargetEndpoint>ระบุน้ำหนัก
อัลกอริทึมการจัดสรรภาระงานแบบถ่วงน้ำหนักช่วยให้คุณกำหนดค่าภาระงานการรับส่งข้อมูลตามสัดส่วนสำหรับ TargetServer ได้ LoadBalancer ที่มีการถ่วงน้ำหนักจะกระจายคำขอไปยัง TargetServer ตามสัดส่วนโดยตรง
กับน้ำหนักของ TargetServer แต่ละรายการ ดังนั้น อัลกอริทึมแบบถ่วงน้ำหนักจึงกำหนดให้คุณตั้งค่าแอตทริบิวต์ weight สำหรับ TargetServer แต่ละรายการ เช่น
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Algorithm>Weighted</Algorithm>
<Server name="target1">
<Weight>1</Weight>
</Server>
<Server name="target2">
<Weight>2</Weight>
</Server>
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
</TargetEndpoint>ในตัวอย่างนี้ ระบบจะกำหนดเส้นทางคำขอ 2 รายการไปยัง target2 สำหรับคำขอ 1 รายการที่กำหนดเส้นทางไปยัง target1
การเชื่อมต่อที่น้อยที่สุด
LoadBalancer ที่กำหนดค่าให้ใช้อัลกอริทึมการเชื่อมต่อน้อยที่สุดจะกำหนดเส้นทางคำขอขาออกไปยัง TargetServer ที่มีการเชื่อมต่อ HTTP แบบเปิดน้อยที่สุด เช่น
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Algorithm>LeastConnections</Algorithm>
<Server name="target1" />
<Server name="target2" />
</LoadBalancer>
</HTTPTargetConnection>
<Path>/test</Path>
</TargetEndpoint>ความล้มเหลวสูงสุด
จำนวนสูงสุดของคำขอที่ล้มเหลวจากพร็อกซี API ไปยัง TargetServer ซึ่งส่งผลให้ คำขอถูกเปลี่ยนเส้นทางไปยัง TargetServer อื่น
การตอบกลับล้มเหลวหมายความว่า Apigee ไม่ได้รับการตอบกลับจากเซิร์ฟเวอร์เป้าหมาย เมื่อ เกิดเหตุการณ์นี้ขึ้น ตัวนับความล้มเหลวจะเพิ่มขึ้น 1
อย่างไรก็ตาม เมื่อ Apigee ได้รับการตอบกลับจากเป้าหมาย
แม้ว่าการตอบกลับจะเป็นข้อผิดพลาด HTTP (เช่น 500) ก็จะถือว่าเป็นการตอบกลับจาก
เซิร์ฟเวอร์เป้าหมาย และระบบจะรีเซ็ตตัวนับความล้มเหลว หากต้องการช่วยให้มั่นใจว่าการตอบกลับ HTTP ที่ไม่ถูกต้อง
(เช่น 500) จะเพิ่มตัวนับความล้มเหลวเพื่อนำเซิร์ฟเวอร์ที่ไม่สมบูรณ์ออก
จากการหมุนเวียนการจัดสรรภาระงานโดยเร็วที่สุด คุณสามารถเพิ่มองค์ประกอบ <ServerUnhealthyResponse> ที่มีองค์ประกอบย่อย <ResponseCode>
ลงในการกำหนดค่าตัวจัดสรรภาระงาน นอกจากนี้ Edge จะนับการตอบกลับที่มีรหัสเหล่านั้นเป็นความล้มเหลวด้วย
ในตัวอย่างต่อไปนี้ ระบบจะนำ target1 ออกจากการหมุนเวียนหลังจากคำขอไม่สำเร็จ 5 รายการ ซึ่งรวมถึงการตอบกลับ 5XX บางรายการจากเซิร์ฟเวอร์เป้าหมาย
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Algorithm>RoundRobin</Algorithm>
<Server name="target1" />
<Server name="target2" />
<MaxFailures>5</MaxFailures>
<ServerUnhealthyResponse>
<ResponseCode>500</ResponseCode>
<ResponseCode>502</ResponseCode>
<ResponseCode>503</ResponseCode>
</ServerUnhealthyResponse>
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
</TargetEndpoint>ค่าเริ่มต้นของ MaxFailures คือ 0 ซึ่งหมายความว่า Edge จะพยายามเชื่อมต่อกับเป้าหมายสำหรับคำขอแต่ละรายการเสมอ และจะไม่นำเซิร์ฟเวอร์เป้าหมายออกจากรอบการหมุนเวียน
ขอแนะนำให้ใช้ MaxFailures > 0 กับ HealthMonitor หากกำหนดค่า MaxFailures > 0 ระบบจะนำ TargetServer ออกจากการหมุนเวียน เมื่อเป้าหมายล้มเหลวตามจำนวนครั้งที่คุณระบุ เมื่อมี HealthMonitor Apigee จะนำ TargetServer กลับไปหมุนเวียนโดยอัตโนมัติหลังจากที่เป้าหมายกลับมาทำงานอีกครั้งตาม การกำหนดค่าของ HealthMonitor นั้น ดูข้อมูลเพิ่มเติมได้ที่การตรวจสอบสถานะ
หรือหากคุณกำหนดค่า MaxFailures > 0 และไม่ได้กำหนดค่า เครื่องมือตรวจสอบสถานะ Apigee จะนำเซิร์ฟเวอร์เป้าหมายออกจากรอบโดยอัตโนมัติเมื่อ ตรวจพบความล้มเหลวครั้งแรก Apigee จะตรวจสอบสถานะของเซิร์ฟเวอร์เป้าหมายทุกๆ 5 นาทีและนำกลับไปหมุนเวียนเมื่อเซิร์ฟเวอร์ตอบสนองตามปกติ
ลองอีกครั้ง
หากเปิดใช้การลองใหม่ ระบบจะลองส่งคำขออีกครั้งทุกครั้งที่การตอบกลับล้มเหลว (ข้อผิดพลาด I/O หรือ HTTP หมดเวลา)
หรือการตอบกลับที่ได้รับตรงกับค่าที่ตั้งไว้โดย <ServerUnhealthyResponse>
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า
<ServerUnhealthyResponse> ได้ที่ความล้มเหลวสูงสุดด้านบน
โดยค่าเริ่มต้น ระบบจะตั้งค่า <RetryEnabled> เป็น true ตั้งค่าเป็น false เพื่อปิดใช้การลองอีกครั้ง
เช่น
<RetryEnabled>false</RetryEnabled>
IsFallback
คุณตั้งค่า TargetServer ได้ 1 รายการ (และเพียง 1 รายการเท่านั้น) เป็นเซิร์ฟเวอร์ "สำรอง" TargetServer สำรอง จะไม่รวมอยู่ในกิจวัตรการจัดสรรภาระงานจนกว่าตัวจัดสรรภาระงานจะระบุว่า TargetServer อื่นๆ ทั้งหมด ไม่พร้อมใช้งาน เมื่อโหลดบาลานเซอร์พิจารณาว่า TargetServer ทั้งหมดไม่พร้อมใช้งาน ระบบจะกำหนดเส้นทางการเข้าชมทั้งหมดไปยังเซิร์ฟเวอร์สำรอง เช่น
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Algorithm>RoundRobin</Algorithm>
<Server name="target1" />
<Server name="target2" />
<Server name="target3">
<IsFallback>true</IsFallback>
</Server>
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
</TargetEndpoint>การกำหนดค่าข้างต้นจะทำให้เกิดการปรับสมดุลการรับส่งคำขอแบบวนรอบระหว่างเป้าหมาย 1 และ 2 จนกว่า เป้าหมาย 1 และ 2 จะไม่พร้อมใช้งาน เมื่อเป้าหมาย 1 และ 2 ไม่พร้อมใช้งาน ระบบจะกำหนดเส้นทางการเข้าชมทั้งหมด ไปยังเป้าหมาย 3
เส้นทาง
Path กำหนดส่วน URI ที่จะต่อท้ายคำขอทั้งหมดที่ออกโดย TargetServer ไปยังเซิร์ฟเวอร์แบ็กเอนด์
องค์ประกอบนี้ยอมรับเส้นทางสตริงตามตัวอักษรหรือเทมเพลตข้อความ เทมเพลตข้อความ
ช่วยให้คุณแทนที่สตริงตัวแปรได้ในรันไทม์
ตัวอย่างเช่น ในคำจำกัดความของปลายทางเป้าหมายต่อไปนี้ ค่าของ {mypath} จะใช้สำหรับเส้นทาง
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
<LoadBalancer>
<Server name="testserver"/>
</LoadBalancer>
<Path>{mypath}</Path>
</HTTPTargetConnection>การกำหนดค่าเซิร์ฟเวอร์เป้าหมายสำหรับ TLS/SSL
หากคุณใช้ TargetServer เพื่อกำหนดบริการแบ็กเอนด์ และบริการแบ็กเอนด์
กำหนดให้การเชื่อมต่อใช้โปรโตคอล HTTPS คุณต้องเปิดใช้ TLS/SSL ในคำจำกัดความของ
TargetServer ซึ่งจำเป็นเนื่องจากแท็ก <Host> ไม่อนุญาตให้คุณ
ระบุโปรโตคอลการเชื่อมต่อ ด้านล่างนี้คือคำจำกัดความของ TargetServer สำหรับ TLS/SSL ทางเดียว
ซึ่ง Edge จะส่งคำขอ HTTPS ไปยังบริการแบ็กเอนด์
<TargetServer name="target1">
<Host>mocktarget.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer>หากบริการแบ็กเอนด์กำหนดให้ใช้ TLS/SSL แบบ 2 ทางหรือแบบร่วม คุณจะต้องกำหนดค่า TargetServer โดยใช้การตั้งค่าการกำหนดค่า TLS/SSL เดียวกันกับ TargetEndpoints
<TargetServer name="TargetServer 1">
<IsEnabled>true</IsEnabled>
<Host>www.example.com</Host>
<Port>443</Port>
<SSLInfo>
<Ciphers/>
<ClientAuthEnabled>true</ClientAuthEnabled>
<Enabled>true</Enabled>
<IgnoreValidationErrors>false</IgnoreValidationErrors>
<KeyAlias>keystore-alias</KeyAlias>
<KeyStore>keystore-name</KeyStore>
<Protocols/>
<TrustStore>truststore-name</TrustStore>
</SSLInfo>
</TargetServer >ดูข้อมูลเกี่ยวกับพร็อพเพอร์ตี้ <SSLInfo> เช่น
<Ciphers> และ <ClientAuthEnabled> ได้ที่
ข้อมูลเกี่ยวกับการตั้งค่าพร็อพเพอร์ตี้เหล่านั้นสำหรับโฮสต์เสมือนที่
การกำหนดค่าการเข้าถึง TLS ไปยัง API
สำหรับ Private Cloud
ดูวิธีการกำหนดค่า TLS/SSL ขาออกทั้งหมดได้ที่การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (Cloud และ Private Cloud)
สคีมา TargetServer
ดูสคีมาสำหรับ TargetServer และเอนทิตีอื่นๆ ได้ที่ GitHub
การตรวจสอบสุขภาพ
การตรวจสอบสถานะช่วยให้คุณปรับปรุงการกำหนดค่าการโหลดบาลานซ์ได้ด้วยการหยั่งสัญญาณ URL ของบริการแบ็กเอนด์ที่กำหนดไว้ในการกำหนดค่า TargetServer อย่างต่อเนื่อง เมื่อเปิดใช้การตรวจสอบสถานะของระบบ ระบบจะนำ TargetServer ที่ล้มเหลวกลับไปหมุนเวียนโดยอัตโนมัติเมื่อ HealthMonitor ระบุ ว่า TargetServer ใช้งานได้
การตรวจสอบสุขภาพจะทำงานร่วมกับ <MaxFailures> หากไม่ได้เปิดใช้การตรวจสอบสถานะ
<MaxFailures> จะระบุจำนวนคำขอที่ไม่สำเร็จจากพร็อกซี API ไปยัง
TargetServer ซึ่งส่งผลให้คำขอถูกเปลี่ยนเส้นทางไปยัง TargetServer อื่น
จากนั้นระบบจะนำ TargetServer ที่ล้มเหลวออกจากรอบจนกว่าคุณจะติดตั้งใช้งานพร็อกซีอีกครั้ง
เมื่อเปิดใช้การตรวจสอบสถานะ ระบบจะนำ TargetServer ที่ล้มเหลวกลับไปหมุนเวียนโดยอัตโนมัติ และไม่จำเป็นต้องติดตั้งพร็อกซี ใหม่
HealthMonitor ทำหน้าที่เป็นไคลเอ็นต์อย่างง่ายที่เรียกใช้บริการแบ็กเอนด์ผ่าน TCP หรือ HTTP
- ไคลเอ็นต์ TCP เพียงแค่ตรวจสอบว่าเปิดซ็อกเก็ตได้
- คุณกำหนดค่าไคลเอ็นต์ HTTP เพื่อส่งคำขอ HTTP ที่ถูกต้องไปยังบริการแบ็กเอนด์ คุณ
สามารถกำหนดการดำเนินการ HTTP GET, PUT, POST หรือ DELETE การตอบกลับของการเรียกใช้การตรวจสอบ HTTP ต้องตรงกับ
การตั้งค่าที่กำหนดค่าไว้ในบล็อก
<SuccessResponse>
สำเร็จและไม่สำเร็จ
เมื่อเปิดใช้การตรวจสอบสถานะของระบบ Edge จะเริ่มส่งการตรวจสอบสถานะไปยังเซิร์ฟเวอร์เป้าหมาย การตรวจสอบประสิทธิภาพการทำงานคือคำขอที่ส่งไปยังเซิร์ฟเวอร์เป้าหมายเพื่อพิจารณาว่าเซิร์ฟเวอร์เป้าหมายมีประสิทธิภาพดีหรือไม่
การตรวจสอบประสิทธิภาพอาจมีผลลัพธ์ 2 อย่างดังนี้
- สำเร็จ: ระบบจะถือว่าเซิร์ฟเวอร์เป้าหมายมีสถานะปกติเมื่อการตรวจสอบสถานะ
สำเร็จ โดยปกติแล้วปัญหานี้เกิดจากสาเหตุอย่างใดอย่างหนึ่งต่อไปนี้
- เซิร์ฟเวอร์เป้าหมายยอมรับการเชื่อมต่อใหม่กับพอร์ตที่ระบุ ตอบสนองต่อคำขอในพอร์ตนั้น แล้วปิดพอร์ตภายในกรอบเวลาที่ระบุ การตอบกลับจากเซิร์ฟเวอร์เป้าหมายมี "Connection: close"
- เซิร์ฟเวอร์เป้าหมายตอบสนองต่อคำขอตรวจสอบสถานะด้วยรหัสสถานะ HTTP 200 (ตกลง) หรือรหัสอื่นๆ ที่คุณกำหนดว่ายอมรับได้
- เซิร์ฟเวอร์เป้าหมายตอบกลับคำขอตรวจสอบสถานะด้วยเนื้อหาข้อความที่ตรงกับเนื้อหาข้อความที่คาดไว้
เมื่อ Edge ระบุว่าเซิร์ฟเวอร์มีประสิทธิภาพดี Edge จะส่งคำขอไปยังเซิร์ฟเวอร์นั้นต่อไปหรือกลับมาส่งคำขออีกครั้ง
- ไม่สำเร็จ: เซิร์ฟเวอร์เป้าหมายอาจตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จได้หลายวิธี
ขึ้นอยู่กับประเภทของการตรวจสอบ ระบบจะบันทึกความล้มเหลวเมื่อเซิร์ฟเวอร์เป้าหมายมีลักษณะดังนี้
- ปฏิเสธการเชื่อมต่อจาก Edge ไปยังพอร์ตตรวจสอบสถานะ
- ไม่ตอบสนองต่อคำขอตรวจสอบประสิทธิภาพการทำงานภายในระยะเวลาที่กำหนด
- แสดงรหัสสถานะ HTTP ที่ไม่คาดคิด
- ตอบกลับด้วยเนื้อความของข้อความที่ไม่ตรงกับเนื้อความของข้อความที่คาดไว้
เมื่อเซิร์ฟเวอร์เป้าหมายไม่ผ่านการตรวจสอบสถานะ Edge จะเพิ่มจำนวนครั้งที่เซิร์ฟเวอร์นั้นล้มเหลว หาก จำนวนความล้มเหลวสำหรับเซิร์ฟเวอร์นั้นตรงตามหรือเกินเกณฑ์ที่กำหนดไว้ล่วงหน้า (
<MaxFailures>) Edge จะหยุดส่งคำขอไปยังเซิร์ฟเวอร์นั้น
การเปิดใช้ HealthMonitor
หากต้องการสร้าง HealthMonitor ให้เพิ่มองค์ประกอบ <HealthMonitor> ลงในการกำหนดค่า HTTPConnection
ของ TargetEndpoint สำหรับพร็อกซี คุณดำเนินการนี้ใน UI ไม่ได้ แต่คุณต้องสร้างการกำหนดค่าพร็อกซีและ
อัปโหลดเป็นไฟล์ ZIP ไปยัง Edge การกำหนดค่าพร็อกซีคือคำอธิบายที่มีโครงสร้างของทุกแง่มุม
ของพร็อกซี API การกำหนดค่าพร็อกซีประกอบด้วยไฟล์ XML ในโครงสร้างไดเรกทอรีที่กำหนดไว้ล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่เอกสารอ้างอิงการกำหนดค่า
พร็อกซี API
HealthMonitor แบบง่ายจะกำหนด IntervalInSec ร่วมกับ TCPMonitor หรือ HTTPMonitor องค์ประกอบ <MaxFailures> จะระบุจำนวนคำขอที่ล้มเหลวสูงสุดจากพร็อกซี API ไปยัง TargetServer ซึ่งส่งผลให้คำขอ
ถูกเปลี่ยนเส้นทางไปยัง TargetServer อื่น โดยค่าเริ่มต้น <MaxFailures> คือ 0 ซึ่งหมายความว่า
Edge จะไม่ดำเนินการแก้ไข เมื่อกําหนดค่าการตรวจสอบสถานะ โปรดตรวจสอบว่าคุณได้ตั้งค่า
<MaxFailures> ในแท็ก
<HTTPTargetConnection>
ของแท็ก <TargetEndpoint>
เป็นค่าที่ไม่ใช่ 0
TCPMonitor
การกำหนดค่าด้านล่างนี้กำหนด HealthMonitor ที่สำรวจ TargetServer แต่ละรายการโดยการเปิดการเชื่อมต่อในพอร์ต 80 ทุกๆ 5 วินาที (พอร์ตเป็นตัวเลือกที่ไม่บังคับ หากไม่ได้ระบุไว้ พอร์ต TCPMonitor คือพอร์ต TargetServer)
- หากการเชื่อมต่อล้มเหลวหรือใช้เวลาเชื่อมต่อมากกว่า 10 วินาที ระบบจะเพิ่มจำนวนครั้งที่ล้มเหลว ขึ้น 1 ครั้งสำหรับ TargetServer นั้น
- หากเชื่อมต่อสำเร็จ ระบบจะรีเซ็ตจำนวนความล้มเหลวของ TargetServer เป็น 0
คุณเพิ่ม HealthMonitor เป็นองค์ประกอบย่อยขององค์ประกอบ HTTPTargetConnetion ของ TargetEndpoint ได้ ดังที่แสดงด้านล่าง
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Algorithm>RoundRobin</Algorithm>
<Server name="target1" />
<Server name="target2" />
<MaxFailures>5</MaxFailures>
</LoadBalancer>
<Path>/test</Path>
<HealthMonitor>
<IsEnabled>true</IsEnabled>
<IntervalInSec>5</IntervalInSec>
<TCPMonitor>
<ConnectTimeoutInSec>10</ConnectTimeoutInSec>
<Port>80</Port>
</TCPMonitor>
</HealthMonitor>
</HTTPTargetConnection>
. . .HealthMonitor ที่มีองค์ประกอบการกำหนดค่า TCPMonitor
ตารางต่อไปนี้อธิบายองค์ประกอบการกำหนดค่า TCPMonitor
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
IsEnabled |
บูลีนที่เปิดหรือปิดใช้ HealthMonitor | เท็จ | ไม่ |
IntervalInSec |
ช่วงเวลาในหน่วยวินาทีระหว่างคำขอ TCP ที่ทำการสำรวจแต่ละครั้ง | 0 | ใช่ |
ConnectTimeoutInSec |
เวลาที่ต้องสร้างการเชื่อมต่อกับพอร์ต TCP จึงจะถือว่าสำเร็จ การเชื่อมต่อไม่สำเร็จในช่วงเวลาที่ระบุจะถือว่าเป็นการเชื่อมต่อไม่สำเร็จ ซึ่งจะเพิ่มจำนวนการเชื่อมต่อไม่สำเร็จของตัวจัดสรรภาระงานสำหรับ TargetServer | 0 | ใช่ |
Port |
ไม่บังคับ พอร์ตที่จะสร้างการเชื่อมต่อ TCP หากไม่ได้ระบุไว้ พอร์ต TCPMonitor จะเป็นพอร์ต TargetServer | 0 | ไม่ |
HTTPMonitor
HealthMonitor ตัวอย่างที่ใช้ HTTPMonitor จะส่งคำขอ GET ไปยังบริการแบ็กเอนด์ทุกๆ 5 วินาที
ตัวอย่างด้านล่างจะเพิ่มส่วนหัวการให้สิทธิ์ HTTP ขั้นพื้นฐานลงในข้อความคำขอ
การกำหนดค่าการตอบกลับจะกำหนดการตั้งค่าที่จะเปรียบเทียบกับการตอบกลับจริงจากบริการแบ็กเอนด์ ในตัวอย่างด้านล่าง การตอบกลับที่คาดไว้คือโค้ดตอบกลับ HTTP 200 และส่วนหัว HTTP ที่กำหนดเอง ImOK ซึ่งมีค่าเป็น YourOK หากคำตอบไม่ตรงกัน การกำหนดค่าตัวจัดสรรภาระงานจะถือว่าคำขอไม่สำเร็จ
HTTPMonitor รองรับบริการแบ็กเอนด์ที่กำหนดค่าให้ใช้โปรโตคอล HTTP และ HTTPS ทางเดียว แต่ไม่รองรับรายการต่อไปนี้
- HTTPS แบบ 2 ทาง (หรือที่เรียกว่า TLS/SSL แบบ 2 ทาง)
- ใบรับรองแบบ Self-signed
โปรดทราบว่าการตั้งค่าคำขอและการตอบกลับทั้งหมดในเครื่องมือตรวจสอบ HTTP จะเฉพาะเจาะจงกับ บริการแบ็กเอนด์ที่ต้องเรียกใช้
<HealthMonitor>
<IsEnabled>true</IsEnabled>
<IntervalInSec>5</IntervalInSec>
<HTTPMonitor>
<Request>
<IsSSL>true</IsSSL>
<ConnectTimeoutInSec>10</ConnectTimeoutInSec>
<SocketReadTimeoutInSec>30</SocketReadTimeoutInSec>
<Port>80</Port>
<Verb>GET</Verb>
<Path>/healthcheck</Path>
<Header name="Authorization">Basic 12e98yfw87etf</Header>
<IncludeHealthCheckIdHeader>true</IncludeHealthCheckIdHeader>
</Request>
<SuccessResponse>
<ResponseCode>200</ResponseCode>
<Header name="ImOK">YourOK</Header>
</SuccessResponse>
</HTTPMonitor>
</HealthMonitor>
HealthMonitor ที่มีองค์ประกอบการกำหนดค่า HTTPMonitor
ตารางต่อไปนี้อธิบายองค์ประกอบการกำหนดค่า HTTPMonitor
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
IsEnabled |
บูลีนที่เปิดหรือปิดใช้ HealthMonitor | เท็จ | ไม่ |
IntervalInSec |
ช่วงเวลาในหน่วยวินาทีระหว่างคำขอการสำรวจแต่ละรายการ | 0 | ใช่ |
Request |
ตัวเลือกการกำหนดค่าสำหรับข้อความคำขอขาออกที่ HealthMonitor ส่งไปยัง TargetServer ในการหมุนเวียน เส้นทางไม่รองรับตัวแปร |
ไม่มี | ใช่ |
IsSSL |
ระบุว่าจะใช้ HTTPS (HTTP ที่ปลอดภัย) สำหรับการเชื่อมต่อการตรวจสอบหรือไม่ ค่าที่อาจเป็นไปได้
|
เท็จ | ไม่ |
ConnectTimeoutInSec |
เวลาเป็นวินาทีที่การแฮนด์เชคการเชื่อมต่อ TCP กับบริการ HTTP ต้อง เสร็จสมบูรณ์จึงจะถือว่าสำเร็จ การเชื่อมต่อไม่สำเร็จในช่วงเวลาที่ระบุจะถือเป็น ความล้มเหลว ซึ่งจะเพิ่มจำนวนความล้มเหลวของ LoadBalancer สำหรับ TargetServer | 0 | ไม่ |
SocketReadTimeoutInSec |
เวลาเป็นวินาทีที่ต้องอ่านข้อมูลจากบริการ HTTP จึงจะถือว่าสำเร็จ หากอ่านในช่วงเวลาที่ระบุไม่สำเร็จ ระบบจะนับเป็นการอ่านไม่สำเร็จ และเพิ่มจำนวนการอ่านไม่สำเร็จของ LoadBalancer สำหรับ TargetServer | 0 | ไม่ |
Port |
พอร์ตที่จะสร้างการเชื่อมต่อ HTTP กับบริการแบ็กเอนด์ | ไม่มี | ไม่ |
Verb |
คำกริยา HTTP ที่ใช้สำหรับคำขอ HTTP แบบสำรวจแต่ละรายการไปยังบริการแบ็กเอนด์ | ไม่มี | ไม่ |
Path |
เส้นทางที่ต่อท้าย URL ที่กำหนดไว้ใน TargetServer ใช้องค์ประกอบเส้นทางเพื่อ กำหนดค่า "ปลายทางการสำรวจ" ในบริการ HTTP | ไม่มี | ไม่ |
| ช่วยให้คุณ
ติดตามคำขอตรวจสอบสถานะในระบบต้นทางได้ IncludeHealthCheckIdHeader รับค่าบูลีน และค่าเริ่มต้นคือ false หากตั้งค่าเป็น true จะมีHeaderชื่อ X-Apigee-Healthcheck-Id
ซึ่งจะได้รับการแทรกในคำขอตรวจสอบสถานะ ค่าของส่วนหัวจะได้รับการกำหนดแบบไดนามิกและมีรูปแบบเป็น
ORG/ENV/SERVER_UUID/N โดยที่ ORG คือ
ชื่อองค์กร ENV คือชื่อสภาพแวดล้อม
SERVER_UUID คือรหัสที่ไม่ซ้ำกันซึ่งระบุ MP และ
N คือจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่วันที่ 1 มกราคม 1970
ตัวอย่างส่วนหัวของคำขอที่ได้ X-Apigee-Healthcheck-Id: orgname/envname/E8C4D2EE-3A69-428A-8616-030ABDE864E0/1586802968123
|
เท็จ | ไม่ |
Payload |
เนื้อหา HTTP ที่สร้างขึ้นสำหรับคำขอ HTTP แบบสำรวจแต่ละรายการ โปรดทราบว่าองค์ประกอบนี้ไม่ จำเป็นสำหรับคำขอ GET | ไม่มี | ไม่ |
SuccessResponse |
ตัวเลือกการจับคู่สำหรับข้อความการตอบกลับ HTTP ขาเข้าที่สร้างขึ้นโดยบริการแบ็กเอนด์ที่สำรวจ การตอบกลับที่ไม่ตรงกันจะเพิ่มจำนวนความล้มเหลวขึ้น 1 | ไม่มี | ไม่ |
ResponseCode |
โค้ดการตอบกลับ HTTP ที่คาดว่าจะได้รับจาก TargetServer ที่สำรวจ โค้ด ที่แตกต่างจากโค้ดที่ระบุจะทำให้เกิดข้อผิดพลาด และระบบจะเพิ่มจำนวนสำหรับ บริการแบ็กเอนด์ที่สำรวจ คุณกำหนดองค์ประกอบ ResponseCode ได้หลายรายการ | ไม่มี | ไม่ |
Headers |
รายการส่วนหัว HTTP อย่างน้อย 1 รายการและค่าที่คาดว่าจะได้รับจากบริการแบ็กเอนด์ที่สำรวจ ส่วนหัวหรือค่า HTTP ใดๆ ในการตอบกลับที่แตกต่างจากส่วนหัวหรือค่าที่ระบุจะทำให้เกิดข้อผิดพลาด และระบบจะเพิ่มจำนวนสำหรับ TargetServer ที่สำรวจ 1 คุณกำหนดองค์ประกอบส่วนหัวได้หลายรายการ | ไม่มี | ไม่ |