see more blog

Xây dựng kiến trúc High Availability trên AWS cho doanh nghiệp: Compute, Database và Storage

High Availability trên AWS

Khi quyết định trong việc lựa chọn kiến trúc hệ thống cho doanh nghiệp, có rất nhiều yếu tố cần phải cân nhắc như hiệu năng, khả năng mở rộng, tính sẵn sàng, độ tin cậy, chi phí và vận hành. Trong đó, việc đảm bảo tính sẵn sàng cao (high availability) cho hệ thống luôn phải được chú trọng hàng đầu gián đoạn hoặc không hoạt động) để đảm bảo tính liên tục trong kinh doanh (business continuity). Điều này luôn được thể hiện với các kiến trúc của các doanh nghiệp, vì mỗi phút bị mất trong thời gian hệ thống bị gián đoạn hoặc không hoạt động (down time) có thể dẫn đến thiệt hại lớn về doanh thu và uy tín của doanh nghiệp.

Sự cố của những “gã khổng lồ”

Một trong những sự cố được bàn tán trong tháng vừa qua là sự cố dịch vụ của AWS với Kinesis Data Streams gặp lỗi, sự cố kéo dài trong nhiều giờ, dẫn tới hàng loạt dịch vụ đã bị ảnh hưởng, ở mức độ thấp các ứng dụng bị chậm, có những trường hợp ứng dụng bị tê liệt hoàn toàn, các tên tuổi lớn bị ảnh hưởng có thể kể đến như 1Passwords, Adobe Spark, Autodesk, Coinbase, DataCamp, Flickr, Roku, The Washington Post…

Gần đây nhất, trong chiều ngày 14/12/2020 (theo giờ Việt Nam), các dịch vụ của Google đã ngừng hoạt động trên toàn thế giới, với các lỗi được ghi nhận, bao gồm Gmail, Google Calendar, YouTube và một phần của Google Search. Sự cố với Google đã ảnh hưởng đến lượng lớn người dùng Internet trên toàn cầu. Đây là cũng là sự cố lớn nhất của Google trong năm 2020.

Dễ dàng nhận thấy các tên tuổi lớn như Google hay AWS đều không tránh khỏi việc xảy ra sự cố với hệ thống, dù xác suất là vô cùng thấp và hi hữu, tuy nhiên thiệt hại mang đến thì không hề nhỏ.

Vậy, High Availability (HA) là gì?

Tính sẵn sàng cao (high availability) đề cập đến khả năng tránh các sự cố ngừng hoạt động ngoài kế hoạch bằng cách loại bỏ các Single-point-of-failure (SPOF). Các hệ thống sẵn sàng cao được hiểu đơn giản là chúng có khả năng tiếp tục hoạt động ngay cả khi các thành phần quan trọng bị lỗi, mà không làm gián đoạn dịch vụ hoặc mất dữ liệu và khôi phục liền mạch sau lỗi đó. Đây là thước đo độ tin cậy của phần cứng, hệ điều hành, phần mềm trung gian và phần mềm quản lý cơ sở dữ liệu.

Tính sẵn sàng cao thường được đo bằng phần trăm thời gian hoạt động. Số lượng “nines (số chín)” thường được sử dụng để chỉ mức độ sẵn có cao. Ví dụ: “bốn số chín” là biểu thị của một hệ thống đang hoạt động 99,99% thời gian, có nghĩa là nó chỉ gián đoạn hoạt động trong 52,6 phút trong cả năm.
Downtime calculation

Hầu hết các thách thức với việc triển khai tính sẵn sàng cao trong môi trường doanh nghiệp thường liên quan đến nhà cung cấp sản phẩm hoặc thiết kế ứng dụng – đặc biệt là khi triển khai các sản phẩm mới. Đa phần các doanh nghiệp nhỏ không quá chú trọng tới các yêu cầu khắt khe của việc hỗ trợ ứng dụng hoạt động 24/7. Việc đưa ra quyết định sai có thể dẫn đến kiến trúc sản phẩm không tương thích với các giải pháp có tính sẵn sàng cao của doanh nghiệp.

HA principle

 

Các yếu tố cho một hệ thống HA hoàn chỉnh

  • Khả năng dự phòng (Redundancy): Đảm bảo rằng các thành phần quan trọng của hệ thống có một thành phần giống hệt khác với cùng một dữ liệu, có thể tiếp quản trong trường hợp hỏng hóc.

  • Khả năng giám sát (Monitoring): Xác định các vấn đề trong hệ thống có thể làm gián đoạn hoặc làm giảm chất lượng dịch vụ.

  • Khả năng chuyển đổi dự phòng (Failover): Khả năng chuyển đổi tài nguyên dự phòng thành tài nguyên hoạt động chính, trong trường hợp có lỗi sự cố, cảnh báo lỗi, giảm hiệu suất hệ thống hoặc chức năng.

  • Khả năng khôi phục (Failback): Khả năng chuyển trở lại thành thành phần hoạt động chính, sau khi đã khắc phục được sự cố.

Kiến trúc High Availability cho hệ thống trên AWS: Compute, Database, và Storage

Với AWS, bạn có thể đạt được tính sẵn sàng cao cho workloads của hệ thống trên đám mây, thông qua những dịch vụ toàn diện được cung cấp bởi AWS dựa trên ba khía cạnh khác nhau:

  • Compute: Amazon EC2 và các dịch vụ khác cho phép bạn cung cấp tài nguyên máy tính, cung cấp các tính năng sẵn sàng cao như cân bằng tải (Load Balancing), tự động mở rộng (Auto Scaling) và cung cấp trên các Availability Zones của Amazon (AZ), những nơi riêng biệt của các trung tâm dữ liệu Amazon.

  • Database: Amazon RDS và các managed SQL database khác cung cấp các tùy chọn để tự động triển khai cơ sở dữ liệu với một bản sao dự phòng ở một AZ khác.

  • Storage: Các dịch vụ lưu trữ của Amazon, chẳng hạn như S3, EFS và EBS, cung cấp các tùy chọn được tích hợp sẵn. S3 và EFS tự động lưu trữ dữ liệu trên các AZ khác nhau, trong khi EBS cho phép triển khai snapshots tới các AZ khác nhau.

High Availability cho EC2 Instances

Với dịch vụ EC2 instance, Amazon Web Services cung cấp một số khả năng tích hợp để đạt được tính sẵn sàng cao, bao gồm:

  • Elastic Load Balancing: Có thể khởi chạy một số EC2 instance và phân phối lưu lượng giữa chúng.

  • Availability Zones: Có thể đặt các instance ở các AZ khác nhau.

  • Auto Scaling: Tự động phát hiện khi tải của hệ thống tăng lên, sau đó tự động tạo thêm các instance khác.

Các dịch vụ này được minh họa trong sơ đồ dưới đây. Elastic Load Balancing phân phối lưu lượng truy cập giữa hai hoặc nhiều EC2 instance, mỗi instance trong số đó có thể được triển khai trong một mạng con riêng biệt (separated subnet) nằm trong Availability Zone(s) của Amazon. Các instance này có thể là một phần của Auto-Scaling Group, với các instance bổ sung được khởi chạy theo yêu cầu.

Phân biệt về Availability Zone và Region của AWS:

  • Availability Zones:

Mỗi Availability Zone sẽ tập trung một hoặc nhiều trung tâm dữ liệu (data center). Availability Zone được lập ra để đảm bảo mọi thành phần thiết yếu của AWS luôn hoạt động tốt và có đủ năng lực dự phòng cho trường hợp khẩn cấp.

Mỗi Availability Zone hoạt động độc lập nhưng vẫn kết nối với nhau thông qua hệ thống mạng cáp quang tốc độ cao riêng nhằm tạo thuận tiện cho việc di chuyển dữ liệu giữa các Availability Zone trong cùng một khu vực (region).

AZ an toàn cho thảm họa và tối ưu độ trễ

Mỗi AZ cách nhau khoảng 100km để đảm bảo an toàn khỏi các thảm họa, nhưng vẫn giữ được độ trễ tối ưu.

  • Region:

Mỗi AWS Region tập trung từ 02 Availability Zones trở lên (North Virginia hiện là khu vực tập trung nhiều AWS Availability Zone nhất với 6 zones). Ngoài việc sao lưu dữ liệu giữa các Availability Zone trong cùng một khu vực (region), người dùng còn có thể lựa chọn sao lưu dữ liệu giữa các khu vực khác nhau, đồng thời tận dụng cả hệ thống mạng chung hoặc riêng để đảm bảo cho hoạt động kinh doanh luôn diễn ra suôn sẻ, không bao giờ bị gián đoạn.

