Quản lý và mở rộng quy mô cơ sở dữ liệu là một trong những nhiệm vụ quan trọng của doanh nghiệp, đặc biệt khi các ứng dụng và dịch vụ trực tuyến đang trở nên ngày càng phức tạp và đòi hỏi nhiều tài nguyên. Khi lưu lượng truy cập cơ sở dữ liệu tăng đột ngột, việc tối ưu hóa và quản lý kết nối trở thành một thách thức. Trong bài viết này, Sunny Cloud xin giới thiệu với các bạn về Amazon Relational Database Service (RDS) Proxy, một giải pháp mạnh mẽ để giải quyết những vấn đề này và giúp bạn đảm bảo tính sẵn sàng và hiệu quả cho hệ thống cơ sở dữ liệu của bạn.

RDS Proxy là gì?

RDS Proxy là một proxy cơ sở dữ liệu (database) được quản lý đầy đủ, có tính khả dụng cao dành cho Amazon RDS. Nó thực hiện khả năng mở rộng ứng dụng, khôi phục lỗi cơ sở dữ liệu và cải thiện bảo mật. 

Sơ đồ hoạt động của Amazon RDS Proxy
Sơ đồ hoạt động của Amazon RDS Proxy

Đặc điểm của RDS Proxy

Kết nối gộp (pooling) 

Kết nối gộp là một phương pháp để giảm overhead (chi phí gián tiếp) do việc kết nối, ngắt kết nối và nhiều kết nối đồng thời. Có thể giảm tải CPU do đóng mở kết nối của các tính năng như handshake TLS / SSL, xác thực, thương lượng, v.v. .

Xác thực RDS Proxy 

Ngay cả trường hợp máy chủ cơ sở dữ liệu chỉ hỗ trợ xác thực tên người dùng gốc / mật khẩu, thì vẫn có thể sử dụng xác thực IAM để kết nối với RDS Proxy. 
Có thể cải thiện mức độ bảo mật bằng cách không mã hóa thông tin xác thực vào mã ứng dụng. Cũng có thể quản lý tập trung thông tin xác thực cơ sở dữ liệu thông qua AWS Secrets Manager. 

Sử dụng TLS / SSL 

Ngay cả trường hợp máy chủ cơ sở dữ liệu chỉ hỗ trợ TLS1.0 / 1.1, vẫn có thể sử dụng TLS1.2 để kết nối giữa RDS Proxy và ứng dụng. 
※ RDS Proxy sử dụng chứng chỉ của AWS Certificate Manager (ACM). 
Để áp dụng TLS cho tất cả các kết nối giữa proxy và cơ sở dữ liệu, chỉ cần kích hoạt cài đặt [Yêu cầu Transport Layer Security] khi tạo hoặc thay đổi proxy.

Tính khả dụng cao thông qua Failover 

Failover là khi phiên bản cơ sở dữ liệu gốc không thể sử dụng thì chức năng tính khả dụng cao sẽ thay thế một instance (phiên bản) khác. Failover được áp dụng cho các instance RDS DB với cấu hình Multi-AZ. Nó cũng được áp dụng cho các cụm Aurora DB bao gồm một hoặc nhiều instance leader cùng với instance writer. 
Khi instance DB gốc không thể sử dụng, RDS Proxy sẽ kết nối với cơ sở dữ liệu dự phòng mà không ngắt kết nối ứng dụng đang rỗi. Không cần phải kết nối lại từ ứng dụng. 
Việc tăng tốc failover này có lợi thế là thời gian dừng ứng dụng ngắn hơn so với việc khởi động lại thông thường hoặc dừng do vấn đề cơ sở dữ liệu. Thời gian failover của Aurora và cơ sở dữ liệu RDS được rút ngắn tối đa 66%.

Cách Sử Dụng RDS Proxy Trong Các Tình Huống Cụ Thể

Giảm Tải Của DB

Nếu bạn gặp vấn đề về quá nhiều kết nối đối với các instance hoặc cụm DB và không muốn gây áp lực quá lớn lên cơ sở dữ liệu, sử dụng RDS Proxy để cho phép ứng dụng xử lý nhiều kết nối từ khách hàng.

