Thiết kế bộ phân tải cho các dịch vụ mạng lớn đảm bảo khả năng nhanh chóng mở rộng quy mô hệ thống

89 328 0
Thiết kế bộ phân tải cho các dịch vụ mạng lớn đảm bảo khả năng nhanh chóng mở rộng quy mô hệ thống

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LỜI CẢM ƠN Lời xin gửi lời cảm ơn chân thành sâu sắc tới thầy giáo TS.Nguyễn Khanh Văn, người thầy tận tâm nhiệt tình dạy hướng dẫn hoàn thành luận văn Tôi xin bày tỏ lòng biết ơn sâu sắc đến tất thầy, cô Viện Công nghệ Thông tin Truyền thông giảng dạy truyền thụ kiến thức cho bạn đồng học suốt trình học tập vừa qua Cuối xin gửi lời cảm ơn chân thành sâu sắc tới gia đình, bạn bè tôi, người bên cạnh giúp đỡ, động viên khuyến khích Hà Nội, ngày 10 tháng năm 2013 Học viên Trần Văn Tâm MỤC LỤC PHẦN MỞ ĐẦU CHƢƠNG I: KIẾN TRÚC WEB VỚI KHẢ NĂNG NHANH CHÓNG MỞ RỘNG QUY MÔ HỆ THỐNG 11 Khái niệm chung kiến trúc web với khả mở rộng: 11 1.1 Khả mở rộng (Scalability): 11 1.2 Hiệu (Performance): 11 1.3 Khả sẵn có (High Availability): 12 1.4 Tính đáp ứng (Responsiveness): 12 1.5 Thời gian chết hệ thống (Downtime impact): 12 Các vấn đề cần giải trình xây dựng website theo kiến trúc với khả mở rộng: 13 2.1 Cân tải cho Application servers: 13 2.2 Cân tải cho Cơ sở liệu (database) servers: 16 2.2.1 Share nothing Cluster 17 2.2.2 Real Application Cluster (Shared storage Cluster) 19 2.3 Tổ chức lưu trữ liệu 20 CHƢƠNG II: PHƢƠNG PHÁP XÂY DỰNG BỘ CÂN BẰNG TẢI CHO WEB-SERVER 23 Lý thuyết xây dựng cân tải cho web-servers 23 1.1 Kỹ thuật cân tải server (Server Load Balancing – SLB) 24 1.1.1 Kiểm tra trạng thái server 24 1.1.2 Lựa chọn server tốt nhất: 25 1.1.3 Kỹ thuật Session Persistence: 25 1.1.4 Cookie: 26 1.2 Cân tải cho server toàn cầu (GSLB): 30 1.2.1 Domain Name System: 30 1.2.2 Cài đặt cân tải vào hệ thống mạng DNS: 32 1.2.3 Lựa chọn site tốt nhất: 35 1.3 Chuyển mạch cache suốt: 37 1.3.1 Các phương pháp cài đặt cache: 37 1.3.2 Các phương pháp cân tải cho Cache: 44 1.3.3 Nhận biết ngữ cảnh cache (Content-aware cache switching): 47 1.4 Cân tải sử dụng phần cứng cân tải phần mềm: 49 1.4.1 Cân tải sử dụng phần cứng: 49 1.4.2 Cân tải sử dụng phần mềm: 51 Các thuật toán cân tải: 52 2.1 Thuật toán ngẫu nhiên (random): 52 2.2 Thuật toán Round Robin (RR): 52 2.3 Thuật toán Weighted Round Robin (Ratio) 53 2.4 Thuật toán Dynamic Round Robin - DRR (Dynamic Ratio) 54 2.5 Thuật toán Fastest 54 2.6 Thuật toán Least Connections (LC) 55 2.7 Thuật toán Observed 56 2.8 Thuật toán Predictive 56 CHƢƠNG III: CÀI ĐẶT BỘ CÂN BẰNG TẢI HAPROXY .57 Bộ cân tải sử dụng mã nguồn mở Haproxy: 57 1.1 Giới thiệu cân tải mã nguồn mở Haproxy: 57 1.2 Cài đặt phương pháp Cookie-insert: 59 1.3 Cài đặt với khả mở rộng cao: 62 Cài đặt thuật toán cân tải HAproxy: 66 2.1 Thuật toán Weighted Round Robin (WRR) 70 2.2 Thuật toán Lest Connection (LC) 72 2.3 Nâng cao khả chịu tải cân tải: 73 Cài đặt cấu hình Haproxy server Centos: 75 3.2 Cài đặt Haproxy: 79 Cấu hình cài đặt công cụ theo dõi server hệ thống cân tải: 82 KẾT LUẬN VÀ ĐỊNH HƢỚNG PHÁT TRIỂN 86 TÀI LIỆU THAM KHẢO 89 LỜI CAM ĐOAN Tôi xin cam đoan luận văn kết trình nghiên cứu hướng dẫn thầy giáo – TS Nguyễn Khanh Văn Toàn nội dung luận văn kiến thức đúc rút sau trình học tập kiến thức thu từ tài liệu tham khảo thầy giáo cung cấp, luận văn không chép lại luận văn công trình khoa học khác Học viên Trần Văn Tâm DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ Ký hiệu Từ đầy đủ Nghĩa Tiếng Việt Authorita- Authoritative Domain Một website lưu thông tin tên nhiều tive DNS Name Server server tên Đây server tên có thẩm quyền cao Client Khách hàng, người truy cập vào website nói chung Cluster Dùng để cụm máy chủ mạng LAN Hệ thống phân giải tên internet, thiết lập tương DNS Domain Name System ứng địa IP website tên miền Proxy bên phía client, dùng để tăng tốc client, client Forward-proxy phải đến proxy để truy cập internet Khá giống proxy, nhiên có nhiệm vụ tạo kết nối GSLB HTTP Gateway người dùng server Global Server Load Cân tải cho máy server cài đặt khắp nơi Balancing giới Hypertext Transfer Giao thức truyền tải siêu văn bản, sử dụng Protocal WWW Cân tải: phân phối tải server nhằm đảm LB Load balancing bảo cân chúng Thuật toán phân tải cho server dựa số kết nối LC Least connections chúng Server tên nằm mạng LAN client, trình duyệt Local Local Domain Name client sử dụng local DNS để liên lạc với Domain DNS Server Name System Server đứng người dùng webserver, có nhiệm Proxy – Proxy Server vụ trao đổi thông tin Reverse-proxy Proxy bên phía server, tăng tốc server Thuật toán phân tải cho server theo thứ tự xoay RR Round Robin vòng Kiến trúc kết nối thiết bị lưu trữ từ xa để xem SAN Storage Area Networks chúng cục với Khả mở rộng: khả website đáp Scalable - Scalability ứng số lượng người dùng ngày tăng Scale - Scaling Mở rộng, tăng khả hoạt động Ký hiệu Từ đầy đủ Nghĩa Tiếng Việt Máy phục vụ, chứa thông tin, ứng dụng cho phép SLB Server người dùng truy cập vào Server Load Balancing Cân tải cho máy server Sự kết hợp địa IP cổng nhằm xác định đích Socket ứng dụng chạy server Một node hệ thống mà bị “chết” toàn SPOF TCP Single point of failure hệ thống bị tê liệt Transmission Control Giao thức điều khiển truyền vận, sử dụng tạo kết nối để Protocol trao đổi gói tin Transparent-proxy Proxy bên phía client, hoạt động “trong suốt” với người dùng DANH MỤC CÁC BẢNG H 1.2-1 So sánh scale out scale up .14 H 1.2-2 Bảng so sánh giá thành phương pháp .15 H 1.2-3 Mô hình cân tải web server 16 H 1.2-4 Mở rộng database server sử dụng kiến trúc SAN 17 H.1.2-5 Mở rộng database server theo chiều ngang 17 H.1.2-6 Real Application Cluster 19 H.1.2-7 Mô hình mở rộng database nên dùng 20 H.1.2-8 Mô hình CDN 21 H.2.1-1 Cách làm việc cookie user=1 26 H.2.1-2 Cookie read 27 H.2.1-3 Cookie-insert 28 H.2.1-4 Bộ cân tải chèn cookie 29 H.2.1-5 Bộ cân tải ghi đè cookie .29 H.2.1-6 Mô hình Global Server Load Balancing 31 H.2.1-7 Bộ cân tải hoạt động authoritative DNS .33 H.2.1-8 Bộ cân tải hoạt động forward DNS proxy 34 H.2.1-9 Sự kết hợp GSLB SLB cân tải 35 H.2.1-10 Cài đặt cache trình duyêt người dùng 39 H.2.1-11 Cài đặt cache transparent proxy 40 H.2.1-12 Cân tải cho transparent-proxy cache 41 H.2.1-13 Cài đặt cache mọt reverse-proxy 42 H.2.1-14 Bộ cân tải cho Reverse proxy caches 42 H.2.1-15 Transparent-reverse proxy caches .44 H.2.1-16 Phương pháp hash buckets dùng caching 46 H.2.1-17 Ví dụ luật giúp bỏ qua ngữ cảnh động 48 H.2.1-18 Cân tải sử dụng phần cứng 50 H.3.1-1 Mô hình cân tải đơn giản với cân tải 60 H.3.1-2 Mô tả Luồng liệu mô hình đơn giản 61 H.3.1-3 Mô hình phức tạp với cân tải chia sẻ địa IP ảo 63 H.3.1-4 Luồng liệu mô hình cân tải với keepalived 65 H.3.3-1 Cấu hình firewall cho CentOS .76 H.3.3-2Cấu hình firewall cho CentOS (tiếp) 76 H.3.3-3 Kiểm tra thông số server HAProxy 81 H.3.4-1 Kiến trúc hệ thống cài đặt Ganglia 82 Hình vẽ đánh theo định dạng: H [Chương].[Mục lớn] [Số thứ tự] PHẦN MỞ ĐẦU Lý chọn đề tài Sự bùng nổ ngành dịch vụ web năm gần khiến số lượng người truy cập vào mạng internet ngày tăng mạnh, đặc biệt website mạng xã hội website chia sẻ video trực tuyến Với hàng trăm triệu lượt truy cập ngày, website đòi hỏi phải có hệ thống server mạnh mẽ Một hệ thống hoạt động tốt khiến người dùng hài lòng, sau thời gian hoạt động số lượng người dùng tăng lên, máy chủ hệ thống bị tải, dẫn đến yêu cầu nâng cấp Sau nâng cấp lại tiếp tục cũ Vòng tuần hoàn dẫn đến nhu cầu cần phải xây dựng hệ thống website với khả đáp ứng người dùng thời gian đủ dài dễ dàng nâng cấp mở rộng cần Đó kiến trúc web với khả mở rộng quy mô hệ thống Vấn đề quan trọng kiến trúc web với khả mở rộng cân tải cho hệ thống web-server Một website toàn cầu có nhiều web-server đặt nhiều nơi giới, cân tải cho hệ thống web-server nghĩa làm cách để web-server không bị tải, đáp ứng nhu cầu người dùng thời gian nhanh Trong cạnh tranh khốc liệt website dịch vụ, nhà quản trị đáp ứng nhu cầu người dùng cách tốt nhất, người thắng, nhu cầu cân tải vô cần thiết vấn đề sống nhà cung cấp dịch vụ web Có nhiều phương pháp để cân tải, nhiên lý thuyết chung cần phải có cân tải đứng người dùng hệ thống web-server Bộ cân tải nhận yêu cầu từ phía người dùng, sau chuyển hướng yêu cầu đến server phù hợp dựa thuật toán phân tải, sau nhận liệu từ server trả cho người dùng Mục đích nghiên cứu luận văn, đối tƣợng, phạm vi nghiên cứu Luận văn trình bày tổng quan vấn đề cần phải giải trình thiết kế hệ thống web với khả mở rộng Sau sâu vào lý thuyết cân tải cho hệ thống web-server lớn, kỹ thuật phương pháp cân tải sử dụng Tiếp theo kiến trúc thành phần cần xây dựng cân tải, thuật toán phân tải dùng giới, phương pháp cài đặt cân tải vào hệ thống để đạt hiệu khả đáp ứng người dùng khả mở rộng Tiếp theo em xin đưa cài đặt số thuật toán cân tải cụ thể dựa số phần mềm cân tải mã nguồn mở số cải tiến cho thuật toán Cuối định hướng xây dựng cân tải hoàn toàn độc lập thực thi thuật toán phân tải cải tiến nhằm áp dụng cho website hoạt động Nội dung luận văn: Nội dung luận văn chia thành chương: Chương 1: Khái niệm chung kiến trúc web với khả nhanh chóng mở rộng quy mô hệ thống, vấn đề cần giải xây dựng website theo kiến trúc với khả mở rộng Chương 2: Lý thuyết để xây dựng cân tải web-server, chức năng, nhiệm vụ cân tải Các thuật toán, kỹ thuật phân tải sử dụng cân tải web-server Chương 3: Ứng dụng số thuật toán cân tải dựa phần mềm cân tải mã nguồn mở HAProxy Phần kết luận Phƣơng pháp nghiên cứu Phương pháp thu thập tư liệu sẵn có: Sử dụng công cụ tìm kiếm mạng Internet để tìm kiếm tài liệu liên quan, thu thập tài liệu ebook, nghiên cứu đăng tạp chí chuyên ngành, hỗ trợ cho việc thực luận văn Phương pháp kế thừa: Kế thừa lại kết nghiên cứu tài liệu có lĩnh vực nghiên cứu để tiếp tục nghiên cứu mở rộng nội dung Phương pháp lấy ý kiến chuyên gia: Tiếp thu ý kiến thầy giáo hướng dẫn trực tiếp, thầy Viện để hoàn thiện luận văn Kết luận Luận văn đưa thành phần cần phải xây dựng cân tải cài đặt giải pháp phân tải động thông minh hoạt động hiệu so với giải pháp chạy cân tải mã nguồn mở Trong luận văn trình bày bước cài đặt thuật toán tĩnh thuật toán động dựa sản phẩm cân tải mã nguồn mở chạy server linux HAProxy Hướng phát triển:  Về lý thuyết: Thực nghiên cứu sâu thuật toán cân tải, qua ứng dụng mềm dẻo, linh hoạt cho hệ thống cân tải cụ thể cho dịch vụ web  Về ứng dụng: Hiện ứng dụng dừng mức độ thử nghiệm dựa sản phẩm cân tải mã nguồn mở có sẵn, chưa đáp ứng yêu cầu liên lạc server với nhau, mà server cân tải Trong tương lai dự định phát triển ứng dụng cài đặt server đảm bảo yêu cầu liên lạc server có server gặp cố 10 temp->next = NULL; } } Sau cho vào overload_server temp->next = px->overload_srv; px->overload_srv = temp; temp->proxy = px; Khi tải server xuống giá trị đó, chẳng hạn 50%, cần phải gửi tin nhắn thông báo tải nhẹ hơn, lại cho vào danh sách server proxy sendmessage( proxy_address, proxy_port, srv_add, srv_port, srvOK); Quá trình diễn ngược lại so với trình Chúng ta đưa server khỏi danh sách server bị overload thêm vào danh sách server chạy proxy Vì trường hợp tải xảy ra, số lượng thời điểm mà server gửi message cho cân tải không nhiều để gây tải cho cân tải Ngược lại thuật toán đảm bảo không gửi thêm kết nối đến server tải hệ thống, nhằm tránh trường hợp server bị treo phải phục vụ khả Cài đặt cấu hình Haproxy server Centos: Thông tin server triển khai:  Host IP: 192.168.1.72  Haproxy: Triển khai Port 80: 192.168.1.72:80  Server1: 192.168.1.72:81  Server2: 192.168.1.72:82  Server3: 192.168.1.72:83 3.1 Cài đặt Centos cấu hình số thuộc tính:  Tắt firewall # setup 75 H.3.3-1 Cấu hình firewall cho CentOS Chọn firewall configuration  Run Tool Disable firewall, disbale SELinux H.3.3-2Cấu hình firewall cho CentOS (tiếp) 76  Cấu hình httpd # vi /etc/httpd/conf/httpd.conf Để HAProxy hoạt động transparent proxy, IP người dùng phải cho qua thuộc tính "X-Forwarded-For" Tìm kiếm file httpd.conf dòng bắt đầu với “LogFormat” [ ] LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent [ ] Chúng ta thay “%h” "%{X-Forwarded-For}i": [ ] LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent [ ] Tìm kiếm dòng Listen [ ] #Listen 12.34.56:80 [ ] 77 Thêm vào listen cổng 81, 82, 83 [ ] #Listen 12.34.56:80 Listen 81 Listen 82 Listen 83 [ ] Thêm vào cuối file httpd.conf: ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/var/www/domain/server1" ServerName server1 ErrorLog logs/server1.com-error_log CustomLog logs/server1.com-access_log common ServerAdmin phovd@gmail.com DocumentRoot "/var/www/domain/server2" ServerName server2 ErrorLog logs/server2.com-error_log CustomLog logs/server2.com-access_log common ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/var/www/domain/server3" ServerName server3 ErrorLog logs/server3.com-error_log CustomLog logs/server3.com-access_log common 78  Tạo thư mục chứa code website để test # mkdir /var/www/domain # cd domain # mkdir server1 # mkdir server2 # mkdir server3 Trong thư mục này, tạo file index.html đơn giản có chứa dòng text: “Welcome to server x” với x = 1, 2, 3.2 Cài đặt Haproxy: Đối với website nhỏ, cài đặt haproxy từ mạng (download chạy trực tiếp), chạy trực tiếp có dung lượng nhỏ, hoạt động ổn định nhiều website có nhiều options người quản trị website lựa chọn: # mkdir /usr/local/haproxy “Tạo thư mục chứa Haproxy # cd /usr/local/haproxy # wget HAProxy download link “Download Haproxy # gunzip downloaded file “Giải nén # mv unzip file haproxy # chmod 700 haproxy “Tạo file chạy haproxy “Cho phép đọc Hoặc biên dịch từ mã nguồn (đối với nhà phát triển): # gcc –c *.c # gcc –o haproxy *.o Tạo file config haproxy.conf 79 # vi haproxy.cfg defaults balance leastconn stats enable session timeout 50000 frontend www 192.168.1.72:80 mode http default_backend all_servers backend all_servers mode http server server1 192.168.1.72:81 weight maxconn 5000 server server2 192.168.1.72:82 weight maxconn 5000 server server3 192.168.1.72:83 weight maxconn 10000 Chạy HaProxy # /haproxy -f /haproxy.cfg –c # /haproxy -f /haproxy.cfg -p /var/run/haproxy.pid -D # /sbin/service httpd start “Khởi động service httpd Mở trình duyệt máy kết nối với máy mạng LAN, gõ vào địa 192.168.1.72, lúc cân tải listen cổng 80 máy 192.168.1.72, nhận biết yêu cầu, chuyển chúng đến server cổng 81, 82, 83 Chúng ta nhận kết Welcome to server x (với x = 1, 2, 3) Nếu thuật toán sử dụng round robin đơn giản, không sử dụng cookie, refresh liên tục cách nhấn F5, giá trị “x” quay vòng khoảng 1-3 Điều cho thấy thuật toán hoạt động tốt Nếu sử dụng thuật toán least connections kết khác Trên thực tế thuật toán least connections thể rõ giá trị có nhiều kết nối hướng tới server, đồng nghĩa với việc có nhiều session hoạt động Thuật toán hướng yêu cầu đến server có active session 80 Có thể kiểm tra thông số server, trạng thái server tại, số lượng kết nối tại, số lượt truy cập địa http://192.168.1.72/haproxy?stats Tính hoạt động lựa chọn file cấu hình tùy chọn “stats enable ” Kết thu ví dụ sau: H.3.3-3 Kiểm tra thông số server HAProxy Một số thông số đáng ý sau:  pid 3093: process id chạy Haproxy máy chủ linux  www frontend, backend webserver server1, server2, server3  Các thông số kiểm tra server mô tả màu hình vẽ, bao gồm trạng thái giống phần backup server active server UP, DOWN, UP and going down, DOWN and going UP  Ở thông số session tại, connections hàng đợi, thông lượng Bytes vào, số yêu cầu bị từ chối, lỗi cảnh báo Do bảng trạng thái Haproxy chưa phản ánh hết tình trạng tại, trước server hệ thống nên em xin đề xuất thêm cải tiến cài đặt thêm công cụ để monitor server hệ thống Cộng cụ cộng đồng mã 81 nguồn mở đánh giá cao Ganglia (http://ganglia.info/) Với việc cài đặt thêm giúp cho người quản trị dễ dàng theo dõi xem lại lịch sử thong số server như: CPU, RAM, DISK, Network… Cách cài đặt cấu hình trình bày cụ thể phần đây: Cấu hình cài đặt công cụ theo dõi server hệ thống cân tải: Ganglia dự án mã nguồn mở phát triển trường đại học California, công cụ monitor hệ thống tốt Sử dụng hệ điều linux Ganglia thu thập trạng thái máy client mạng Tổng hợp đưa kết hệ thống hoạt động Kiến trúc ganglia : H.3.4-1 Kiến trúc hệ thống cài đặt Ganglia Các thành phần ganglia gồm có :  gmetric: Một số đo mô tả trạng thái dịch vụ máy khách Ví dụ, thời gian máy khách hoạt động kể từ lần khởi động cuối (uptime), nhiệt độ trung bình bo mạch chủ, tốc độ quay quạt CPU,… Mỗi metric mô tả yếu tố: 82 - Thời gian đo: mô tả thời điểm ứng với số đo (mỗi số đo phải ứng với thời điểm nhất) - Giá trị: Có thể số (thực, nguyên,…), chuỗi - Tên: cho phép phân biện số đo với  gmond: chạy client có nhiệm vụ gửi thống số định kỳ gmetad  gmetad: Đây nhạc trưởng hay trái tim hệ thống Ganglia Tiến trình lắng nghe cách thường trực, nhận thông tin từ tiến trình gmond nào, phân giải thông tin lưu trữ vào kho liệu chung (theo định dạng RRD – Round Robin Database)  gweb: Cung cấp giao diện web, mô tả tất số đo kho liệu dạng đồ thị (trừ thông tin dạng chuỗi) Cài đặt Ganglia server chạy Haproxy: Trên server cài Haproxy (192.168.1.72) thực lệnh yum để cài đặt gói phần mềm sau: rrdtool ganglia ganglia-gmetad ganglia-gmond ganglia-web httpd php apr apr-util # yum install rrdtool ganglia ganglia-gmetad gangliagmond ganglia-web httpd php apr apr-util Sau sử file cấu hình gmond.conf sau: # vi gmond.conf cluster { name = “cluster1″ owner = “owner1″ latlong = “unspecified” url = “unspecified” } 83 udp_send_channel { host = 192.168.1.72 port = 8649 ttl = } udp_recv_channel { port = 8649 } Sửa file cấu hình gmetad.conf /etc/ganglia/gmetad.conf data_source “my cluster” 192.168.1.253:8649 Trên web server khác ta cần cài gmond: #yum install ganglia-gmond Chỉnh sửa file gmond.conf: # vi gmond.conf cluster { name = “cluster1″ owner = “owner1″ latlong = “unspecified” url = “unspecified” } 84 udp_send_channel { host = 192.168.1.72 port = 8649 ttl = } udp_recv_channel { port = 8649 } 85 KẾT LUẬN VÀ ĐỊNH HƢỚNG PHÁT TRIỂN Kết luận: Luận văn trình bày thành phần cần phải xây dựng cân tải cài đặt giải pháp phân tải động thông minh hoạt động hiệu so với giải pháp chạy cân tải mã nguồn mở Trước tiên, luận văn đưa mô hình website với khả mở rộng, từ nhấn mạnh tầm quan trọng việc cân tải cho webserver toàn hệ thống Sử dụng phép so sánh hiệu giá thành để xác định mô hình cần dùng cho website lớn sử dụng nhiều webserver nhỏ, đồng thời sử dụng cân tải để phân tải cho webserver Luận văn đưa thiết kế cân tải bao gồm phần chính, cân tải cho server, cân tải cho server toàn cầu, cân tải cho firewall cân tải cho cache Trong đó, luận văn sâu vào thảo luận phần cân tải cho server, server toàn cầu cache, kỹ thuật cân sử dụng phần Một cân tải hoạt động tốt cần phải kiểm tra trạng thái server, nhằm đảm bảo không chuyển yêu cầu người dùng đến server không hoạt động Thuật toán phân tải cần phải xây dựng cách thông minh nhằm lựa chọn server tốt để phục vụ yêu cầu người dùng Ngoài ra, cân tải phải đáp ứng vấn đề trì session cho người sử dụng Nó thực việc cách sử dụng cookie Luận văn giới thiệu thuật toán cân tải sử dụng số sản phẩm cân tải công ty lớn giới, chia làm nhánh thuật toán tĩnh thuật toán động Các thuật toán đòi hỏi lập trình phần mềm tinh vi, mà yêu cầu hỗ trợ phần cứng Trong luận văn cài đặt thuật toán tĩnh thuật toán động dựa sản phẩm cân tải mã nguồn mở chạy server linux HAProxy Các thuật toán chưa trọng vào thông số tải server, luận văn đưa hướng nhằm phát tải server, từ giúp cân tải hoạt động hiệu 86 Cuối cùng, luận văn đưa hai phương pháp cài đặt cấu hình cân tải vào hệ thống mạng nhằm đáp ứng nhu cầu khác người quản trị hệ thống với mong muốn đạt hiệu tối ưu Phương pháp đơn giản áp dụng cho hệ thống có server với số lượng người dùng vừa phải Phương pháp cài đặt phức tạp có cân tải, từ tránh SPOF, giúp hệ thống trì hoạt động hai cân tải bị hỏng Do thời gian nguồn lực có hạn, luận văn chưa thiết kế cân tải hoàn chỉnh, hi vọng thực nghiên cứu sâu đề tài này.Những ý tưởng chưa thực hạn chế thiết kế cân tải mã nguồn mở xin để dành phần định hướng phát triển Định hƣớng phát triển: Chúng ta mở rộng HaProxy cách thay đổi cấu trúc trỏ server, biến thành trỏ chiều, server lưu lại thông tin server trước server sau nó, hoạt động hiệu Bên cạnh đó, cần phải thiết kế ứng dụng nhỏ cài đặt server để báo cáo tải cho HAProxy Tuy nhiên, cân tải chưa đáp ứng yêu cầu liên lạc server với mà có server cân tải Nếu server gặp cố, toàn người sử dụng làm việc với bị ngắt kết nối Nếu server có liên lạc với nhau, công việc server phân sang cho server ngược lại Các server có tải cao chuyển bớt sang server khác Như cân tải cần ứng dụng trung gian để thông báo tình trạng server cụm máy chủ Ứng dụng liên lạc server với nhau, lưu giữ thông tin tải server, tìm máy nhanh để nhận yêu cầu từ phía người dùng Một ứng dụng có phần chính, phần thứ báo cáo tải server mà chạy, phần thứ hai thu thập tải tất server cụm cluster, phần thứ ba có nhiệm vụ hỏi xem máy nhanh hệ thống Phần thứ nhất, tính toán tải dựa vào thuật toán cân tải động, thuật toán linh hoạt dựa nhiều đếm để xác định tải máy Ý tưởng 87 dựa vào số kết nối có server tải CPU RAM mà server chạy, lấy thêm thông số tải đĩa cứng, % thời gian mà phải thực yêu cầu đọc ghi Vì giá trị biến thiên liên tục, nên để đo tải xác server, tiến hành đo đạc số thời điểm (chẳng hạn thời điểm liên tục), sau lấy giá trị trung bình tải server khoảng thời gian Việc đo số thời điểm quan trọng, thực vậy, mở Task Manager để thấy % hoạt động CPU, giả sử 30% Sau mở loạt ứng dụng, số 30% chưa thay đổi nhiều Đóng Task Manager mở lại đó, giá trị tăng lên cao, chẳng hạn 80% Điều cho thấy phép đánh giá thời điểm thiếu xác Bên cạnh nhiệm vụ tính toán, phần cần phải thiết kế để gửi tin nhắn server nhằm báo cáo tải, cần có giao thức gửi nhận phần Phần thứ hai có nhiệm vụ thu thập tải server cụm, dĩ nhiên biết tải máy mà chạy đó, nhận tải máy khác từ module báo cáo tải máy Sau chúng lưu trữ vào cấu trúc liệu mà dễ dàng lấy cần, phần thứ ba Hiện phần mềm mã mở Ganglia (được giới thiệu đây) cung cấp thông tin CPU, RAM, ổ đĩa, Load… từ node cụm server cho server chủ, ta lấy thông số để cung cấp thêm cho cân tải 88 TÀI LIỆU THAM KHẢO Bhavin Turakhia, SlideShare Website, Video: Building a Scalable Architecture for Web- Apps – Part http://wiki.directi.com/display/DEV/Building+a+Scalable+Architecture+for +Web+Apps+-+Part+I Cal Henderson, Slide: Scalable Web Architecture: Common Patterns and Approaches www.slideshare.net/iamcal/scalable-web-architectures-common-patternsand-approaches-web-20-expo-nyc-presentation Cal Henderson, May, 2006, Building scalable Web Sites Chandra Kopparapu, 2002, Load Balancing Servers, Firewalls, and Caches CodeLite Website http://codelite.org/LiteEditor/Download Eleftherios Gkioulekas, 1999, Developing software with GNU http://www.amath.washington.edu/~lf/tutorials/autoconf/toolsmanual.html#S EC10 F5 Network, Intro to Load Balancing for Developers – The Algorithms http://devcentral.f5.com/weblogs/dmacvittie/archive/2009/03/31/intro-toload-balancing-for-developers-ndash-the-algorithms.aspx Internet article, 2007, Load Balancing with Keepalived http://wiki.vchartier.net/howtos:cluster:keepalived Steven, 2007, HAproxy - Quick and Dirty HTTP Load balancing Tutorial on Redhat/Centos http://www.webhostingtalk.com/showthread.php?t=627783 10 Tony Bourke, 2001, Server Load Balancing 11 Valeria Cardellini, Michele Colajani, Philip S Yu, Dynamic Load Balancing on Web Server Systems, 1999 89 ...MỤC LỤC PHẦN MỞ ĐẦU CHƢƠNG I: KIẾN TRÚC WEB VỚI KHẢ NĂNG NHANH CHÓNG MỞ RỘNG QUY MÔ HỆ THỐNG 11 Khái niệm chung kiến trúc web với khả mở rộng: 11 1.1 Khả mở rộng (Scalability):... với khả nhanh chóng mở rộng quy mô hệ thống, vấn đề cần giải xây dựng website theo kiến trúc với khả mở rộng Chương 2: Lý thuyết để xây dựng cân tải web-server, chức năng, nhiệm vụ cân tải Các. .. thời gian đủ dài dễ dàng nâng cấp mở rộng cần Đó kiến trúc web với khả mở rộng quy mô hệ thống Vấn đề quan trọng kiến trúc web với khả mở rộng cân tải cho hệ thống web-server Một website toàn

Ngày đăng: 25/07/2017, 21:54

Từ khóa liên quan

Mục lục

  • PHẦN MỞ ĐẦU

  • CHƯƠNG I KIẾN TRÚC WEB VỚI KHẢ NĂNG NHANH CHÓNG MỞ RỘNG QUY MÔHỆ THỐNG

  • CHƯƠNG II PHƯƠNG PHÁP XÂY DỰNG BỘ CÂN BẰNG TẢI CHO WEB-SERVER

  • CHƯƠNG III CÀI ĐẶT BỘ CÂN BẰNG TẢI HAPROXY

  • KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN

  • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan