kaitoukid
Wh------
-
18/07/2014
-
26
-
31 bài viết
Thuật toán cân bằng tải và những áp dụng cho chống tấn công DDOS
I. Các khái niệm tổng quan
1. Khái niệm về “cân bằng tải”.
Cân bằng tải là một phương pháp phân phối khối lượng tải trên nhiều máy tính hoặc một cụm máy tính để có thể sử dụng tối ưu các nguồn lực, tối đa hóa thông lượng, giảm thời gian đáp ứng và tránh tình trạng quá tải trên máy chủ.
Lợi ích khi sử dụng phương pháp cân bằng tải:
II. Các thuật toán được áp dụng.
1. Thuật toán Roud-Robin.
Đây gọi là thuật toán luân chuyển vòng, các máy chủ sẽ được xem ngang hàng và sắp xếp theo một vòng quay. Các truy vấn dịch vụ sẽ lần lượt được gửi tới các máy chủ theo thứ tự sắp xếp.
Ví dụ:
Cấu hình một cụm Cluster bao gồm 03 máy chủ: A, B, C.
Hệ thống có 5 server với mức định lượng là 100(ms), các thời gian đến và thời gian thực hiện như sau.
Xét thời gian đến của tất cả các server, ta thấy server P0 có thời gian đến là 0(ms) nhỏ nhất, nên P0 được chạy, và chạy với thời gian là 100(ms) bằng mức định lượng. khi đó thời gian thực hiện còn lại là 250-100=150(ms). Và thời gian đến tức thời của P0 là 0+100=100(ms).
Ta lại xét thời gian đến của tất cả các server, t(P0) = 100ms, t(P1) = 50ms, t(P2) =130ms. tại đây thời gian chờ của P1 = 50 (ms) là nhỏ nhất nên P1 được chạy với thời gian chạy là 100ms = mức định lượng. khi đó thời gian thực hiện còn lại của P1 là 170-100=70(ms), thời gian đến tức thời là 50+10=150(ms).
Tiếp tục như vậy, lần này P2 sẽ được chạy, nhưng do thời gian thực hiện của P2 chỉ là 75 ms<100ms nên nó chỉ được chạy trong 75ms và không được tính đến trong quá trình vòng chuyển server sau này (trước khi tất cả các sever đều thực hiện hết thời gian của mình).
cứ tiếp tục như trên, chúng ta sẽ hoàn thành một chu kỳ hoạt động gồm có 5 server trong hệ thống đúng theo thuật toán Round Robin. Sau đó quá trình lập lại tương tự.
2. Thuật toán Wieghted Round Robin.
Bản chất giống như thuật toán Wieghted Round Robin, tuy nhiên chúng ta có thể cấu hình cho một máy chủ nào đó được hoạt động thường xuyên hơn
3. Thuật toán Least Connection.
Đây là thuật toán dựa trên tính toán số lượng kết nối để thực hiện cân bằng tải cho máy chủ, nó sẽ tự động lựa chọn máy chủ với số lượng kết nối đang hoạt động là nhỏ nhất.
Ví dụ: trong hệ thống server, chúng ta có số lượng server hoạt động là 3 với các tiến trình có sẵn như sau:
4. Thuật toán Wieghted Least Connection.
Bản chất giống thuật toán Least connection, nhưng chúng ta có thể cấu hình ưu tiên cho một máy chủ trong cụm máy chủ hoạt động nhiều hơn.
5. Thuật toán Least Respone Time.
Đây là thuật toán sử dụng phương pháp thời gian đáp ứng ít nhất, lựa chọn dịch vụ trên máy chủ với thời gian đáp ứng là nhỏ nhất.
Ví dụ: Trên hệ thống chúng ta đang sử dụng 3 server chạy đồng thời, thời gian xử lý các tiến trình như sau:
Server thứ 3 sẽ nhận được tiến trình tiếp theo vì nó có độ ưu tiên lớn nhất khi đang không xử lý tiến trình nào.
Tiếp tục server thứ 3 nhận thêm 2 tiến trình nữa để có thời gian xử lý bằng MIN của hệ thống.
Sau đó là sever thứ 1 sẽ nhận xử lý tiến trình tiếp theo à tiếp đó là server thứ 3 và server thứ 2.. v.v.v. Làm sao cho luôn đảm bảo server tiếp theo nhận tiến trình luôn là server đang có thời gian xử lý nhỏ nhất.
Ở bài viết tiếp theo, tôi sẽ giới thiệu về những công nghệ áp dụng những thuật toán cân bằng tải này
1. Khái niệm về “cân bằng tải”.
Cân bằng tải là một phương pháp phân phối khối lượng tải trên nhiều máy tính hoặc một cụm máy tính để có thể sử dụng tối ưu các nguồn lực, tối đa hóa thông lượng, giảm thời gian đáp ứng và tránh tình trạng quá tải trên máy chủ.
Lợi ích khi sử dụng phương pháp cân bằng tải:
- Tăng khả năng đáp ứng, tránh tình trạng quá tải trên máy chủ (giảm thiểu DOS/DDOS). à đảm bảo tính linh hoạt và mở rộng cho hệ thống.
- Tăng độ tin cậy và khả năng dự phòng cho hệ thống và tăng tính sẵn sàng cho hệ thống, đảm bảo người dùng không bị gián đoạn dịch vụ khi xảy ra sự cố tại một điểm cung cấp dịch vụ.
II. Các thuật toán được áp dụng.
1. Thuật toán Roud-Robin.
Đây gọi là thuật toán luân chuyển vòng, các máy chủ sẽ được xem ngang hàng và sắp xếp theo một vòng quay. Các truy vấn dịch vụ sẽ lần lượt được gửi tới các máy chủ theo thứ tự sắp xếp.
Ví dụ:
Cấu hình một cụm Cluster bao gồm 03 máy chủ: A, B, C.
- Yêu cầu dịch vụ thứ nhất sẽ được gửi đến máy chủ A.
- Yêu cầu dịch vụ thứ hai sẽ được gửi đến máy chủ B.
- Yêu cầu dịch vụ thứ ba sẽ được gửi đến máy chủ C.
Hệ thống có 5 server với mức định lượng là 100(ms), các thời gian đến và thời gian thực hiện như sau.
Xét thời gian đến của tất cả các server, ta thấy server P0 có thời gian đến là 0(ms) nhỏ nhất, nên P0 được chạy, và chạy với thời gian là 100(ms) bằng mức định lượng. khi đó thời gian thực hiện còn lại là 250-100=150(ms). Và thời gian đến tức thời của P0 là 0+100=100(ms).
Ta lại xét thời gian đến của tất cả các server, t(P0) = 100ms, t(P1) = 50ms, t(P2) =130ms. tại đây thời gian chờ của P1 = 50 (ms) là nhỏ nhất nên P1 được chạy với thời gian chạy là 100ms = mức định lượng. khi đó thời gian thực hiện còn lại của P1 là 170-100=70(ms), thời gian đến tức thời là 50+10=150(ms).
Tiếp tục như vậy, lần này P2 sẽ được chạy, nhưng do thời gian thực hiện của P2 chỉ là 75 ms<100ms nên nó chỉ được chạy trong 75ms và không được tính đến trong quá trình vòng chuyển server sau này (trước khi tất cả các sever đều thực hiện hết thời gian của mình).
cứ tiếp tục như trên, chúng ta sẽ hoàn thành một chu kỳ hoạt động gồm có 5 server trong hệ thống đúng theo thuật toán Round Robin. Sau đó quá trình lập lại tương tự.
2. Thuật toán Wieghted Round Robin.
Bản chất giống như thuật toán Wieghted Round Robin, tuy nhiên chúng ta có thể cấu hình cho một máy chủ nào đó được hoạt động thường xuyên hơn
3. Thuật toán Least Connection.
Đây là thuật toán dựa trên tính toán số lượng kết nối để thực hiện cân bằng tải cho máy chủ, nó sẽ tự động lựa chọn máy chủ với số lượng kết nối đang hoạt động là nhỏ nhất.
Ví dụ: trong hệ thống server, chúng ta có số lượng server hoạt động là 3 với các tiến trình có sẵn như sau:
- server thứ 1: đang xử lý 3 tiến trình.
- server thứ 2: đang xử lý 15 tiến trình.
- server thứ 3: đang không xử lý tiến trình nào.
4. Thuật toán Wieghted Least Connection.
Bản chất giống thuật toán Least connection, nhưng chúng ta có thể cấu hình ưu tiên cho một máy chủ trong cụm máy chủ hoạt động nhiều hơn.
5. Thuật toán Least Respone Time.
Đây là thuật toán sử dụng phương pháp thời gian đáp ứng ít nhất, lựa chọn dịch vụ trên máy chủ với thời gian đáp ứng là nhỏ nhất.
Ví dụ: Trên hệ thống chúng ta đang sử dụng 3 server chạy đồng thời, thời gian xử lý các tiến trình như sau:
- server 1 : đang xử lý 3 tiến trình, chu kỳ xử lý trung bình / 1 tiến trình là 2 giây.
- server 2 : đang xử lý 7 tiến trình , chu kỳ xử lý trung bình / 1 tiến trình là 1 giây.
- server 3 : không xử lý tiến trình nào, chu kỳ xử lý trung bình / 1 tiến trình là 2 giây.
Server thứ 3 sẽ nhận được tiến trình tiếp theo vì nó có độ ưu tiên lớn nhất khi đang không xử lý tiến trình nào.
Tiếp tục server thứ 3 nhận thêm 2 tiến trình nữa để có thời gian xử lý bằng MIN của hệ thống.
Sau đó là sever thứ 1 sẽ nhận xử lý tiến trình tiếp theo à tiếp đó là server thứ 3 và server thứ 2.. v.v.v. Làm sao cho luôn đảm bảo server tiếp theo nhận tiến trình luôn là server đang có thời gian xử lý nhỏ nhất.
Ở bài viết tiếp theo, tôi sẽ giới thiệu về những công nghệ áp dụng những thuật toán cân bằng tải này
Chỉnh sửa lần cuối bởi người điều hành: