Vivek Viswanathan
Cân bằng tải dựa trên phần cứng
Các bộ cân bằng tải phần cứng giải quyết được nhiều vấn đề mà chúng ta vừa phải đối mặt trong phương pháp phần mềm luân chuyển vòng DNS ở trên thông qua các địa chỉ IP ảo. Bộ cân bằng tải sẽ thể hiện một địa chỉ IP ảo đối với mạng bên ngoài, địa chỉ này bản đồ hóa đến các địa chỉ của mỗi máy trong một cluster. Chính vì vậy bộ cân băng tải này cần phải đưa ra một địa chỉ IP của toàn bộ các máy tính trong cluster đối với thế giới bên ngoài.
Khi một request đến bộ cân bằng tải, nó sẽ ghi lại header của request để trỏ đến các máy khác trong cluster. Nếu một máy nào đó bị gỡ bỏ từ cluster thì request sẽ không chạy một cách rủi ro việc “hit” vào máy chủ đã chết này, vì tất cả các máy chủ khác trong cluster xuất hiện đều có cùng địa chỉ IP. Địa chỉ này duy trì giống nhau thậm chí nếu một nút nào đó trong cluster bị hỏng. Khi một đáp trả được trả về, máy khách sẽ xem đáp trả đang đến từ bộ cân bằng tải phần cứng. Hay nói theo cách khác thì máy khách sẽ xử lý với một máy tính đó là bộ cân bằng phần cứng.
Ưu điểm
• Mối quan hệ giữa các máy chủ. Bộ cân bằng tải phần cứng đọc cookie hoặc các URL đang được đọc trên mỗi một request bởi máy khách. Dựa trên các thông tin này, nó có thể ghi lại các thông tin header và gửi request đến nút thích hợp trong cluster, nơi session của nó được duy trì.
Các bộ cân bằng tải này có thể cung cấp mối quan hệ giữa các máy chủ trong truyền thông HTTP, nhưng không thông qua kênh an toàn như HTTPS. Trong kênh an toàn, các thông báo được mã hóa SSL và có thể tránh được bộ cân bằng tải từ việc đọc các thông tin session.
• Khả năng có sẵn cao thông qua hệ thống tự động chuyển đổi dự phòng. Việc chuyển đổi dự phòng xảy ra khi một nút trong cluster không thể xử lý một request và chuyển hướng nó đến một nút khác. Có hai kiểu tự động chuyển đổi dự phòng:
- Yêu cầu mức chuyển đổi dự phòng. Khi một nút trong cluster không thể xử lý một request (thường là vì bị hỏng) thì nó sẽ chuyển request này sang một nút khác.
- Chuyển đổi dự phòng session một cách trong suốt. Khi một lời triệu gọi thất bại, nó sẽ được định tuyến một cách trong suốt đến một nút khác trong cluster để hoàn tất sự thực thi.
Bộ cân bằng kiểu này cung cấp chuyển đổi dự phòng mức request; tức là khi nó phát hiện có một nút nào đó bị sự cố thì bộ cân bằng này sẽ chuyển hướng tất cả các request theo sau được gửi đến nút này sang một nút tích cực khác trong cluster. Mặc dù vậy, bất kỳ một thông tin session nào trên nút chết sẽ bị mất khi các request được chuyển hướng đến một nút mới.
Chuyển đổi dự phòng session trong suốt yêu cầu một số kiến thức về sự thực thi cho một quá trình trong một nút, vì bộ cân bằng tải phần cứng chỉ có thể phát hiện các vấn đề mức mạng, không có lỗi. Để thực thi một cách trong suốt về vấn đề chuyển đổi dự phòng, các nút trong cluster phải kết hợp với các nút khác và có vùng bộ nhớ chia sẻ hoặc cơ sở dữ liệu chung để lưu tất cả các dữ liệu session. Cũng chính vì vậy nếu một nút trong cluster có vấn đề thì một session có thể tiếp tục trong một nút khác.
• Metrics. Vì tất cả các yêu cầu tới một ứng dụng web đều phải qua hệ thống cân bằng tải, hệ thống có thể quyết định số lượng session hoạt động, số lượng session hoạt động được kết nối trong các trường hợp khác nhau, các khoảng thời gian đáp ứng, thời gian tối đa điện áp, số lượng session trong suốt khoảng tối đa điện áp, số lượng session trong suốt khoảng tối thiểu điện áp… Tất cả các thông tin kiểm định này được sử dụng để tinh chỉnh toàn bộ hệ thống nhằm tối ưu hiệu suất.
Nhược điểm
Nhược điểm đối với định tuyến phần cứng là giá thành của nó, sự phức tạp trong vấn đề thiết lập và khả năng hổng ở một vấn đề nào đó trong tương lai. Vì tất cả request đều được chuyển qua một bộ cân bằng tải phần cứng nên lỗi yêu cầu của phần cứng đó ảnh hưởng đến toàn bộ site.
Việc cân bằng các request HTTPS
Như đã đề cập ở trên, rất khó khăn trong vấn đề cân bằng tải và duy trì các thông tin session của request sử dụng giao thức HTTPS, vì chúng đã được mã hóa. Bộ cân bằng tải phần cứng không thể chuyển tiếp các request dựa trên thông tin trong header, cookie hay URL. Có hai cách để giải quyết vấn đề này:
- Proxy của Web Server
- Bộ giải mã SSL phần cứng
Bổ sung các proxy của Web Server
Một Web server proxy nằm trước một cluster của các máy chủ Web lấy tất cả các request và mã hóa chúng. Sau đó nó chuyển hướng chúng đến một nút thích hợp, dựa trên các thông tin header trong phần header, cookie và URL.
Ưu điểm của Web server proxy là chúng cung cấp cách để có được mối liên hệ giữa các máy chủ cho các thông báo được mã hóa SSL, không cần bất cứ một phần cứng mở rộng. Nhưng quá trình SSL mở rộng cần đến một tải mở rộng trên proxy.
Apache và Tomcat. Trong nhiều hệ thống phục vụ, các máy chủ Apache và Tomcat làm việc cùng với nhau để quản lý tất cả request HTTP cho các trang động (JSSP hoặc servlets). Các máy chủ Tomcat cũng quản lý các trang tĩnh, nhưng trong các hệ thống phối hợp, chúng thường được thiết lập để quản lý các request động.
Bạn cũng có thể cấu hình Apache và Tomcat để điều khiển các yêu cầu HTTPS và trong các tải cân bằng. Để thực hiện điều này, bạn chạy trường hợp đa máy chủ Tomcat trên một hoặc nhiều máy. Nếu tất cả máy chủ Tomcat đều chạy trên một máy, chúng nên được cấu hình để nghe trên các cổng khác nhau. Để thực thi cân bằng tải, bạn tạo một mẫu Tomcat đặc biệt gọi là Tomcat Worker.
Như những gì bạn có thể thấy trên hình trên, Web server Apache nhận request HTTP và HTTPS từ các máy khách. Nếu request là HTTPS, thì Web server Apache sẽ mã hóa request và gửi nó đến adapter máy chủ Web, máy chủ sẽ gửi request đến Tomcat Worker, gồm có cả thuật toán cân bằng tải. Tương tự với Web server proxy, thuật toán này cũng cân bằng tải giữa các máy như Tomcat.
Bộ giải mã SSL bằng phần cứng
Cuối cùng, chúng ta nên đề cập đến ở đây rằng có một số thiết bị phần cứng có khả năng giải mã các request SSL. Hướng dẫn chi tiết về chúng không nằm trong phạm vi bài này, nhưng có thể nói một cách vắn tắt, chúng được đặt trước bộ cân bằng tải phần cứng và cho phép giải mã thông tin trong các cookie, header và URL.
Các bộ giải mã SSL phần cứng này thường hoạt động nhanh hơn các proxy máy chủ Web và có khả năng mở rộng cao. Tuy nhiên như hầu hết các giải pháp phần cứng, chúng vẫn gây ra nhiều vấn đề phức tạp trong việc thiết lập và cấu hình.