Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Trong Apigee Edge, Bộ định tuyến xử lý tất cả lưu lượng truy cập API đến. Điều đó có nghĩa là tất cả các yêu cầu HTTP và HTTPS đến một proxy API Edge trước tiên sẽ được Edge Router xử lý. Do đó, yêu cầu proxy API phải được chuyển đến địa chỉ IP và cổng mở trên Bộ định tuyến.
Máy chủ ảo cho phép bạn lưu trữ nhiều tên miền trên một máy chủ hoặc nhóm máy chủ. Đối với Edge, các máy chủ tương ứng với Bộ định tuyến Edge. Bằng cách xác định máy chủ ảo trên một Bộ định tuyến, bạn có thể xử lý các yêu cầu đến nhiều miền.
Máy chủ ảo trên Edge xác định một giao thức (HTTP hoặc HTTPS), cùng với một cổng Bộ định tuyến và một bí danh máy chủ. Bí danh máy chủ lưu trữ thường là tên miền DNS liên kết với địa chỉ IP của Bộ định tuyến.
Ví dụ: hình ảnh sau đây cho thấy một Bộ định tuyến có hai định nghĩa về máy chủ ảo:
Trong ví dụ này, có 2 định nghĩa về máy chủ ảo. Một xử lý các yêu cầu HTTPS trên miền domainName1, miền còn lại xử lý các yêu cầu HTTP trên domainName2.
Khi có yêu cầu đến một proxy API, Bộ định tuyến sẽ so sánh tiêu đề Máy chủ và số cổng của yêu cầu đến với danh sách bí danh máy chủ do tất cả các máy chủ ảo xác định để xác định máy chủ ảo nào xử lý yêu cầu.
Dưới đây là cấu hình mẫu cho máy chủ ảo:
Antipattern
Việc xác định nhiều máy chủ ảo có cùng bí danh máy chủ và số cổng trong cùng/các môi trường khác nhau của một tổ chức hoặc giữa các tổ chức sẽ dẫn đến nhầm lẫn tại thời điểm định tuyến các yêu cầu API và có thể gây ra lỗi/hành vi không mong muốn.
Hãy sử dụng một ví dụ để giải thích những tác động của việc có nhiều máy chủ ảo có cùng bí danh máy chủ.
Giả sử có 2 máy chủ ảo sandbox and secure được xác định bằng cùng một bí danh máy chủ, tức là api.company.abc.com trong một môi trường:
Với chế độ thiết lập nêu trên, có thể xảy ra 2 trường hợp như mô tả trong các phần sau.
Tình huống 1 : Một Proxy API được định cấu hình để chỉ chấp nhận các yêu cầu đến một trong các hộp cát máy chủ ảo
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>Trong trường hợp này, khi các ứng dụng khách thực hiện lệnh gọi đến một Proxy API cụ thể bằng cách sử dụng bí danh máy chủ api.company.abc.com, các ứng dụng này sẽ thỉnh thoảng gặp lỗi 404 kèm theo thông báo:
Unable to identify proxy for host: secure
Điều này là do Router gửi các yêu cầu đến cả máy chủ ảo sandbox và secure. Khi các yêu cầu được định tuyến đến máy chủ ảo sandbox, các ứng dụng khách sẽ nhận được phản hồi thành công. Tuy nhiên, khi các yêu cầu được định tuyến đến máy chủ ảo secure, các ứng dụng khách sẽ gặp lỗi 404 vì API Proxy không được định cấu hình để chấp nhận các yêu cầu trên máy chủ ảo secure.
Trường hợp 2 : Một API Proxy được định cấu hình để chấp nhận các yêu cầu đối với cả hộp cát máy chủ ảo và bảo mật
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>Trong trường hợp này, khi các ứng dụng khách thực hiện lệnh gọi đến một API Proxy cụ thể bằng cách sử dụng bí danh máy chủ api.company.abc.com, chúng sẽ nhận được phản hồi hợp lệ dựa trên logic của proxy.
Tuy nhiên, điều này khiến dữ liệu không chính xác được lưu trữ trong Analytics vì các yêu cầu API được định tuyến đến cả hai máy chủ ảo, trong khi các yêu cầu thực tế chỉ được gửi đến một máy chủ ảo.
Điều này cũng có thể ảnh hưởng đến thông tin ghi nhật ký và mọi dữ liệu khác dựa trên máy chủ ảo.
Tác động
- Lỗi 404 vì các yêu cầu API có thể được định tuyến đến một máy chủ ảo mà API Proxy có thể không được định cấu hình để chấp nhận các yêu cầu.
- Dữ liệu Analytics không chính xác vì các yêu cầu API được định tuyến đến tất cả các máy chủ ảo có cùng bí danh máy chủ lưu trữ trong khi các yêu cầu chỉ được thực hiện cho một máy chủ ảo cụ thể.
Phương pháp hay nhất
- Đừng xác định nhiều máy chủ ảo có cùng bí danh máy chủ và số cổng trong cùng một môi trường hoặc các môi trường khác nhau của một tổ chức.
Nếu bạn cần xác định nhiều máy chủ ảo, hãy sử dụng các bí danh máy chủ khác nhau trong mỗi máy chủ ảo như minh hoạ dưới đây:
