Hành trình di chuyển AWS Region: Những điều tôi ước biết
Giới thiệu
Trong môi trường điện toán đám mây ngày nay, việc tối ưu hóa hoạt động của hệ thống là vô cùng cần thiết. Gần đây, công ty của tôi đã quyết định di chuyển khối lượng công việc sản xuất từ một AWS Region sang một Region mới gần hơn với khách hàng của chúng tôi. Qua bài viết này, tôi sẽ chia sẻ về hành trình di chuyển AWS Region, những khó khăn tôi gặp phải và những bài học quý giá mà tôi đã rút ra.
Tóm tắt
Luôn luôn tham khảo ý kiến từ kiến trúc sư giải pháp (Solution Architect) để hiểu rõ mọi khía cạnh của các trường hợp sử dụng trước khi tiến hành, nhằm tránh những rắc rối không đáng có.
Nghiên cứu kỹ lưỡng về các giải pháp có sẵn sẽ giúp quá trình triển khai diễn ra mượt mà hơn. Không bao giờ di chuyển môi trường sản xuất mà không có kế hoạch vững chắc để đảm bảo rằng mọi thứ sẽ không thất bại.
Bối cảnh
Công ty của tôi vận hành một khối lượng công việc sản xuất trên AWS. Gần đây, AWS đã ra mắt một Region mới, gần hơn với khách hàng của chúng tôi so với Region hiện tại. Quyết định di chuyển đến Region mới để tận dụng tối đa môi trường đám mây là điều không thể tránh khỏi.
Trước đó, chúng tôi chưa áp dụng chiến lược phục hồi thảm họa (DR) qua các Region và thiết kế kiến trúc của chúng tôi không bao gồm khả năng này. Chúng tôi triển khai khối lượng công việc chính (containers) trên Amazon EKS, sử dụng Aurora/RDS làm cơ sở dữ liệu, cùng với việc tích hợp thông qua State Machines và Lambda Functions (qua AWS API Gateway). Phân phối dữ liệu được thực hiện qua CloudFront và S3.
Tóm lại, hình ảnh dưới đây chỉ là một phiên bản đơn giản hóa của việc triển khai thực tế.
Việc di chuyển EKS diễn ra tương đối suôn sẻ (sử dụng AWS Secrets Manager và External Secrets trong EKS để tiêm biến).
Các vấn đề gặp phải
1. Thiếu rõ ràng trong yêu cầu triển khai
Một số yêu cầu cho các triển khai chưa được làm rõ trước khi quá trình di chuyển diễn ra. (Danh sách IP cho bên thứ ba khóa lưu lượng truy cập ra bên ngoài đến IP công cộng trên Region gốc và việc lên lịch di chuyển trong cùng một khoảng thời gian sẽ rất khó khăn).
- Giải pháp: Giữ khối lượng công việc không thể di chuyển lại ở Region gốc, và lên lịch di chuyển vào giai đoạn sau. Điều này dẫn đến việc sử dụng giao tiếp giữa các Region (qua Transit Gateway Peering trong trường hợp này), điều này tăng một chút chi phí và độ trễ nhưng có thể là một chi phí nhỏ để thực hiện việc di chuyển.
2. Vấn đề với API Gateway
Một phần của khối lượng công việc không thể di chuyển ngay lập tức được đặt trên API Gateway (Riêng tư). Người gọi API (triển khai trên EKS) không biết rằng nó thực hiện cuộc gọi mà không sử dụng VPC Endpoint và mọi thứ hoạt động tốt trước khi di chuyển, che giấu thực tế rằng nó không được gọi qua thiết kế dự kiến (thông qua Route 53 và chuyển hướng cuộc gọi qua ELB). Nhưng trước khi thực hiện kiểm tra end-to-end trên Region di chuyển, điều này không quá rõ ràng.
- Giải pháp: Thông qua giao tiếp giữa các Region, cuộc gọi qua API riêng tư trong API-Gateway có thể được giải quyết (với VPC Interface endpoint và mục DNS riêng tư) nhưng tôi muốn đề cập ở đây vì nó có thể bị bỏ sót.
3. Tích hợp dữ liệu qua S3
Dòng dữ liệu (không hiển thị trong sơ đồ) tiêu thụ từ S3 và được đánh dấu là chưa sẵn sàng cho di chuyển có sự phụ thuộc mạnh vào S3 bucket. Mặt khác, S3 cũng có sự phụ thuộc dữ liệu với Aurora/RDS (câu lệnh SQL thực hiện việc tải lên S3 bucket). Một lưu ý nhỏ, tên S3 bucket phải duy nhất trên toàn bộ các Region, trong khi các dịch vụ trên VPC không thể truy cập S3/S3 Gateway endpoint trên các Region khác.
- Giải pháp: Có nhiều cách để thực hiện điều này tùy thuộc vào yêu cầu.
- S3 Replication: Dữ liệu có thể được sao chép cho mỗi Region để phục vụ khối lượng công việc trong Region mới, trong khi việc tích hợp dòng dữ liệu có thể được thực hiện ở Region gốc (cần có Versioning và quy tắc thiết kế cẩn thận để tránh vòng lặp sao chép).
- Multi Region Access Points cho S3: Thay vì sao chép toàn bộ S3 bucket sang Region đích, phân bổ một MRAP có thể tạo điều kiện cho việc truy cập thông qua điểm truy cập toàn cầu (cần điều chỉnh lại người gọi S3 để sử dụng điểm truy cập).
- VPC Endpoint Interface cho S3 service: Nếu mạng riêng đã là yêu cầu nghiêm ngặt cho cơ sở hạ tầng đám mây của bạn, bạn có thể đã đi được nửa chặng đường và một chút bổ sung sẽ không phải là vấn đề lớn (tùy thuộc vào lượng dữ liệu cần được chuyển giữa các Region).
PS: Việc sử dụng Transit Gateway ở đây là do việc trừu tượng hóa các kết nối VPC khác (cho VPC dòng dữ liệu) và bạn có thể sử dụng VPC Peering thay thế nếu cấu trúc mạng của bạn đơn giản và các VPC không có IP CIDR chồng chéo và nhóm mạng của bạn sẽ không phản đối điều đó.
Các thực tiễn tốt nhất
- Lên kế hoạch chi tiết: Trước khi di chuyển, hãy đảm bảo rằng bạn có một kế hoạch chi tiết cho từng bước trong quá trình di chuyển.
- Kiểm tra kỹ lưỡng: Thực hiện các bài kiểm tra end-to-end để đảm bảo mọi thứ hoạt động như mong đợi trước khi thực hiện di chuyển.
- Tham khảo ý kiến chuyên gia: Luôn luôn tìm kiếm sự tư vấn từ các chuyên gia và kiến trúc sư giải pháp để đảm bảo bạn không bỏ sót bất kỳ khía cạnh nào.
Những cạm bẫy thường gặp
- Thiếu kiểm tra: Không thực hiện kiểm tra kỹ lưỡng sau di chuyển có thể dẫn đến việc bỏ sót các lỗi.
- Không lường trước rủi ro: Không có kế hoạch cho các tình huống khẩn cấp có thể gây ra sự cố lớn trong quá trình di chuyển.
Mẹo hiệu suất
- Tối ưu hóa mạng: Sử dụng VPC Endpoints để tối ưu hóa tốc độ truy cập và giảm độ trễ.
- Sao chép dữ liệu thông minh: Tối ưu hóa việc sao chép dữ liệu giữa các Region để giảm thiểu thời gian chết.
Khắc phục sự cố
- Kiểm tra kết nối: Nếu gặp vấn đề với kết nối giữa các Region, hãy kiểm tra cấu hình VPC và Transit Gateway.
- Ghi lại nhật ký: Sử dụng CloudWatch để theo dõi và ghi lại nhật ký hoạt động nhằm phát hiện sớm các vấn đề.
Kết luận
Việc di chuyển giữa các AWS Region là một quá trình đầy thách thức, nhưng với kế hoạch và sự chuẩn bị kỹ lưỡng, bạn có thể thực hiện thành công. Tôi đã học được nhiều điều từ trải nghiệm này và tôi cảm ơn những người trong đội ngũ của tôi đã hỗ trợ tôi trong suốt quá trình này. Tôi hy vọng rằng bạn cũng có thể rút ra được những bài học quý giá từ câu chuyện của tôi. Nếu bạn có bất kỳ câu hỏi nào về quá trình di chuyển, đừng ngần ngại liên hệ với tôi!
Câu hỏi thường gặp (FAQ)
1. Tôi nên bắt đầu từ đâu khi di chuyển AWS Region?
- Bắt đầu bằng việc lập kế hoạch chi tiết cho từng bước và tham khảo ý kiến chuyên gia.
2. Có cần thiết phải kiểm tra trước khi di chuyển không?
- Có, việc kiểm tra kỹ lưỡng sẽ giúp bạn phát hiện các vấn đề và đảm bảo mọi thứ hoạt động như mong đợi.
3. Làm thế nào để xử lý các sự cố gặp phải trong quá trình di chuyển?
- Sử dụng các công cụ giám sát như CloudWatch để theo dõi và ghi lại nhật ký hoạt động, giúp bạn phát hiện sớm và xử lý các vấn đề.
Tài nguyên tham khảo
Cảm ơn bạn đã theo dõi bài viết này. Hy vọng bạn đã học được điều gì đó bổ ích!