Clustering là một kiến trúc nhằm đảm bảo nâng cao khả năng sẵn sàng cho các hệ thống mạng máy tính. Clustering cho phép sử dụng nhiều máy chủ kết hợp với nhau tạo thành một cụm và có khả năng chịu đƣợc lỗi nhằm nâng cao độ sẵn sàng cho hệ thống. Nó có thể bao gồm nhiều máy chủ kết nối với nhau theo dạng song song hoặc phân tán, nếu một máy chủ ngừng hoạt động do bị sự cố hoặc để nâng cấp bảo trì thì luôn luôn có một bản sao dự phòng tƣơng tự của máy chủ đó sẽ đảm nhiệm công việc giúp.
MySQL Cluster là một công cụ lƣu trữ dữ liệu dựa trên giải pháp clustering, đƣợc thiết kế cho khả năng chịu lỗi, dự phòng, khả năng sẵn sàng, khả năng mở rộng và hiệu suất cao. Dữ liệu đƣợc lƣu trữ và nhân rộng trên các nút dữ liệu riêng biệt, mỗi nút dữ liệu cài đặt trên một máy chủ và luôn luôn có chứa một bản sao dữ liệu giống hệt nó trong hệ thống. Mỗi cụm chứa các nút quản lý, giúp quản lý, kiểm tra, giám sát toàn hệ thống. Các phiên bản ban đầu của MySQL Cluster lƣu trữ tất cả các thông tin trong bộ nhớ chính với khả năng lƣu trữ không ổn định. Nhƣng các phiên bản sau này đã khắc phục đƣợc nhƣợc điểm này của MySQL Cluster cho phép lƣu trữ dữ liệu trên đĩa giúp MySQL Cluster có thể làm việc với lƣợng dữ liệu lƣu trữ rất lớn, lớn hơn bộ nhớ chính của máy. Sự quan trọng của MySQL Cluster còn ở khả năng sử dụng máy chủ MySQL nhƣ là một cộng cụ truy vấn để truy vấn đến cơ sở dữ liệu nằm trên các nút chứa dữ liệu. Vì thế, có thể di chuyển các ứng dụng thiết kế để tƣơng tác với MySQL sang MySQL Cluster tốt. Ngoài ra khái niệm nút ngang hàng cho phép một cập nhật đƣợc thực hiện trên một máy chủ sẽ đƣợc nhìn thấy ngay lập tức trên các máy chủ khác. Và việc truyền tải các thay đổi sử dụng một cơ chế thông tin liên lạc tinh vi đƣợc thiết kế cho việc truyền thông qua mạng hiệu quả rất cao. Mục đích của tất cả các việc đó là để MySQL Cluster đạt đƣợc một hiệu suất cao nhất có thể, để phân phối tải, và thỏa mãn khả năng sẵn sàng cao và tính dự phòng.
11
Mô hình MySQL Cluster trong bài toán cân bằng tải
Trên máy 192.168.1.50 sẽ cài đặt Load balancer mà cụ thể là các chƣơng trình ldirectord và ipvsadm. Chƣơng trình ipvsadm có nhiệm vụ phân tải khi có yêu cầu truy vấn đến máy chủ cơ sở dữ liệu thì sẽ phân phối đều đến các máy chủ thành viên để xử lý. Chƣơng trình ldirectord có nhiệm vụ giám sát và kiểm tra tín hiệu của các máy chủ cơ sở dữ liệu thành viên thông qua các truy vấn kiểm tra. Trong trƣờng hợp dịch vụ của một máy chủ cơ sở dữ liệu bị lỗi thì máy chủ đó sẽ bị loại ra khỏi danh sách và các truy vấn sẽ đƣợc dồn đến các máy chủ còn lại.
Máy Load balancer sẽ tạo ra một dịa chỉ ip ảo 192.168.1.100 và các ứng dụng sẽ truy cập tới địa chỉ này, Load balancer sau đó sẽ tự động gửi yêu cầu của ứng dụng tới các MySQLD (192.168.1.70 và 192.168.1.80) thật. MySQLD nhận truy vấn, xử lý và gửi lại kết quả cho ứng dụng.
12