1. Lý thuyết xây dựng bộ cân bằng tải cho web-servers
1.3.1. Các phương pháp cài đặt cache:
Có 4 phương án triển khai cache, đó là cài đặt cache như một forward proxy, transparent proxy, reverse proxy hoặc transparent-reverse proxy. Forward proxy và transparent proxy được dùng để tăng tốc bên phía người dùng (thường được cài đặt bên phía trình duyệt người dùng), trong khi đó reverse proxy và transparent-reverse proxy được dùng để tăng tốc server, và được cài đặt tích hợp trong bộ cân bằng tải.
Trong phương pháp này, cache server được cài đặt giống như một proxy server cho một nhóm những người dùng đầu cuối. Trình duyệt của mỗi người dùng phải được cấu hình để chỉ đến proxy server này, nó dùng một cổng riêng biệt (special protocal) để hướng tất cả các requests của người dùng đến proxy cache này, nơi mà các ngữ cảnh sẽ được trả về cho người dùng. Rất nhiều doanh nghiệp sử dụng phương pháp này nhằm tăng tốc độ sử dụng hệ thống cho khách hàng. Một vấn đề nảy sinh trong khi triển khai phương pháp này là mỗi trình duyệt đều phải được cấu hình để chỉ đến proxy server, tuy nhiên, nó có thể được cài đặt tự động bằng cách chạy một script khi người dùng đăng nhập vào mạng của doanh nghiệp.
Phương pháp cài đặt này cũng làm tăng khả năng bảo mật của hệ thống do người quản trị chỉ cho phép duy nhất proxy cache servers truy cập vào internet và khóa tất cả các truy cập khác. Như vậy tất cả người dùng sẽ phải thông qua proxy cache server nào đó, và do đó IP thực sự của người dùng sẽ được che giấu vì server gốc chỉ nhìn thấy proxy server giống như một người dùng cuối.
Một vấn đề khác khi cài đặt forward proxy là cần phải đảm bảo khả năng mở rộng của cache server. Giả sử chúng ta có một cache server có khả năng phục vụ 500 người dùng, nhưng hệ thống của chúng ta cần đáp ứng cho 4000 người dùng một cách ổn định, khi đó chúng ta cần phải cài đặt 8 bộ cache như vậy và cần phải phân vùng tải giữa chúng. Thêm nữa, vì yêu cầu của người dùng được forward đến proxy cache server, nên khi cache server bị down, người dùng này sẽ bị mất kết nối đến internet, và như vậy ở đây xuất hiện hiện tượng thắt cổ chai (bottleneck).
Bằng cách cài đặt một bộ cân bằng tải, chúng ta có thể có thể giải quyết được vấn đề mở rộng cũng như tính có sẵn của phương pháp cài đặt forward-proxy cache. Như mô tả ở hình dưới, một bộ cân bằng tải được cài đặt ở phía trước forward- proxy caches. Chúng ta định nghĩa một địa chỉ IP ảo (VIP) trên bộ cân bằng tải và hướng VIP tới địa chỉ IP của từng cache server ở trên cổng 8080 (cổng 8080 thường được dùng cho kết nối proxy). Điều này nghĩa là lúc này trình duyệt sẽ được cấu hình để chỉ đến cổng này và nó sẽ gửi toàn bộ yêu cầu của người dùng đến cổng 8080 này. Với việc sử dụng bộ cân bằng tải này, chúng ta đã giải quyết được vấn đề về khả năng mở rộng cũng như tính đáp ứng của caches. Chúng ta có thể đưa thêm
caches vào khi cần thiết, và chỉ cần kết nối nó với bộ cân bằng tải, thêm nữa, khi một cache không hoạt động, requests sẽ được gửi đến cache khác ngay lập tức. Một thuận lợi nữa là khi người quản trị cần bảo trì một cache nào đó, chẳng hạn update phần mềm cho nó, anh ta có thể làm việc này mà không làm gián đoạn hoạt động của hệ thống.
H.2.1-10 Cài đặt cache ở trình duyêt của người dùng
Cân bằng tải cho caches ở đây cũng tương tự như cân bằng tải cho cụm server ứng dụng. Vấn đề lớn nhất khi sử dụng phương pháp này là phải cấu hình cho trình duyệt của người dùng chỉ đến cache. Nếu như chúng ta phải sử dụng một vài script tự động để làm việc này khi người dùng đăng nhập và hệ thống, thì sử dụng transparent proxy sẽ loại bỏ hoàn toàn được quá trình cấu hình này.
Transparent Proxy
Như đã nói ở trên, phương pháp cài đặt này sẽ giúp chúng ta tránh phải cấu hình trình duyệt người dùng, cache được cài đặt như một transparent proxy bằng cách đặt nó trên đường kết nối internet, như mô tả trên hình dưới đây
H.2.1-11 Cài đặt cache như một transparent proxy
Qua hình vẽ, chúng ta thấy rằng cache được cài đặt ở giữa đường truyền internet, do đó nó có khả năng ngắt kết nối tới server và phục vụ người dùng bằng dữ liệu mà nó có, trong trường hợp dữ liệu người dùng truy xuất không có trong cache, nó sẽ chuyển đến origin server để tìm và trả về cho người dùng. Người dùng sẽ không biết rằng có một bộ nhớ cache được cài đặt giữa họ và servers, tuy vậy phương án này sẽ gặp phải vấn đề về khả năng mở rộng và khả năng có sẵn. Với cách cài đặt như vậy, không thể lắp quá 1 bộ nhớ cache trên một đường truyền internet, và cache này trở thành SPOF(Single point of failure), nếu nó bị down, kết nối sẽ bị down hoàn toàn, hơn nữa, cách cài đặt này sẽ khiến cho người quản trị không thể bảo trì và nâng cấp cache mà không ngừng hoạt động của hệ thống.
Bằng cách sử dụng một bộ cân bằng tải để thực thi chuyển hướng transparent cache (transparent-cache switching), như mô tả trong hình dưới đây, chúng ta có thể đơn giản hóa cách cài đặt transparent-proxy cache. Bộ cân bằng tải phải được cấu hình bằng các biện pháp đổi hướng luồng dữ liệu (traffic-redirection policy) nhằm đổi hướng tất cả các luồng dữ liệu TCP với cổng đích là 80 đến cache. Các biện pháp này chỉ được dùng cho các luồng dữ liệu đến trên các cổng vật lý (physical port) mà được kết nối với mạng nội bộ. Điều này rất quan trọng, vì nếu như một cache không có đối tượng, nó sẽ tiếp tục gửi request đến server gốc, và lệnh này sẽ lại chạy qua bộ cân bằng tải một lần nữa, và lúc này, bộ cân bằng tải không được chuyển hướng request này ngược lại cache mà phải forward đến server gốc.
H.2.1-12 Cân bằng tải cho transparent-proxy cache
Với việc sử dụng transparent-cache switching, bộ cân bằng tải có thể dễ dàng thực hiện “helth check” nhằm kiểm tra ngay lập tức bất cứ hỏng hóc nào. Nếu như cache bị hỏng, bộ cân bằng tải chỉ cần hoạt động đơn giản như một switch, chuyển hướng luồng dữ liệu theo đường đi của nó, người dùng sẽ vẫn kết nối internet bình thường, tuy nhiên tốc độ sẽ giảm vì không có cache. Nhưng điều quan trọng là người dùng sẽ không bị ngắt kết nối internet nữa, vì cache không còn nằm trên đường truyền, kết nối sẽ chỉ bị ngắt khi bộ cân bằng tải bị hỏng, nhưng do bộ cân bằng tải hoạt động chỉ như một switch, nên khả năng hỏng của nó là thấp hơn cache rất nhiều.
Reverse Proxy
Khác với forward proxy hoạt động như một proxy cho người dùng gửi yêu cầu đến server, Reverse Proxy ngụ ý rằng nó hoạt động như một proxy cho server, như thể hiện trong hình dưới đây. Chúng ta cài đặt reverse proxy ở phía trước của Web servers, và như vậy, chúng ta phải cấu hình lại DNS để tên của website chỉ vào IP của proxy cache chứ không phải web servers, như vậy khi kết nối, nếu đối tượng có trong cache, nó sẽ trả về cho người dùng, ngược lại nó sẽ yêu cầu vào web servers và trả kết quả về sau đó. Như vậy lúc này reverse-proxy cache đứng ở vị trí giống như một bộ cân bằng tải, dùng để tăng tốc độ phía server, hay giảm thời gian đáp ứng của server đến với người dùng.
H.2.1-13 Cài đặt cache như mọt reverse-proxy
Hình dưới đây mô tả phương pháp cài đặt bộ cân bằng tải kết hợp với nhiều reverse-proxy cache. Một bộ cân bằng tải được đặt trước các caches, chúng ta sẽ định nghĩa một địa chỉ IP ảo VIP cho bộ cân bằng tải. Sau đó hướng nó đến từng
reverse-proxy cache trên những cổng ứng dụng riêng biệt đang được cache, chẳng
hạn như HTTP, FTP. Bộ cân bằng tải lúc này sẽ cân bằng tải cho các cache phía sau nó giống như nó cân bằng tải cho các web server và phân bố yêu cầu từ phía người dùng đến các cache này theo một thuật toán phân tải nào đó, chẳng hạn như round- robin hoặc băm theo một số giá trị.
Với các website toàn cầu, máy server được đặt ở khắp nơi trên thế giới, các bộ cache cũng như vậy, chúng không nhất thiết phải được cài đặt ngay trước Web servers mà có thể được cài đặt bất cứ đâu trên thế giới. Chẳng hạn như Web server có thể ở NewYork, nhưng cache lại được cài đặt ở Singapore, London.
Transparent Reverse Proxy
Trong trường hợp sử dụng forward proxy, chúng ta phải cấu hình trình duyệt của người dùng để chỉ đến forward proxy cache. Cũng giống như vậy, trong trường hợp của reverse proxy, chúng ta phải cấu hình cho DNS chỉ đến reverse proxy. Chuyện gì sẽ xảy ra nếu như chúng ta không muốn thay đổi DNS entry? Và sau
reverse proxy là rất nhiều web server? Cache sẽ phải phân phối yêu cầu vào trong
các server này và sẽ gặp phải trường hợp cân bằng tải. Thêm nữa, nếu một công ty cung cấp hosting chỉ muốn cung cấp tính năng tăng tốc server như một tính răng cao cấp dành riêng cho những khách hàng đặc biệt của họ? Sử dụng transparent-
reverse proxy chính là câu trả lời cho những câu hỏi này.
Transparent-reverse proxy được mô tả như trong hình dưới đây. Một bộ cân
bằng tải được đặt ở phía trước các web server, một tập các cache được cài đặt theo
reverse-proxy cache. Nhiệm vụ cân bằng tải được đẩy cho bộ cân bằng tải, và như
vậy cache sẽ không phải chịu trách nhiệm phân phối requests nữa, khi khách hàng đặc biệt kết nối và sử dụng dịch vụ đặc biệt, nhà cung cấp dịch vụ có thể cấu hình riêng cho địa chỉ IP ảo của khách hàng này trên bộ cân bằng tải sao cho tất cả các luồng dữ liệu được gửi đến trên cổng 80 sẽ được chuyển tiếp đến cache. Nếu cache hỏng, bộ cân bằng tải chỉ việc chuyển thẳng yêu cầu vào các web server. Luồng dữ liệu được mô tả như trên hình.
1. Nếu bộ cân bằng tải nhận ra đây là IP của khách hàng đặc biệt, nó sẽ chuyển yêu cầu vào cache
2. Nếu cache miss, hoặc yêu cầu cho các ngữ cảnh động, cache sẽ gửi yêu cầu ngược lại cho bộ cân bằng tải. Bộ cân bằng tải sẽ gửi yêu cầu đến server.
3. Server gửi dữ liệu trả về cho cache 4. Cache trả lại dữ liệu cho người dùng
H.2.1-15 Transparent-reverse proxy caches