Tránh Thiếu Bộ Nhớ

Đặc biệt hữu ích đối với các instance DB có lớp nhỏ như T2 hoặc T3. Giúp tránh tình trạng thiếu bộ nhớ khi xử lý nhiều kết nối.

Tương Thích Với AWS Lambda

RDS Proxy tương thích với AWS Lambda. Bằng cách kết nối cơ sở dữ liệu thông qua hàm Lambda, bạn có thể sử dụng pool kết nối của RDS Proxy. Điều này giúp quản lý thông tin xác thực cơ sở dữ liệu bằng xác thực IAM trên hàm Lambda, thay vì lưu trữ nó trong mã ứng dụng Lambda.

Ứng Dụng Sử Dụng PHP Hoặc Ruby on Rails

Thích hợp cho các ứng dụng sử dụng các ngôn ngữ hoặc framework như PHP hoặc Ruby on Rails, mà thường mở và đóng nhiều kết nối cơ sở dữ liệu. Điều này đặc biệt hữu ích khi kết nối pooling không được tích hợp.

Ứng Dụng Mở Nhiều Kết Nối Lâu Dài

Cho phép ứng dụng mở nhiều kết nối hơn so với việc kết nối trực tiếp với instance hoặc cụm DB. Điều này đặc biệt hữu ích cho các ứng dụng yêu cầu mở nhiều kết nối trong thời gian dài.

Sự Linh Hoạt Trong Xác Thực

Trong trường hợp bạn không thể áp dụng IAM xác thực hoặc Secrets Manager cho tất cả các instance hoặc cụm DB do cấu hình phức tạp, RDS Proxy vẫn cho phép sử dụng phương pháp xác thực hiện tại và ủy quyền xác thực cho proxy.

Các engine DB được hỗ trợ bởi RDS Proxy

RDS Proxy hỗ trợ các engine DB sau: 

  • MySQL
    • RDS for MySQL 5.6 / 5.7 
    • Aurora MySQL phiên bản 1.x / 2.x 
  • PostgreSQL
    • RDS for PostgreSQL 
    • Aurora PostgreSQL 10.11 trở lên, 11.5 trở lên 

※ Lưu ý: Amazon RDS for MySQL 5.6 không còn được hỗ trợ

Lưu ý khi sử dụng

  • Chỉ hỗ trợ Instance Writer trong cụm Aurora. 
  • Bạn nên sử dụng endpoint Reader truyền thống để cân bằng tải công việc đọc.
  • Không thể sử dụng trong các mô hình cụm Aurora Serverless hoặc cụm Multi-Master.
  • Đảm bảo rằng RDS Proxy cần phải tồn tại trong cùng VPC với cơ sở dữ liệu. Nó không thể truy cập từ mạng công khai (nếu cơ sở dữ liệu có sẵn mạng công khai). Điều này quan trọng để đảm bảo bảo mật dữ liệu và quyền truy cập.

Tổng kết

RDS Proxy là một dịch vụ proxy cơ sở dữ liệu vô cùng hữu ích với nhiều đặc điểm nổi bật. Nó giúp giảm tải cơ sở dữ liệu, cải thiện tính khả dụng của ứng dụng thông qua failover tốc độ cao, và tăng cường bảo mật dữ liệu. Sử dụng RDS Proxy đồng nghĩa với việc tối ưu hóa hiệu suất ứng dụng của bạn, giảm rủi ro và đảm bảo sự liên tục hoạt động của hệ thống giúp ứng dụng của bạn hoạt động mượt mà và an toàn hơn. Liên hệ với Sunny Cloud ngay để ứng dụng RDS Proxy vào doanh nghiệp của bạn!

Sử dụng AWS thông qua Sunny Cloud có lợi hơn nhiều so với việc kí hợp đồng trực tiếp.
Được giảm giá 3% cho chi phí sử dụng AWS và có thể thanh toán bằng hóa đơn VND.

Tham khảo:
1.【徹底解説】RDS Proxyとは?
2. Amazon RDS Proxy