Tag: resiliency

  • Thiết kế khả năng phục hồi cho một trang web tĩnh trên AWS Cloud

    Thiết kế khả năng phục hồi cho một trang web tĩnh trên AWS Cloud

    Khi bạn thiết kế một hệ thống thì bạn nên có suy nghĩ rằng không hệ thống nào có thể đảm bảo vận hành trơn chu mà không có vấn đề gì xảy ra. Hệ thống có thể sập vì rất nhiều lý do. Chúng ta luôn phải có phương án có thể khôi phục lại ngay tức thì để độ tổn thất cho khách hàng và công ty ở mức thấp nhất. Đặc biệt là các hệ thống trên Cloud.

    Werner Vogels, CTO & VP, Amazon says:

    Everything fails all the time.

    Bài viết hôm nay mình sẽ giới thiệu về cách thiết kế 1 trang web tĩnh trên S3 mà đảm bảo khả năng hồi phục(Resiliency).

    Khả năng phục hồi (Resiliency) là gì?

    Khả năng phục hồi là khả năng hệ thống phục hồi sau lỗi do hệ thống quá tải, bị tấn công, các lỗi liên quan phần cứng hoặc phần mềm.

    Amazon S3 rất khả dụng và có khả năng phục hồi cao đối với sự cố theo vùng nhưng liệu trang web có khả năng chống chịu với thảm họa khu vực như nguồn điện, thời tiết.,? đám mây có những cách tốt hơn để giúp cung cấp tính liên tục cho hoạt động kinh doanh và đây là một trong những cách.

    Thiết kế khả năng phục hồi cho một trang web tĩnh trên AWS Cloud

    s3dr

    Các dịch vụ sử dụng

    • Route 53
    • CloudFront
    • S3
    • IAM

    Triển khai

    Do chưa có domain có sẵn nên bước triển khai này mình sẽ chỉ sử dụng các dịch vụ:

    • CloudFront
    • S3
    • IAM

    Bước 1: Tạo S3 bucket name static-web-sample-s3 với region Singapore và enable tính năng Versioning. Chi tiết

    Bước 2: Tạo S3 bucket name static-web-sample-dr-s3 với region Tokyo và enable tính năng Versioning Chi tiết

    Ghi chú: Ở hướng dẫn này, web chính của mình triển khai lưu trên S3 với region Singapore, và web khôi phục khi xảy ra thảm hoạ sẽ được lưu trên S3 với region Tokyo.

    Bước 3: Cấu hình replication giữa 2 bucket name

    • Ở bucket name static-web-sample-s3 chọn Managemet tab. Tiếp theo, ở phần Replication rules chọn Create replication rule.

      • Nhập rule name rep1

      • Phần rule scope thì chọn option thứ 2 rep2

      • Ấn Browse S3 xong chọn đến bucket name static-web-sample-dr-s3 rep3

      • Phần IAM role, chọn Create new role rep4

      • Phần Additional replication options thì không chọn gì cả rồi ấn Save rep5

      • Kết quả sau khi cấu hình xong rep6

    Bước4: Tạo 1 trang page index.html đơn giản rồi upload nó lên S3 bucket name

    <!DOCTYPE html>
    <html lang='en'>
    
    <head>
        <meta charset='UTF-8'>
        <title>Static HTML</title>
    </head>
    
    <body>
        <div class="container">
            <h1>Hey there</h1>
        </div>
    </body>
    
    </html>
    

    Bước 5: Tạo CloudFront liên kết với S3 bucket name static-web-sample-s3. Chi tiết

    origin

    Ghi chú: Sử dụng OAI cho CloudFront access đến S3 và chọn Yes, update the bucket policy

    Bước 6: Tạo thêm origin của CloudFront liên kết tới S3 bucket name static-web-sample-dr-s3 dro2

    Ghi chú: Sử dụng OAI cho CloudFront access đến S3 và chọn Yes, update the bucket policy

    Bước 7: Tạo Origin Group của CloudFront. Nhập thông như hình bên dưới.

    • Chọn Create origin group og1
    • Chọn các origin cần sử dụng rồi thêm vào. Chú ý origin web chính sẽ được đặt lên đầu tiên. og2

    Bước 8: Cập nhật Behavior default của CloudFront Vì behavior default của CloudFront đang liên kết với origin của S3 bucket name static-web-sample-s3, nên chúng ta sẽ cần cập nhật sang sử dụng origin group.

    • Chọn Behavior Default rồi chọn Edit beha1
    • Ở màn hình Edit, cập nhật origin sang origin group (DR-Group) beha2

    Bước 9: Đợi CloudFront Deploy re1

    Bước 10: Sau khi CloudFront đã deploy xong, thì chúng ta vào brownser và nhập DNS link của CloudFront. web

    Bước 11: Xoá bucket name static-web-sample-s3 hoặc chỉ xoá file index.html trong bucket.

    Bước 12: Bạn vào lại trình duyệt reload lại trang web nhé. Bạn sẽ thấy trang web vẫn hoạt động bình thường dù đã xoá file hoặc S3 bucket chưa source chính. web