Cânbằngtảitrong các ứngdụngWeb
Nội dung bài này nhằm mục đích cung cấp một số phương pháp để cân
bằng tải trên các nhóm máy chủ (cluster) ứng dụngWeb của bạn.
Cluster là một nhóm các máy chủ chạy đồng thời một ứngdụng Web,
quá trình thực hiện liên kết nhóm này làm cho các máy chủ hoạt động
như một máy chủ riêng lẻ khi quan sát từ khía cạnh bên ngoài. Để cân
bằng tải máy chủ, hệ thống cần phải phân phối các yêu cầu (request) đến
nhiều nút khác nhau bên trong cluster máy chủ, với mục đích tối ưu hóa hiệu
suất hệ thống. Điều này sẽ mang đến cho mạng của bạn hiệu suất cao hơn,
khả năng mở rộng (scalability) - tránh rơi vào tình trạng túng thiếu tài
nguyên mạng trong một doanh nghiệp hay một ứngdụngWeb nào đó.
Khả năng có sẵn cao có thể được hiểu là tình trạng dư thừa. Nếu một máy
chủ không thể quản lý một yêu cầu thì các máy chủ khác trong cluster đó có
quản lý được nó không? Trong một hệ thống có khả năng cung cấp cao, nếu
một Web Server bị lỗi thì máy chủ khác sẽ tiếp quản ngay để xử lý yêu cầu.
Khả năng mở rộng (Scalability) là khả năng của một ứngdụng có thể hỗ trợ
được số lượng người ngày một tăng. Nếu nó cần 10ms để một ứngdụng có
thể đáp trả cho một yêu cầu thì khoảng thời gian sẽ là bao lâu để nó đáp trả
đến 10.000 yêu cầu cùng một lúc? Khả năng mở rộng vô hạn sẽ cho phép nó
đáp trả các yêu cầu này chỉ trong khoảng 10ms. Khả năng mở rộng là đơn vị
đo cho một loạt các hệ số như số lượng người dùng đồng thời mà một cluster
có thể hỗ trợ và thời gian nó cần để xử lý một yêu cầu.
Có hai phương pháp chính để cânbằngtải đó là:
Luân chuyển vòng DNS
Sử dụngcác bộ cânbằngtảibằng phần cứng
Luân chuyển vòng DNS
Hầu hết trong số các bạn có lẽ đều đã biết rằng, cơ sở dữ liệu DNS (Domain
Name Server) bản đồ hóa tên host thành các địa chỉ IP.
Khi bạn nhập một URL vào trong trình duyệt (ví dụ như
www.quantrimang.com) thì trình duyệt sẽ gửi một yêu cầu đến DNS yêu cầu
nó trả về địa chỉ IP của site. Đây được gọi là việc tra cứu DNS. Sau khi trình
duyệt Web có được địa chỉ IP cho site thì nó sẽ liên hệ với site bằng địa chỉ
IP, và hiển thị trang mà bạn vừa yêu cầu. Máy chủ DNS thường có một địa
chỉ IP được bản đồ hóa với một tên site nào đó. Trong ví dụ riêng của chúng
tôi thì site là www.quantrimang.com bản đồ hóa thành địa chỉ IP là
222.255.31.160.
Để cânbằngtảibằng DNS, máy chủ DNS phải duy trình một số địa chỉ IP
khác nhau cho cùng một tên site. Nhiều địa chỉ IP thể hiện nhiều máy trong
một cluster, tất cả trong số chúng đều bản đồ hóa đến một tên site logic.
Trong ví dụ của chúng ta, www.quantrimang.com có thể được cấu hình trên
ba máy chủ trong một cluster với các địa chỉ IP dưới đây:
222.255.31.160
222.255.31.161
222.255.31.162
Trong trường hợp này, máy chủ DNS được bản đồ hóa như sau:
www.quantrimang.com 222.255.31.160
www.quantrimang.com 222.255.31.161
www.quantrimang.com 222.255.31.162
Khi yêu cầu đầu tiên đến được máy chủ DNS, nó sẽ trả về địa chỉ IP
222.255.31.160, máy đầu tiên. Khi có yêu cầu thứ hau, nó sẽ trả về địa chỉ
IP thứ hai: 222.255.31.161. Tiếp tục như vậy, với yêu cầu thứ tư, địa chỉ IP
đầu tiên lại được lặp lại.
Bằng cách sử dụng luân chuyển vòng DNS như ở trên, tất cả các yêu cầu đối
với một site nào đó đều được phân phối đều đến tất cả các máy trong cluster.
Chính vì vậy, với phương pháp cânbằng tải này, tất cả các nút trong cluster
đều được sử dụng.
Ưu điểm của phương pháp luân chuyển vòng DNS
Các ưu điểm chính của phương pháp này nằm ở chỗ rẻ và dễ dàng:
• Không đắt và dễ dàng thiết lập: Các quản trị viên hệ thống chỉ cần tạo
một số thay đổi trong máy chủ DNS để hỗ trợ được việc luân chuyển vòng,
và nhiều máy chủ DNS đã có sự hỗ trợ này. Nó không yêu cầu đến sự thay
đổi mã của ứngdụng Web; trong thực tế, các ứngdụngWeb không hề biết
về cơ chế cânbằngtải mà nó bị thực hiện.
• Đơn giản: Phương pháp này không yêu cầu đến các chuyên gia về mạng
trong việc thiết lập hoặc giỡ rối hệ thống trong trường hợp có vấn đề nào đó
xay ra.
Nhược điểm của phương pháp này
Có hai nhược điểm chính của phương pháp dựa trên phần mềm này là nó
không cung cấp sự hỗ trợ mối quan hệ thời gian thực giữa các máy chủ với
nhau và không hỗ trợ khả năng có sẵn cao.
- Không hỗ trợ mối quan hệ thời gian thực giữa các máy chủ. Mối quan
hệ thời gian thực giữa các máy chủ là khả năng của hệ thống trong việc quản
lý các yêu cầu của người dùng, máy chủ này hoặc bất kỳ máy chủ nào, phụ
thuộc vào thông tin session được duy trì trên máy chủ hoặc tại mức cơ sở
bản, mức cơ sở dữ liệu.
Không có được khả năng hỗ trợ mối quan hệ giữa các máy chủ, phương
pháp luân chuyển vòng DNS dựa vào một trong ba phương pháp đã được
đưa ra để duy trì sự kiểm soát session hoặc sự nhận dạng người dùng đối với
các yêu cầu đang đến trên HTTP.
Các cookie
Các trường ẩn
Viết lại URL
Khi một người dùng thực hiện một yêu cầu đầu tiên, máy chủ Web sẽ trả
một thẻ bằng văn bản duy nhất để phân biệt người dùng đó. Các yêu cầu tiếp
theo có thẻ này để sử dụng cookie, viết lại URL hoặc các trường ẩn, cho
phép máy chủ xuất hiện để duy trì một session giữa máy khách và máy chủ.
Khi người dùng thiết lập một session với một máy chủ, thì tất cả các yêu cầu
đến sau thường đều đi đến cùng một máy chủ.
Vấn đề ở đây là trình duyệt lưu địa chỉ IP của máy chủ đó. Khi Cache hết
hạn, trình duyệt sẽ thực hiện một yêu cầu khác đối với máy chủ DNS để có
được địa chỉ IP có liên kết với tên miền. Nếu máy chủ DNS trả về một địa
chỉ IP khác, một máy chủ khác trong cluster, thì các thông tin về session sẽ
bị mất.
- Không hỗ trợ cho khả năng có sẵn cao. Xem xét một cluster có n nút.
Nếu một nút nào đó gặp vấn đề thì cứ yêu cầu thứ n đến máy chủ DNS đều
hướng bạn đến một nút hỏng này. Một router thông minh có thể giải quyết
được vấn đề này bằng cách kiểm tra các nút ở các khoảng thời gian nào đó,
phát hiện ra các nút bị hỏng và gỡ bỏ chúng ra khỏi danh sách, chính vì vậy
sẽ không có yêu cầu nào được gửi đến chúng nữa. Tuy vậy, vấn đề ở đây
vẫn tồn tại nếu nút vẫn có nhưng ứngdụngWeb đang chạy trên nút đã bị
hỏng.
Thay đổi cluster sẽ mất nhiều thời gian để truyền bá đến toàn bộ phần còn lại
của Internet. Một lý do ở đây là trong nhiều tổ chức lớn – các ISP, các công
ty, hay đại lý – lưu các yêu cầu DNS của họ để giảm lưu lượng mạng và thời
gian request. Khi người dùng bên trongcác tổ chức như vậy thực hiện một
request thì hệ thống sẽ được kiểm tra danh sách các tên DNS của Cache đã
được bản đồ hóa địa chỉ IP. Nếu hệ thống phát hiện thấy một entry nào thì
nó sẽ trả địa chỉ IP về cho người dùng. Nếu nó không phát hiện thấy entry
nào trong Cache nội bộ thì ISP sẽ gửi request DNS này đến máy chủ DNS
và lưu sự đáp trả.
Khi một entry đã được lưu hết hạn, ISP sẽ nâng cấp cơ sở dữ liệu nội bộ của
nó bằng cách liên hệ với các máy chủ DNS khác. Khi danh sách các máy
chủ của bạn thay đổi, nó có thể cần đến một khoảng thời gian ngắn cho các
entry đã được lưu trên mạng của các tổ chức khác hết hạn và tìm kiếm danh
sách các máy chủ đã được cập nhật. Trong suốt chu trình này, máy khách
vẫn có thể thực hiện hành động “hit” nút máy chủ bị hỏng, nếu ISP của máy
khách đó vẫn có một entry trỏ đến nó. Trong trường hợp như vậy, một số
người dùng của ISP đó không thể truy cập vào site của bạn từ những lần truy
cập ban đầu, thậm trí nếu cluster của bạn có các máy chủ dư thừa vẫn đang
hoạt động.
Một vấn đề còn lớn hơn xuất hiên khi gỡ bỏ (removing) một nút so với việc
bổ sung. Khi bạn bớt đi một nút, người dùng có thể đang thực hiện “hit” một
máy chủ không tồn tại. Còn khi bạn thêm một nút thì máy chủ đó vẫn chưa
được sử dụng cho tới khi địa chỉ IP của nó đến được tất cả các máy chủ
DNS.
Mặc dù phương pháp này có thể cânbằng được một số lượng người dùng
trên mỗi máy chủ, nhưng nó không hoàn toàn cânbằngtải máy chủ. Một số
người dùng có thể yêu cầu mức tải cao hơn trong suốt một session của họ so
với những người dùng khác ở trên máy chủ khác, và phương pháp này
không thể bảo đảm chống lại được sự bất công bằng đó.
hfghfghfghfghfghfgg
. Cân bằng tải trong các ứng dụng Web
Nội dung bài này nhằm mục đích cung cấp một số phương pháp để cân
bằng tải trên các nhóm máy chủ (cluster) ứng. chính để cân bằng tải đó là:
Luân chuyển vòng DNS
Sử dụng các bộ cân bằng tải bằng phần cứng
Luân chuyển vòng DNS
Hầu hết trong số các bạn có