TỔNG QUAN VỀ CÂN BẰNG TẢI
Các chức năng của hệ thống cân bằng tải
Thiết bị cân bằng tải, có thể là một Proxy hoặc Firewall tầng ứng dụng, đóng vai trò quan trọng trong việc chặn lưu lượng mạng, chẳng hạn như lưu lượng web, đến một trang web Đây là yếu tố đầu tiên tiếp nhận các yêu cầu trước khi phân phối tải, do đó chức năng này được xem là thiết yếu trong hệ thống cân bằng tải.
Cân bằng tải là một chức năng quan trọng giúp tách các lưu lượng thành các yêu cầu riêng biệt và xác định máy chủ nào sẽ nhận các yêu cầu đó Tùy thuộc vào các thuật toán khác nhau, có nhiều phương pháp khác nhau để phân chia tải giữa các máy chủ.
Để đảm bảo hoạt động hiệu quả, các máy chủ trong hệ thống cân bằng tải cần duy trì liên lạc thường xuyên với nhau, giúp xác định trạng thái hoạt động của từng máy chủ.
Cung cấp khả năng dự phòng bằng cách sử dụng nhiều kịch bản fail-over
Hệ thống cân bằng tải cung cấp khả năng nhận thức nội dung phân tán thông qua việc đọc URL, chặn cookie và biên dịch, đây là một trong những tiêu chí quan trọng để chia tải hiệu quả.
Chuyển mạch cache trong suốt giúp chuyển hướng lưu lượng một cách hiệu quả đến các caches, từ đó nâng cao thời gian đáp ứng và hiệu suất của hệ thống.
Nguyễn Văn Dũng 51K-CNTT Page 8
Ưu điểm của hệ thống cân bằng tải
Tính mở rộng: thêm hoặc bỏ bớt đi server một cách dễ dàng
Tính sãn sàng cao do hệ thống dùng nhiều Server, bảo dưỡng hệ thống server mà không cần tắt các dịch vụ
Tăng tính bảo mật cho hệ thống mạng do người dùng tương tác gián tiếp với các server cung cấp dịch vụ
Có thể tách các ứng dụng khỏi server
Làm việc được với nhiều hệ điều hành, hiệu suất cao
Server được nhóm lại thực hiện đa nhiệm vụ tốt hơn
Tất cả server đều hoạt động đúng công suất không có tình trạng một server làm việc quá tải trong khi các server khác lại đang “nhàn rỗi”.
Những tổ chức cần có giải pháp cân bằng tải
Các doanh nghiệp, tổ chức có quy mô lớn
Nhà cung cấp dịch vụ ISP
Trung tâm xử lý dữ liệu
Trường đại học, viện nghiên cứu …
Nguyễn Văn Dũng 51K-CNTT Page 9
CÁC KỸ THẬT CÂN BẰNG TẢI
Cân bằng tải webserver là yếu tố then chốt trong việc xây dựng website theo kiến trúc mở rộng, giúp tránh tình trạng tắc nghẽn server và đảm bảo phản hồi nhanh chóng cho người dùng Để thực hiện cân bằng tải hiệu quả, việc thiết kế và xây dựng bộ cân bằng tải là rất quan trọng Bộ cân bằng tải này sẽ đứng trước cluster server, nhận yêu cầu từ người dùng và phân phối tải một cách hợp lý giữa các server trong cluster.
3.1 Kỹ thuật cân bằng tải server (Server Load Balancing - SLB)
Bộ cân bằng tải kết nối người dùng và server, hoạt động như một proxy hoặc gateway Proxy chuyển tiếp yêu cầu và dữ liệu giữa người dùng và server, trong khi gateway chỉ tạo kết nối mà không xử lý thêm Có thể sử dụng phần cứng hoặc phần mềm để cài đặt trên front server hoặc web server Khi số lượng người dùng tăng, cần cài đặt hai bộ cân bằng tải song song theo cơ chế active-active hoặc active-backup để tránh điểm lỗi.
Phần mềm cân bằng tải thường hoạt động như một proxy và cần chú trọng đến một số kỹ thuật quan trọng Đầu tiên, việc kiểm tra trạng thái server là cần thiết để xác định server nào đang sẵn sàng nhận yêu cầu Bộ cân bằng tải sẽ sử dụng các phương pháp như gửi lệnh ping, thử kết nối hoặc các yêu cầu khác để kiểm tra tình trạng của server Kỹ thuật này giúp đảm bảo rằng yêu cầu được gửi đến server tốt nhất, đồng thời duy trì kết nối của người dùng với server trong suốt phiên làm việc của họ.
Một server bị down có thể phản hồi lệnh ping nhưng không xử lý được các kết nối TCP, trong khi một server bị treo có khả năng đáp ứng kết nối TCP nhưng không phản hồi các yêu cầu HTTP Khi một ứng dụng web nhiều lớp hoạt động, một số yêu cầu HTTP có thể được xử lý ngay lập tức, trong khi các yêu cầu khác có thể gặp lỗi.
Việc lựa chọn phương pháp kiểm tra phù hợp cho ứng dụng web và bộ cân bằng tải là một thách thức lớn Một số bài kiểm tra cần truy xuất dữ liệu từ cơ sở dữ liệu để đảm bảo tính chính xác của toàn bộ quy trình Tuy nhiên, nhược điểm lớn nhất của các phương pháp kiểm tra này là chúng tiêu tốn tài nguyên hệ thống như CPU và threads.
Nguyễn Văn Dũng 51K-CNTT Page 10
Cân bằng thời gian kiểm tra là thách thức lớn nhất trong việc lựa chọn server, vì khoảng thời gian giữa hai lần kiểm tra phải đủ dài để tiết kiệm tài nguyên hệ thống nhưng cũng cần đủ ngắn để nhanh chóng phát hiện server “chết” Việc thực hiện các “health checks” là một trong những khía cạnh phức tạp nhất của kỹ thuật cân bằng tải Do đó, sau một vài lần kiểm tra, các nhà phát triển thường thực hiện yêu cầu đặc biệt cho bộ cân bằng tải, giúp nó thực hiện các kiểm tra nội bộ hiệu quả hơn.
Phần mềm cân bằng tải mang lại độ linh hoạt cao nhờ khả năng cung cấp scripting, cho phép thực hiện các chỉnh sửa code nhanh chóng khi cần thiết Việc lựa chọn server tốt nhất cũng là yếu tố quan trọng để tối ưu hóa hiệu suất hệ thống.
Việc chọn server phù hợp là yếu tố quan trọng trong thuật toán cân bằng tải Phương pháp phổ biến cho các hệ thống nhỏ là Round Robin, nơi các server được chọn theo vòng Tuy nhiên, phương pháp này có nhược điểm là hai yêu cầu liên tiếp từ một người dùng có thể được gửi đến hai server khác nhau, dẫn đến việc mất thông tin giữa các yêu cầu Điều này làm giảm hiệu quả sử dụng tài nguyên, đặc biệt khi cần thiết lập kết nối cho các phiên chạy, như trong trường hợp thương lượng khóa SSL, điều này có thể tốn nhiều thời gian.
Một giải pháp để khắc phục nhược điểm này là áp dụng hàm băm theo địa chỉ IP, giúp các yêu cầu từ cùng một địa chỉ IP được chuyển đến một máy chủ duy nhất Tuy nhiên, phương pháp này yêu cầu người dùng phải có địa chỉ IP tĩnh Kỹ thuật này được gọi là Session Persistence.
Kỹ thuật Session Persistence là giải pháp quan trọng để đảm bảo rằng tất cả các yêu cầu của người dùng trong một phiên làm việc được gửi đến cùng một máy chủ Điều này giúp duy trì tính liên tục của phiên làm việc Nếu máy chủ gặp sự cố hoặc cần bảo trì, cần có cơ chế chuyển đổi để chuyển session của người dùng sang một máy chủ khác, đảm bảo trải nghiệm người dùng không bị gián đoạn.
Có một số giải pháp để tiếp cận kỹ thuật này, như sử dụng phản hồi HTTP 302 hoặc thiết lập liên kết giữa người dùng và server Tuy nhiên, cả hai phương pháp đều có những hạn chế: HTTP 302 buộc người dùng phải kết nối với một server duy nhất, ngay cả khi server đó đã ngừng hoạt động, trong khi việc tạo liên kết yêu cầu người dùng phải có IP tĩnh trong suốt phiên làm việc.
Cookie là một đối tượng do Web Server điều khiển, trong đó thông tin được chèn thêm vào kết quả trả về cho người dùng Những yêu cầu tiếp theo sẽ sử dụng thông tin này để cải thiện trải nghiệm người dùng.
Nguyễn Văn Dũng 51K-CNTT cho biết rằng thông tin cookie sẽ được gửi kèm theo yêu cầu từ người dùng đến server, giúp server đọc và xử lý các yêu cầu một cách chính xác.
Cookie được định nghĩa thông qua cặp tên và giá trị (name=value), ví dụ như cặp user=1, trong đó "user" là tên cookie và "1" là giá trị của nó Cookie được quản lý bởi trình duyệt và hoạt động "trong suốt" với người dùng.
Cookie hoạt động bằng cách khi người dùng gửi yêu cầu lần đầu tiên đến server mà không có cookie, yêu cầu sẽ được chuyển đến server RS1 Server RS1 sẽ tạo và gửi cookie server=1 về cho người dùng Trình duyệt của người dùng nhận cookie này và lưu trữ vào đĩa cứng Sau khi người dùng có thể đóng trình duyệt hoặc ngắt kết nối mà không xóa cookie, khi kết nối lại, trình duyệt sẽ gửi cookie server=1 trong yêu cầu HTTP.
SO SÁNH, ĐÁNH GIÁ CÁC THUẬT TOÁN
Xác suất xảy ra lỗi
Random Hạn chế Miễn phí Kém Cao
RR Rất phổ biến Miễn phí Trung bình Cao
Nguyễn Văn Dũng 51K-CNTT Page 26
WRR Phổ biến Miễn phí Trung bình Trung bình
DRR Phổ biến Cao Tốt Trung bình
Fastest Hạn chế Cao Tốt Thấp
LC Hạn chế Cao Tốt Thấp
Observed Rất hạn chế Rất cao Rất tốt Rất thấp Predictive Rất hạn chế Rất cao Rất tốt Rất thấp
Bảng 5: Bảng so sánh, đánh giá các thuật toán cân bằng tải
Việc khuyến khích sử dụng thuật toán cân bằng tải phù hợp với quy mô doanh nghiệp và điều kiện kinh tế là rất quan trọng Các công ty lớn với hệ thống mạng mạnh mẽ nên áp dụng các thuật toán như Dynamic Ratio, Fastest hoặc Least Connections để đảm bảo bảo mật và hiệu năng tối ưu Họ cũng có thể đầu tư vào thiết bị cao cấp sử dụng kỹ thuật Observed tùy thuộc vào nhu cầu cụ thể Đối với các doanh nghiệp có quy mô quốc tế, việc lựa chọn thiết bị với thuật toán Observed hay Predictive là hoàn toàn hợp lý.
Các công ty, doanh nghiệp vừa và nhỏ nên chọn các phương pháp cân bằng tải mã nguồn mở đơn giản và tiết kiệm, đáp ứng tốt nhu cầu sử dụng Phương pháp Scaling Up có thể áp dụng, nhưng không được khuyến khích theo hướng tích cực Hiện nay, thuật toán Round Robin được ưa chuộng nhờ vào sự đơn giản và tiện lợi, tuy nhiên, để đạt hiệu năng tải tối ưu, cần kết hợp duy trì session với thuật toán này.
Nguyễn Văn Dũng 51K-CNTT Page 27
XÂY DỰNG MÔ HÌNH HỆ THỐNG LOAD BALANCING CHO
MÔ HÌNH TỔNG QUAN
Load Balance sẽ cung cấp một địa chỉ IP ảo 192.168.0.111 để quản lý lưu lượng truy cập của người dùng Khi người dùng truy cập vào website, Load Balance có nhiệm vụ phân phối thứ tự truy cập của các người dùng đến từng trang web một cách hiệu quả.
Hai WebServer có chức năng đồng bộ dữ liệu 2 chiều với nhau Sao cho khi các User truy cập vào Website thì dữ liệu được đồng nhất
Hai WebServer sẽ được đồng bộ bằng DFS
1.3.Các thiết bị sử dụng
1 Máy Server cài đặt CentOS làm nhiệm vụ Load Balancing cho Cluster
2 Máy Server cài đặt WebServer để phục vụ nhu cầu của người dung
1 Máy Client làm nhiệm vụ kiểm tra hoạt động của hệ thống
Nguyễn Văn Dũng 51K-CNTT Page 28
TRIỂN KHAI
2.1 Cấu hình Cluster cho 2 WebServer
Trong bài này, Server 1 sẽ có IP là 192.168.0.144 và Server 2 có IP là 192.168.0.145 Nâng Server 1 lên thành Domain Controller và có tên vinhuni.edu.vn
Chi tiết cài đặt chúng ta xem ở mục 1phần phụ lục
2.2 Thiết lập Secondary Domain Controller
Cấu hình địa chỉ IP Server 2 như sau Điền Preferred DNS server là IP của Server 1
Tiến hành chọn domain dự phòng vinhuni.edu.vn
Chi tiết cài đặt chúng ta xem ở mục 2 phần phụ lục
2.3 Cài đặt File Server, Distributed File System trên Server 1 và Server 2
Trong mục này chúng ta cài đặt File server, và Distributed nhằm tạo thư mục đề đồng bộ hóa bằng DFS
Chi tiết cài đặt chúng ta xem ở mục 3 phần phụ lục
2.4 Cấu hình DFS Namespaces và DFS Replication trên Server 1
Ta tiến hành cài đặt thông số và tên file cần cho việc đồng bộ
Chi tiết cài đặt chúng ta xem ở mục 4 phần phụ lục
In the Data section of Web Server 1, we attempt to create a folder named "Trường Đại học Vinh_files," while on Web Server 2, we proceed to create an index.htm file.
==> Kết quả ở mục Data của 2 Server đều có cả 2 file
Nguyễn Văn Dũng 51K-CNTT Page 29
Hình 2.5 Test đồng bộ giữa hai webserver
2.6 Tiến hành đồng bộ hóa bằng Replication trong sql 2008
The database named "Quanlydetai" is created on both Server WEB1 and Server WEB2, serving as the data foundation for the website After synchronization, these two databases will contain identical data, ensuring consistency across both servers.
Yêu cầu database Quanlydetai ở web 1 cần được import dữ liệuh trước (database test2 ko cần)
Chi tiết cài đặt chúng ta xem ở mục 6 phần phụ lục
Trên Web ta tiến hành thêm mới giáo viên test01
Hình 2.6.1 Thêm mục cần đồng bộ
Nguyễn Văn Dũng 51K-CNTT Page 30
Hình 2.6.2 Kiểm tra kết quả trên Server 1
Hình 2.6.3 kiểm tra kết quả trên Server 2
2.7 Tiến hành cài đặt Web Server cho các Server
Nguyễn Văn Dũng 51K-CNTT Page 31
Quá trình cài đặt và cấu hình đã thành công, cho phép bạn triển khai đồng bộ dữ liệu giữa hai File Server, Webserver và các hệ thống khác.
2.8 Triển khai Load Balancing trên CENTOS
Thiết lập ip cho máy
Hình 2.8.1 Thiết lập ip cho máy Centos
Nguyễn Văn Dũng 51K-CNTT Page 32
Thiết lập DNS configuration ta đặt lại Hostname và DNS cho máy
Cài đặt dịch vụ Haproxy cho CentOs
Hình 2.8.3 Cài đặt gói Haproxy Để tiến hành cài đặt dịch vụ Haproxy (Do cài đặt theo yum nên yêu cầu máy phải kêt nối đc internet )
Cấu hình dịch vụ Haproxy
Ta cần thay đổi lại file haproxy.cfg bằng lệnh :
[root@lb1 ~]#vi /etc/haproxy/haproxy.cfg
Thay đổi code trong file haproxy.cfg như sau :
Hình 2.8.4 Code haproxy sử dụng để Cân Bằng Tải
Nguyễn Văn Dũng 51K-CNTT Page 33
Sau đó Save lại file haproxy.cfg
Tiến hành khởi đông dịch vụ haproxy bằng lệnh : service haproxy start
Hình 2.8.5 Khời động gói Haproxy
Cấu hình fire wall cho CentOs
Hình 2.8.6 Tiến hành mở cổng Web
Sau đó tiến hành Save lại file iptables và khởi động lại FileWall
Hình 2.8.7 Khởi động lại FileWall
Kiểm tra Load Balancing trên Client
Từ máy Client truy cập vào địa chỉ
Nguyễn Văn Dũng 51K-CNTT Page 34
Hình 2.8.8 Đăng nhập tài khoản và mật khẩu
Nhập vào tài khoản Root và pass 123456 như đã cấu hình trên haproxy.cfg
Hình 2.8.9: Kiểm tra dịch vụ quản lý Haproxy
Như vậy máy CentOs đã nhận được 2 máy WebServer 01 và WebServer 02
Từ máy Client truy cập vào địa chỉ 192.168.0.111 Ta thu được như sau
Nguyễn Văn Dũng 51K-CNTT Page 35
Hình 2.8.10: Kết quả Cân Bằng Tải
Như vậy là máy CentOS đã thực hiện được quá trình Load Balancing thành công
Ta Shutdown máy WebServer 02 thì ta thu được :
Hình 2.8.11: Kết quả khi tắt Web1
Vậy ta có thể kiểm soát được các máy có hoạt động hay không !
Và vào lại từ máy client ta vẫn thu được kết quả :
Nguyễn Văn Dũng 51K-CNTT Page 36
Hình 2.8.12: Kết quả thu được khi tắt Web1 thì Web vẫn hoạt động
Như vậy chúng ta đã triển khai thành công Load Balancing
Nguyễn Văn Dũng 51K-CNTT Page 37