Hiện tại, AWS có khoảng 77 Availability Zone trải dài trên 24 khu vực địa lý (Region) khác nhau. Dự định con số này sẽ gia tăng trong tương lai nhằm đem đến cho khách hàng nhiều lựa chọn dịch vụ phong phú hơn.

High Availability cho CSDL SQL trên Amazon RDS (Relational Database Service)

RDS cung cấp khả năng sẵn sàng cao bằng cách triển khai Multi-Availability Zone (Multi-AZ). Điều này có nghĩa là RDS sẽ tự động cung cấp một bản sao đồng bộ của cơ sở dữ liệu trong một AZ khác. Khi phiên bản cơ sở dữ liệu chính gặp sự cố, người dùng được chuyển hướng đến vùng AZ khác.

Điều này cung cấp hai mức dự phòng:

  • Trong trường hợp cơ sở dữ liệu hoạt động không thành công, có một bản sao dự phòng sẵn sàng nhận yêu cầu.

  • Trong trường hợp có sự gián đoạn trong AZ, phiên bản cơ sở dữ liệu chính của bạn đang chạy, có sự chuyển đổi dự phòng sang AZ khác.

Sơ đồ dưới đây thể hiện việc triển khai Multi-AZ cho CSDL:

High Availability cho CSDL SQL trên Amazon RDS

Lưu ý rằng việc triển khai Multi-AZ không hỗ trợ cho các read-only instance và phải sử dụng các read replicas để kích hoạt tính sẵn sàng cao cho các instance đó.

RDS cung cấp các tính năng sau cho mỗi loại cơ sở dữ liệu:

  • Đối với Oracle, PostgreSQL, MySQL và MariaDB: tính sẵn sàng cao bằng cách sử dụng công nghệ Amazon Multi-AZ.

  • Đối với SQL Server: sao chép sang AZ khác bằng công nghệ Database Mirroring của SQL Server.

High Availability cho dịch vụ lưu trữ (Storage)

Dưới đây là tóm tắt ngắn gọn về các khả năng sẵn có cao mà Amazon cung cấp cho các dịch vụ lưu trữ phổ biến khác:

  • Amazon S3

S3 đảm bảo độ bền 99,999999999% (mười một số 9), bằng cách lưu trữ dự phòng các đối tượng trên nhiều thiết bị trên tối thiểu 03 (ba) AZ trong cùng một Region.

  • Amazon EFS

EFS đảm bảo tính sẵn sàng lên đến 99,9%; nếu không đáp ứng, khách hàng sẽ được AWS chiết khấu ngược lại từ 10-100% phí dịch vụ. Mọi đối tượng hệ thống tệp được lưu trữ dự phòng trên nhiều AZ.

  • Amazon EBS

EBS volumes được tạo trong một AZ cụ thể. Có thể cung cấp volume ở các AZ khác và sau đó có thể gắn volume này vào các instance khác trong cùng AZ đó. Để tạo một volume bên ngoài AZ hoặc để tạo dự phòng, có thể tạo một file snapshot và khôi phục snapshot này ở một AZ khác trong cùng một region. Bạn cũng có thể sao chép snapshot sang các region khác để tạo dự phòng trên các trung tâm dữ liệu khác nhau của Amazon Web Services.

Kết luận

Tính sẵn sàng cao (high availability) tập trung vào việc đảm bảo cho hệ thống có thể vận hành liên tục, kể cả khi một phần hệ thống gặp sự cố, giúp đem lại những lợi ích rất lớn đối với những hệ thống yêu cầu độ tin cậy cao.

Về VTI Cloud

VTI Cloud là Đối tác cấp cao (Advanced Consulting Partner) của AWS, với đội ngũ hơn 50+ kỹ sư về giải pháp được chứng nhận bởi AWS. Với mong muốn hỗ trợ khách hàng trong hành trình chuyển đổi số và dịch chuyển lên đám mây AWS, VTI Cloud tự hào là đơn vị tiên phong trong việc tư vấn giải pháp, phát triển phần mềm và triển khai hạ tầng AWS cho khách hàng tại Việt Nam và Nhật Bản.

Xây dựng các kiến trúc an toàn, hiệu suất cao, linh hoạt, và tối ưu chi phí cho khách hàng là nhiệm vụ hàng đầu của VTI Cloud trong sứ mệnh công nghệ hóa doanh nghiệp.

Bài viết liên quan:

AWS Well-Architected Framework là gì?

Related news

what’s up at VTI