Sử dụng VPC Reachability Analyzer để khám phá các đường dẫn mạng trên nhiều AWS Regions

Khách hàng của Amazon Web Services (AWS) có thể sử dụng cơ sở hạ tầng toàn cầu của AWS để triển khai các workload đến nhiều AWS Regions. Họ có thể tạo các mạng toàn cầu trải dài trên nhiều AWS Regions để kết nối các workload này với nhau và với các mạng on-premises. Một mẫu thiết kế phổ biến là sử dụng một tài khoản mạng trung tâm AWS để sở hữu các tài nguyên mạng dùng chung, chẳng hạn như AWS Transit Gateway, được sử dụng để cung cấp kết nối mạng đến các tài khoản AWS khác có tài nguyên workload.

Là một quản trị viên mạng, bạn có thể muốn phát hiện và chẩn đoán kết nối mạng giữa các tài nguyên do các tài khoản khác nhau sở hữu và nằm ở các AWS Regions khác nhau. Bạn có thể sử dụng VPC Reachability Analyzer, một công cụ phân tích cấu hình cho phép bạn kiểm tra xem có đường dẫn mạng giữa tài nguyên nguồn và tài nguyên đích hay không. Tại thời điểm viết bài này, các tài nguyên nguồn và đích trong một đường dẫn được phân tích bởi VPC Reachability Analyzer phải nằm trong cùng một AWS Region.

Trong bài viết blog này, chúng tôi sẽ chỉ cho bạn cách xâu chuỗi nhiều đường dẫn trong VPC Reachability Analyzer để phân tích kết nối giữa các tài nguyên nằm ở nhiều AWS Regions.

Yêu cầu trước
Chúng tôi giả định bạn đã quen thuộc với các cấu trúc của Amazon Virtual Private Cloud (Amazon VPC) như subnets, route tables và VPC Reachability Analyzer.

Chúng tôi cũng giả định rằng bạn đã tạo một tài khoản quản trị viên được ủy quyền để phân tích các tài nguyên trên nhiều tài khoản bằng VPC Reachability Analyzer, như được mô tả trong tài liệu và hướng dẫn này.

Giải pháp này giả định rằng các VPC trong mỗi AWS Region được kết nối với nhau bằng một Transit Gateway trong AWS Region đó, và các transit gateways trong nhiều AWS Regions được kết nối với nhau bằng Transit Gateway peering.

Giải pháp này được triển khai dưới dạng một script Python. Bạn phải có Python 3 và AWS SDK for Python (Boto3) được cài đặt trên máy mà bạn dự định chạy script. Script này được thiết kế để thực thi với các thông tin xác thực API của một AWS Identity and Access Management (IAM) principal (chẳng hạn như IAM Role) trong tài khoản quản trị viên được ủy quyền của VPC Reachability Analyzer.

Chính sách do AWS quản lý được gọi là “AmazonVPCReachabilityAnalyzerFullAccessPolicy” phải được đính kèm vào IAM Role để cấp quyền phân tích các đường dẫn bằng VPC Reachability Analyzer.

Xem lại cài đặt
Hình dưới đây cho thấy kiến trúc mạng mà chúng tôi sử dụng để minh họa giải pháp.

Hình 1 Kiến trúc mạng để thể hiện giải pháp.
Cấu hình của chúng tôi sử dụng ba tài khoản AWS:

  • Tài khoản 1: Tài khoản này có các tài nguyên nằm ở US East (Ohio).
  • Tài khoản 2: Tài khoản này có các tài nguyên ở US West (Oregon).
  • Tài khoản Mạng Trung Tâm: Tài khoản này sở hữu các cấu trúc mạng: bốn Transit Gateways, hai ở mỗi vùng AWS, và các Transit Gateway peerings được hiển thị trong hình trước. Ngoài ra, tài khoản này là tài khoản quản trị được ủy quyền cho VPC Reachability Analyzer.

Hướng dẫn
Tùy chọn dòng lệnh
Script này có các tùy chọn dòng lệnh sau:

  • source-ip: địa chỉ IP của tài nguyên nguồn.
  • source-resource: ARN đầy đủ của tài nguyên nguồn.
  • destination-ip: địa chỉ IP của tài nguyên đích.
  • destination-resource: ARN đầy đủ của tài nguyên đích.
  • destination-port: cổng đích được sử dụng để đánh giá kết nối.
  • protocol: TCP hoặc UDP (mặc định là TCP).
  • max-paths: trong trường hợp có nhiều đường khác nhau giữa các vùng AWS nguồn và đích, script này có thể mất nhiều thời gian để hoàn thành. Sử dụng tham số này để giới hạn số lượng đường cần được xem xét giữa hai vùng AWS. Như hiển thị trong hình trước, có hai đường riêng biệt giữa hai vùng AWS.

Tổng quan giải pháp
Giải pháp này yêu cầu Transit Gateways làm cơ chế nền tảng để cung cấp kết nối mạng. Đầu tiên, giải pháp này lấy tên các vùng AWS nguồn và đích từ các ARN tài nguyên nguồn và đích được cung cấp như tùy chọn dòng lệnh. Sau đó, script xác định các Transit Gateway peerings giữa hai vùng AWS. Đối với ví dụ hiển thị trong hình trước, có hai Transit Gateway peerings giữa các vùng.

Đối với mỗi Transit Gateway peering, giải pháp này tạo một cặp phân tích VPC Reachability Analyzer khu vực, một cho mỗi ‘chặng’ của đường dẫn đa vùng. Đối với cấu hình của chúng tôi, script tạo hai cặp phân tích được hiển thị trong hình sau.

Hình 2 Kiến trúc mạng hiển thị các đường dẫn và phân tích của VPC Reachability Analyzer.

Bảng sau đây cho thấy nguồn và đích cho mỗi phân tích của VPC Reachability Analyzer.

PathRegionAnalysisSource ResourceDestination Resource
Path-1Ohio1aSource InstanceTGW-Peering-1
Path-1Oregon1bTGW-Peering-1Destination Instance
Path-2Ohio2aSource InstanceTGW-Peering-2
Path-2Oregon2bTGW-Peering-2Destination Instance

Bảng 1 Đường dẫn và phân tích của VPC Reachability Analyzer.

Tiếp theo, script sẽ kết hợp kết quả của mỗi cặp phân tích. Nếu cả hai phân tích đều thành công, bạn sẽ có một đường dẫn mạng từ nguồn đến đích được triển khai ở các Khu vực AWS khác nhau. Nếu một hoặc cả hai phân tích trong cặp thất bại, bạn sẽ không có kết nối mạng giữa các nguồn. Trong trường hợp này, chúng ta mong đợi rằng đường dẫn 1a và 1b sẽ thành công. Vì VPC không có các kết nối vào Transit Gateways có tên TGW-Ohio-NotConnected và TGW-Oregon-NotConnected, phân tích của VPC Reachability Analyzer cho 2a và 2b đều không thành công.

Để khắc phục sự cố về đường dẫn thêm nữa, bạn có thể xem chi tiết của các phân tích từ Bảng điều khiển VPC Reachability Analyzer hoặc thông qua cuộc gọi API. Bây giờ hãy xem cách bạn sẽ sử dụng giải pháp này.

Bước 1: Thực hiện script
Sao chép mã từ kho lưu trữ GitHub của chúng tôi và điều hướng đến thư mục đúng:

git clone https://github.com/aws-samples/vpc-reachability-analyzer-multi-region

cd vpc-reachability-analyzer-multi-region

Cung cấp các tùy chọn dòng lệnh và thực hiện script. Trong lệnh sau, chúng tôi cung cấp các tùy chọn để theo dõi kết nối mạng giữa các máy ảo nguồn và đích được hiển thị trong Hình 1:

python3 vpc_ra_multi_region.py --destination-port 22 --source-ip '10.100.7.248' --destination-ip '10.200.11.8' --source-resource arn:aws:ec2:us-east-2:111111111111:instance/i-123456789abcdefgh --destination-resource arn:aws:ec2:us-west-2:222222222222:instance/i-123456789abcdefgh --protocol 'tcp' --max-paths 2

Vì script Python này tạo cấu hình VPC Reachability Analyzer ở nền, nó có thể mất vài phút để hoàn thành.

Bước 2: Hiểu kết quả
Kết quả của chương trình này là một đối tượng JSON bao gồm chi tiết về mỗi cặp phân tích của VPC Reachability Analyzer trong khu vực mạng. Đối với cài đặt của chúng tôi, đối tượng JSON đầu ra trông như sau:

{
  "SuccessfulPair": {
    "SourceNetworkInsightsAnalysisArn": "arn:aws:ec2:us-east-2:333333333333:network-insights-analysis/nia-123456789abcdefgh",
    "SourceNetworkInsightsAnalysisURL": "https://us-east-2.console.aws.amazon.com/networkinsights/home?region=us-east-2#NetworkPathAnalysis:analysisId=nia-123456789abcdefgh",
    "SourceNetworkInsightsPathId": "nip-123456789abcdefgh",
    "DestinationNetworkInsightsAnalysisArn": "arn:aws:ec2:us-west-2:

333333333333:network-insights-analysis/nia-123456789abcdefgh",
    "DestinationNetworkInsightsAnalysisURL": "https://us-west-2.console.aws.amazon.com/networkinsights/home?region=us-west-2#NetworkPathAnalysis:analysisId=nia-123456789abcdefgh",
    "DestinationNetworkInsightsPathId": "nip-123456789abcdefgh"
  },
  "UnsuccessfulPairs": [{
    "SourceNetworkInsightsAnalysisArn": "arn:aws:ec2:us-east-2:333333333333:network-insights-analysis/nia-123456789abcdefgh",
    "SourceNetworkInsightsAnalysisURL": "https://us-east-2.console.aws.amazon.com/networkinsights/home?region=us-east-2#NetworkPathAnalysis:analysisId=nia-123456789abcdefgh",
    "SourceNetworkInsightsPathId": "nip-123456789abcdefgh",
    "DestinationNetworkInsightsAnalysisArn": "arn:aws:ec2:us-west-2:333333333333:network-insights-analysis/nia-123456789abcdefgh",
    "DestinationNetworkInsightsAnalysisURL": "https://us-west-2.console.aws.amazon.com/networkinsights/home?region=us-west-2#NetworkPathAnalysis:analysisId=nia-123456789abcdefgh",
    "DestinationNetworkInsightsPathId": "nip-123456789abcdefgh"
  }]
}

Trong trường hợp này, script đã phát hiện một SuccessfulPair và một UnsuccessfulPair. SuccessfulPair tương ứng với đường dẫn 1a và 1b được mô tả trong Hình 2, và đối tượng UnsuccessfulPair là cho đường dẫn 2a và 2b trong Hình 2. Các URL tương ứng đưa bạn đến trang Bảng điều khiển VPC Reachability Analyzer cho mỗi đường dẫn.

Bảng sau đây ánh xạ các phân tích mà chúng ta đã thảo luận trong bảng trước với các đầu ra được tạo bởi script.

Bảng 2 Ánh xạ các số phân tích từ Bảng 1 sang các trường trong đầu ra của script.

AnalysisScript output field
1aSuccessfulPair.SourceNetworkInsightsAnalysisURL
1bSuccessfulPair.DestinationNetworkInsightsAnalysisURL
2aUnsuccessfulPair.SourceNetworkInsightsAnalysisURL
2bUnsuccessfulPair.DestinationNetworkInsightsAnalysisURL

Hãy tập trung vào SuccessfulPair đầu tiên và xem chi tiết về các đường dẫn của VPC Reachability Analyzer từ Bảng điều khiển Quản lý AWS. Hình dưới đây cho thấy ảnh chụp màn hình của Bảng điều khiển cho Phân tích 1a.

Chúng ta sẽ bắt đầu bằng cách xem xét kết quả của phân tích 1a như được biểu đồ hóa trong hình vẽ sau đây (Xem hình 3). Bạn cũng có thể kiểm tra chi tiết của con đường như được thể hiện trong biểu đồ sau. Lưu ý rằng các địa chỉ IP nguồn và đích đều xuất phát từ các tùy chọn dòng lệnh được cung cấp cho tập lệnh. Tài nguyên nguồn là “source-instance,” và điểm đến là “Transit Gateway peering attachment.”

Tương tự, chúng ta cũng có một đường dẫn VPC Reachability Analyzer khác ở Region-2, và URL được cung cấp trong đầu ra JSON của tập lệnh. Hình sau đây hiển thị ảnh chụp màn hình của đường dẫn 1b. Lưu ý rằng đường dẫn này có thể tiếp cận được.

Chi tiết đường dẫn cho thấy nguồn tài nguyên là Transit Gateway attachment, và tài nguyên đích là Amazon Elastic Compute Cloud (Amazon EC2) instance đích, như được hiển thị trong hình bên dưới.

Vì cả hai con đường đều thành công, kịch bản đã bao gồm những con đường này dưới đối tượng SuccessfulPair. Hai hình sau đây hiển thị các kết quả trên bảng điều khiển cho các con đường 2a và 2b. Lưu ý rằng cả hai con đường này đều không thành công.

Bài viết này sẽ trình bày kết quả cuối cùng sau khi thực hiện tập lệnh dưới đây. Với việc thực hiện thành công các bước 1a và 1b, tập lệnh đã phát hiện được một đường mạng hợp lệ giữa các nguồn và điểm đến đã triển khai ở các Khu vực AWS khác nhau.

Bảng 3 Kết quả của các đường mạng đã được phân tích.

PathAnalysisSuccessful Networking Path?
Path-11a and 1bYes
Path-22a and 2bNo

Dọn dẹp
Chúng tôi khuyến nghị bạn xóa bất kỳ tài nguyên nào bạn có thể đã triển khai đặc biệt để thử nghiệm giải pháp này.

Kết Luận
Trong bài viết này, chúng tôi đã thảo luận về một ví dụ về cấu trúc đa Khu vực và sử dụng Cổng thông tin Transit Gateway của AWS để cung cấp kết nối giữa các Khu vực khác nhau. Chúng tôi cũng đã mô tả cách bạn có thể sử dụng một tập lệnh Python để mở rộng khả năng của Trình phân tích khả năng tiếp cận VPC và sử dụng nó để kiểm tra xem có một đường mạng giữa nhiều Khu vực AWS khác nhau hay không. Với thông tin này, bạn có thể khắc phục sự cố kết nối mạng cho triển khai đa Khu vực, xác minh rằng cấu hình mạng của bạn phù hợp với kết nối dự định của bạn và tạo tự động hóa trong trường hợp cấu hình lệch khỏi ý định của bạn.

Nếu bạn có câu hỏi về bài viết này, hãy bắt đầu một luồng mới trên AWS re:Post hoặc liên hệ với Hỗ trợ AWS.

Leave a comment