Tài liệu Khóa luận Nghiên cứu, đánh giá và phát triển các mô hình Cluster Server: Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
Trường Đại Học Khoa Học Tự Nhiên Tp HCM
Khoa Công nghệ Thông tin
Bộ môn Mạng máy tính & Viễn thông
Báo cáo Đề tài :
Giáo viên hướng dẫn
Phạm Nguyễn Anh Huy
Sinh viên thực hiện
Nguyễn Trường An MSSV: 9912501
Phạm Thanh Phong MSSV: 9912645
Tp HCM Tháng 07/2003
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
Y×Z
Với nhiều sự giúp đỡ vô cùng quý báu của Quý Thầy, Cô khoa Công Nghệ Thông Tin,
sự chỉ bảo nhiệt tình của các Anh, chị khóa trước cùng với sự hỗ trợ từ bạn bè, chúng em đã
hoàn thành Luận Văn Tốt Nghiệp này.
Để bày tỏ lòng biết ơn to lớn ấy, chúng em xin chân thành cảm ơn:
• Quý Thầy, Cô khoa Công Nghệ Thông Tin đã tận tình dìu dắt, chỉ dạy cho em
những kiến thức quan trọng để chúng em hoàn thà...
98 trang |
Chia sẻ: hunglv | Lượt xem: 1581 | Lượt tải: 2
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Nghiên cứu, đánh giá và phát triển các mô hình Cluster Server, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
Trường Đại Học Khoa Học Tự Nhiên Tp HCM
Khoa Công nghệ Thông tin
Bộ môn Mạng máy tính & Viễn thông
Báo cáo Đề tài :
Giáo viên hướng dẫn
Phạm Nguyễn Anh Huy
Sinh viên thực hiện
Nguyễn Trường An MSSV: 9912501
Phạm Thanh Phong MSSV: 9912645
Tp HCM Tháng 07/2003
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
Y×Z
Với nhiều sự giúp đỡ vô cùng quý báu của Quý Thầy, Cô khoa Công Nghệ Thông Tin,
sự chỉ bảo nhiệt tình của các Anh, chị khóa trước cùng với sự hỗ trợ từ bạn bè, chúng em đã
hoàn thành Luận Văn Tốt Nghiệp này.
Để bày tỏ lòng biết ơn to lớn ấy, chúng em xin chân thành cảm ơn:
• Quý Thầy, Cô khoa Công Nghệ Thông Tin đã tận tình dìu dắt, chỉ dạy cho em
những kiến thức quan trọng để chúng em hoàn thành Luận Văn này.
• Đặc biệt, chúng em xin kính gửi đến Giáo viên Hướng dẫn - Thầy Phạm Nguyễn
Anh Huy - Người đã tận tâm chỉ dẫn, truyền đạt kiến thức cho chúng em trong
suốt thời gian làm Luận Văn Tốt Nghiệp lòng biết ơn sâu sắc nhất.
• Xin chân thành cảm ơn các Anh chị khóa trước, các bạn học cùng khóa đã nhiệt tình
góp ý giúp đỡ chúng em hoàn chỉnh luận văn này.
Cuối cùng, chúng em xin kính chúc sức khỏe Quý Thầy, Cô, các anh chị và các bạn.
Xin chân thành cảm ơn !
Trân trọng kính chào.
Nhóm thực hiện đề tài
Nguyễn Trường An & Phạm Thanh Phong
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
MỤC LỤC
1. Đặt vấn đề ( bài toán) ...................................................................................................1
2. Giới thiệu ........................................................................................................................1
2.1 Single Server Solution........................................................................................................ 1
2.2 Cluster Server Solution ...................................................................................................... 2
3. Các giải pháp chia tải Server .......................................................................................3
3.1 DNS Load balancing (DNS Round Robin) ......................................................................... 4
3.1.1 Giới thiệu.................................................................................................................................... 4
3.1.2 Cấu hình ..................................................................................................................................... 6
3.1.3 Đánh giá ưu khuyết điểm............................................................................................................ 8
3.2 Hardware-based Load balancing........................................................................................ 9
3.2.1 Giới thiệu.................................................................................................................................... 9
3.2.2 Mô hình hoạt động.................................................................................................................... 10
3.2.3 Cisco LocalDirector 4000 series .............................................................................................. 11
3.2.4 Đặc điểm của thiết bị ............................................................................................................... 11
3.2.5 Cấu hình thiết bị ....................................................................................................................... 13
3.2.6 Bảng giá tham khảo.................................................................................................................. 13
3.3 Software-based Load balancing ....................................................................................... 14
3.3.1 Application level load balancing với Apache/mod_jk/Tomcat .................................................. 14
A. Giới thiệu .......................................................................................................................... 14
B. Cài đặt ............................................................................................................................... 15
3.3.2 Kỹ thuật IP load balancing với LVS (Linux Virtual Server) ..................................................... 19
A.Giới thiệu ........................................................................................................................... 19
B. Kiến trúc hệ thống............................................................................................................. 20
C. Kỹ thuật IP load balancing ................................................................................................ 25
D. Các thuật toán load balancing trong LVS.......................................................................... 31
E. Các công cụ dùng để quản trị LVS.................................................................................... 34
F. Cài đặt và cấu hình LVS cluster ........................................................................................ 35
G. Đánh giá ưu khuyết điểm.................................................................................................. 42
H. Kết luận............................................................................................................................. 43
3.4 Oracle 9iAS clustering ..................................................................................................... 43
3.4.1 Kiến trúc n-tier clustering ........................................................................................................ 43
A. Single tier-clustering ( basic clustering) ............................................................................ 44
B. Two tier-clustering ............................................................................................................ 45
C. Multi tier-clustering........................................................................................................... 47
3.4.2 n-tier clustering với Oracle 9iAS .............................................................................................. 48
A. Kiến trúc của một Oracle 9i cluster....................................................................................... 49
B. Cấu trúc cây phân cấp của Enterprise Manager trên Oracle 9iAS........................................ 57
C. Instance- specific.................................................................................................................... 58
D. Software & Hardware failure trên Oracle9iAS ..................................................................... 59
E. Cấu hình clustering và load balancing ................................................................................... 60
F. Cấu hình OC4J Instance trên Oracle9i AS............................................................................. 63
3.5 Mô hình cải tiến ( phát triển) ........................................................................................... 64
3.5.1 Apache/mod_jk/Tomcat với session replication........................................................................ 64
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
A. Giới thiệu session replication ............................................................................................ 64
B. Cơ chế hoạt động............................................................................................................... 65
C. Nâng cấp mô hình Apache/mod_jk/Tomcat với Session Replication................................ 66
D. Nhận xét ưu khuyết điểm.................................................................................................. 68
3.5.2 Content-based load balancing kết hợp LVS với Reverse proxy................................................. 68
A. Tại sao phải chia tải theo nội dung yêu cầu ( content-based)? ......................................... 68
B. Hướng giải quyết - cluster of cluster ................................................................................. 68
C. Cài đặt cluster of cluster.................................................................................................... 71
3.5.3 Giải quyết single point of failure .............................................................................................. 74
4. Cluster testing và Results ...........................................................................................75
4.1 Testing plan ...................................................................................................................... 75
4.2 Results .............................................................................................................................. 78
5. Hướng phát triển .........................................................................................................80
6. Kết luận ........................................................................................................................80
7. Tài liệu Tham khảo......................................................................................................82
8. Phụ lục...........................................................................................................................85
8.1 Phụ lục Các internet site xử dụng Cluster server với LVS .............................................. 85
8.2 Phụ lục Một số Thuật ngữ chuyên ngành sử dụng trong báo cáo .................................... 86
8.3 Phụ lục Cấu trúc CD báo cáo ........................................................................................... 88
DAN H MỤC HÌNH ẢNH
Hình 2-1 Tổng quan về cluster server .............................................................................2
Hình 3-1 DNS lookup một yêu cầu ...................................................................................5
Hình 3-2 DNS load balancing ............................................................................................5
Hình 3-3 Cấu hình DNS Load balancing..........................................................................6
Hình 3-4 Server bị lỗi trong DNS Round Robin .............................................................8
Hình 3-5 sơ đồ phân tải luồng TCP/IP sử dụng LocalDirector(không có failover ở
mức load balancer) ..........................................................................................................10
Hình 3-6 sơ đồ phân tải luồng TCP/IP sử dụng LocalDirector(có failover ở mức
load balancer)...................................................................................................................11
Hình 3-7 Front view LocalDirector 430 / 416 ...............................................................11
Hình 3-8 Front view LocalDirector 417 .......................................................................12
Hình 3-9 Rear view (với kết nối cáp failover giữa primary và backup load balancer)
LocalDirector 430 / 416 ...................................................................................................12
Hình 3-10 Kiến trúc Apache/Tomcat load balancing..................................................14
Hình 3-11 n-tier clustering với Apache load balancer .................................................15
Hình 3-12 Tổng quan về LVS.........................................................................................21
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
Hình 3 -13 Failover mức load balancer trong LVS ......................................................23
Hình 3-14 Các thành phần trong LVS ..........................................................................24
Hình 3-15 LVS-NAT........................................................................................................25
Hình 3-16 Một ví dụ LVS-NAT......................................................................................26
Hình 3-17 LVS-TUN........................................................................................................28
Hình 3-18 Hoạt động của LVS-TUN .............................................................................29
Hình 3-19 LVS-DR ..........................................................................................................30
Hình 3- 20 Hoạt động của LVS-DR...............................................................................31
Hình 3-21 Basic clustering...............................................................................................45
Hình 3-22 Two tier clustering (webtier và presentation tier chung một host).........46
Hình 3-23 Two tier clustering ( presentation tier và object tier chung host) ...........47
Hình 3-24 Multi tier clustering.......................................................................................48
Hình 3-25 Kiến trúc n-tier clustering trên Oracle 9iAS.............................................49
Hình 3-26 Kiến trúc cluster Oracle9iAS .......................................................................50
Hình 3-27 kiến trúc của farm và cluster trên Oracle9iAS..........................................51
Hình 3-28 Minh họa OHS ...............................................................................................55
Hình 3-29 Minh họa OC4J Instance..............................................................................56
Hình 3-30 Minh họa Islands ...........................................................................................57
Hình 3-31 Minh họa cấu trúc cây của Cluster.............................................................58
Hình 3-32 Minh họa Software failure ...........................................................................59
Hình 3-33 Minh họa hardware failure..........................................................................60
Hình 3-34 Minh họa load balancing trên Application Server Instance ...................61
Hình 3-35 Demo tạo cluster bằng Giao diện web-based .............................................61
Hình 3-36 Demo thêm một instance vào cluster bằng giao diện web-based.............62
Hình 3-37 Demo việc quản lý cluster farm bằng giao diện web-based......................62
Hình 3-38 Giao diện Web-based cấu hình web session replicate ..............................63
Hình 3- 39 Cấu hình Apache/Tomcat với session replication .....................................64
Hình 3- 40 Session replication over IP multicast..........................................................66
Hình 3-41 Hoạt động Reverse proxy .............................................................................69
Hình 3-42 LVS Load balancer kết hợp với Reverse proxy .........................................70
Hình 3-43 Cài đặt Reverse proxy trong cùng một mạng ...........................................71
Hình 3-44 cài đặt reverse proxy thuộc hai mạng khác nhau .....................................72
Hình 3-45 Mô hình giải pháp “single point of failure”...............................................75
Hình 4-1 Sơ đồ mạng testing mô hình Apache/mod_jk/Tomcat.................................76
Hình 4-2 Sơ đồ mạng testing mô hình LVS ...................................................................77
Hình 4-3 Kết quả testing mô hình Apache/mod_jk/Tomcat........................................78
Hình 4-4 Kết quả testing mô hình LVS .........................................................................79
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
DANH MỤC CÁC BẢNG
Bảng 3-1 Cấu hình Local Director 416/430 ........................................................................... 13
Bảng 3-2 Cấu hình Local Director 417 .................................................................................. 13
Bảng 3-3 Bảng giátham khảo tại
systems/prices/index_full.asp................................................................................................. 13
Bảng 3-4 Bảng giá tham khảo tại
14
Bảng 4-1 Cấu hình Client....................................................................................................... 76
Bảng 4-2 Cấu hình Server...................................................................................................... 76
Bảng 4-3 Cấu hình Apache load balancer.............................................................................. 77
Bảng 4-4 Cấu hình LVS Director ........................................................................................... 77
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 1 / 98
1. Đặt vấn đề ( bài toán)
Ngày nay, với sự bùng nổ số lượng người sử dụng Internet đặc biệt là các ứng dụng
Web, thương mại điện tử …cùng với sự phát triển của các trang web có nội dung động (dynamic
content) đã làm gia tăng đáng kể khả năng xử lý của server. Đến một thời điểm nào đó server
sẽ không thể đáp ứng với số lượng lớn các yêu cầu đồng thời, và giải pháp được đưa ra là thay
thế hoặc nâng cấp server hiện tại bằng server khác có cấu hình mạnh, khả năng xử lý cao
nhưng giải pháp này không được khả thi bởi vì các lý do sau:
• Với server mới được thay thế này thì trong tương lai gần lại không thể đáp ứng
được số lượng các yêu cầu lớn hơn và chúng ta lại phải thay thế hoặc nâng cấp
server này bằng server khác có cấu hình mạnh mẽ hơn và điều này sẽ còn tiếp
tục cho đến khi nào ???
• Với mỗi công đoạn thay thế hay nâng cấp server thì chi phí phải trả cho thiết bị
phần cứng khá cao, và giải pháp này xem ra không mang lại hiệu quả kinh tế
cho lắm.
Từ các vấn đề trên , người ta đưa ra khái niệm “cluster server”?
2. Giới thiệu
Tim Berners-Lee đã phát triển World Wide Web (WWW) năm 1990 khi ông đang làm
việc tại CERN ( the European Laboratory for Particle Physics -Boutell). Kể từ đó, web đã trở
thành nguồn chủ lực trong tất cả các loại thông tin. Web đã trở nên không còn hạn chế nữa khi
Marc Andreessen thuộc The National Center for Supercomputing Applications cho ra đời
Mosaic, một trình WWW client rất phổ biến.
Trong vài năm gần đây, các ứng dụng web đã gia tăng rất đáng kể từ vài trăm pages đã
lên đến hàng triệu web sites như hiện nay. Số lượng người dùng online ngày càng cao điển
hình như : Yahoo, Amazon.com, Microsoft, …Một webserver thông thường sẽ không thể nào
đáp ứng được hàng ngàn các requests cùng lúc được. Đối mặt với vấn đề này, các sites có
lượng traffic cao thường có hai giải pháp lựa chọn : thay thế webserver cũ bằng webserver mới
nhanh hơn hoặc thêm vào các server khác để làm tăng khả năng đáp ứng ( giải pháp thêm
nhiều server hoạt động đồng thời này gọi là cluster server).
2.1 Single Server Solution
Để giải quyết vấn đề gia tăng đáng kể các yêu cầu từ client, nhà quản trị thay thế
server cũ (hardware) bằng server mới, mạnh hơn và nhanh hơn để có thể đáp ứng được tốt các
yêu cầu.
Với hướng tiếp cận này, có thể giải quyết được vấn đề khi mà nội dung cung cấp hầu
hết là những trang web tĩnh ( HTML,..). Mặc dù server hiện tại có thể mạnh nhưng cũng không
thể nào đáp ứng được lượng lớn yêu cầu web động (dynamic content) trên internet. Hơn nữa,
giải pháp single server này lại mang nhiều khuyết điểm:
9 Giá thành cao ( do đầu tư hardware mạnh)
9 Không có khả năng mở rộng hệ thống ( scalability)
9 Không có tính chịu lỗi cao ( fault tolerance)
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 2 / 98
2.2 Cluster Server Solution
Khái niệm “cluster” thật sự là một định nghĩa không được chuẩn xác lắm và đôi khi nó
làm cho người ta hiểu theo nhiều nghĩa khác nhau. Trước kia, khi học nhập môn hệ điều hành
khái niệm “cluster” là nhóm các disk sectors, một đơn vị trong đĩa cứng. Còn hầu hết những
người dùng Windows chắc cũng quen thuộc với thông báo lỗi “lost clusters- something that can
be rectified by running the defrag utility”. Một số người dùng Unix cao cấp có lẽ sẽ gắn liền
khái niệm “cluster” với cluster computing, một giải pháp máy tính bó xử lý song song nhằm
giải quyết một bài toán lớn (nổi bật là đề án Beowulf- super computer xử lý hàng tỉ chỉ thị
giây). Nhưng bây giờ, khi nghiên cứu cluster server solution, chúng ta sẽ hiểu “cluster” theo
một nghĩa khác.
“Cluster Server” là một nhóm các server hoạt động cùng nhau để chia tải công việc,
cung cấp độ tin cậy và khả năng xử lý cao cho hệ thống. Đối với client, cluster server hoạt động
giống như một server đơn lẻ nhưng thực chất nó là một nhóm nhiều servers.
Trong đề tài này, chúng ta bàn vào một vài giải pháp clustering ở phía server hay còn
gọi là “business side of clustering”. Giải pháp này đặc biệt thích hợp cho việc xây dựng hệ
thống virtual server- high availability. Với giải pháp cluster server, font-end server được coi
như là load balancer nó cho phép hệ thống servers của ta đáp ứng được một số lượng rất lớn
các yêu cầu đồng thời hơn single server. Hơn nữa, với cách nâng cấp “piece by piece”, khi
server hỏng ta remove chúng khỏi hệ thống để bảo trì, sau đó ta add thêm server vào hệ thống
mà không đòi hỏi thời gian downtime hoặc ảnh hưởng đến yêu cầu dịch vụ của client. Một ưu
điểm của hệ thống cluster là giá thành thấp bởi vì hệ thống cluster server bao gồm một nhóm
các servers hoạt động cùng nhau nên một server sẽ không phải xử lý tất cả yêu cầu; do đó đầu
tư các server này có thể là những máy tính rẽ, giá thành kinh tế thấp.
Hình 2-1 Tổng quan về cluster server
Các mô hình nghiên cứu trong đề tài là: LVS ( Linux Virtual Server), Cisco
LocalDirector, mô hình server Apache front ends to Java applications servers (như: mod_jk và
Tomcat). Tất cả các mô hình đều gồm : một font-end server sẽ điều phối cho nhiều back-end
servers.
Các đánh giá ưu khuyết điểm cho từng mô hình nghiên cứu , song song đó có cải tiến (
hoặc đề nghị cải tiến) cho từng mô hình như : duy trì session trên các server (session
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 3 / 98
replication) , cân bằng tải hệ thống dựa trên nội dung cung cấp ( load balancing based on
contents)..
3. Các giải pháp chia tải Server
Trên mô hình client/server, một phía là client phía còn lại là server và có thể tồn tại
proxy ở giữa như proxy server cho các dịch vụ web. Dựa vào đặc điểm này, chúng ta thấy có
nhiều cách để điều phối yêu cầu đến cluster server ở nhiều cấp độ khác nhau. Thông thường
các server cluster sẽ chạy cùng dịch vụ và cùng một nội dung cung cấp. Nội dung này có thể
được “nhân bản” trên đĩa local các servers, hệ thống share file chung hoặc có thể là một hệ
thống file phân tán chung. Các giải pháp đề nghị cho việc phân tán các yêu cầu phục vụ có thể
kể ra như sau:
9 Hướng xây dựng phía Client
Berkeley’s Smart Client 1 đề nghị cung cấp một applet chạy phía client, khi đó applet tạo các
yêu cầu đến cluster và lấy thông tin trạng thái của tất cả servers, sau đó lựa chọn server phục
vụ cho yêu cầu của mình dựa vào thông tin trạng thái đó và forward yêu cầu đó đến server.
Applet sẽ thực hiện gửi yêu cầu cho server khác nếu server đang phục vụ nó “down”. Một
hướng khác 2 , tác giả phát triển một công nghệ lựa chọn server phục vụ dựa vào băng thông,
khi đó client sẽ thăm dò băng thông giữa client và server cộng với khả năng ước lượng sự tắc
nghẽn trên mỗi đường đi mà ra quyết định lựa chọn đường đi đến server phục vụ tối ưu nhất.
Với hướng tiếp cận này thì không “trông suốt” với client (client-transparent), nó đòi hỏi phía
client phải bổ sung code cho ứng dụng, vì vậy nó không thể triển khai cho tất cả các dịch vụ
TCP/IP. Hơn nữa, nó sẽ làm tăng network traffic do phải sử dụng thêm nhiều query hoặc các
thao tác thăm dò.
9 Hướng xây dựng phía server – Round Robin DNS
Sự mở rộng web server đầu tiên sử dụng Round Robin DNS ( RFC 1794) . DNS server sẽ ánh
xạ một tên thành nhiều địa chỉ IP khác nhau một cách round–robin và mỗi lượt truy cập khác
nhau của client sẽ được chuyển đến các server khác nhau trong cluster, phân tán yêu cầu cho
các server. Tuy nhiên, do cơ chế caching IP của client và hệ thống phân cấp DNS server nên
phương pháp này không năng động trong việc load balancing cho cluster server và nó có nhiều
khuyết điểm (xem chi tiết mục 3.1).
9 Hướng tiếp cận phía server, xây dựng kỹ thuật load balancing mức application
EDDIE 3 , Reverse-proxy 4 , SWEB 5 sử dụng các thuật toán load balancing ở mức application
để xây dựng hệ thống web cluster. Bằng cách forward các HTTP requests đến các webservers
sau đó lấy kết quả trả về và cuối cùng trả về cho clients. Tuy nhiên, cách này đòi hỏi phải
thiết lập 2 kết nối TCP cho mỗi yêu cầu, 1 giữa client và load balancer, 1 là giữa load balancer
và servers , có độ trễ cao. Khả năng xảy ra overhead trên load balancer do phải phân phối các
request và nhận kết quả trả về.
Trong hướng tiếp cận này chúng ta sẽ nghiên cứu một mô hình : sử dụng một Server
Apache + module mod_jk như một load balancer và phân phối yêu cầu đến các Server chạy
1 “Using Smart Clients to Build Scalable Services”
2 “Dynamic Server selection using Bandwidth probing in WAN”
3 “A robust and scalable internet server”
4 “practical approaches for distributing http traffic ”
5
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 4 / 98
ứng dụng java (Tomcat Server) (Trình bày chi tiết mục 3.3.1) . Đây được coi là một giải pháp
điển hình cho hướng tiếp cận trên.
9 Hướng tiếp cận phía server, xây dựng kỹ thuật IP load balancing
Berkeley’s MagicRouter 6 và Cisco’s Local Director 7 sử dụng NAT (Network Address
Translation) để xây dựng load balancing ở mức IP cho server cluster. Tuy nhiên, Magic Router
hiện nay không còn hiệu dụng nữa, còn Cisco’s Local Director thì giá quá đắt ( trình bày ở
mục 3.2 ) .
IBM’s TCP router 8 sử dụng cải tiến NAT để xây dựng scalable web server trên hệ
thống Parallel SP-2. TCP router thay đổi địa chỉ đích của các request packets và forward đến
server được chọn. Server sau khi xử lý sẽ cập nhật lại source address trong reply packets cho
phù hợp với địa chỉ router và reply trực tiếp về cho clients. Ưu điểm của cách này là router
không cần phải rewrite lại các reply packets. Khuyết điểm là ta cần phải compile lại kernel
code ở phía các server.
NetDispatcher 9, là một TCP router, forward trực tiếp các packets đến các servers đã
được cấu hình cùng IP với router trên interface non-arp. Giống như là LVS/DR trong kiến trúc
Linux Virtual Server ( trình bày ở mục 3.3.2), nhưng NetDispatcher là một sản phẩm thương
mại rất đắt tiền.
Trong hướng tiếp cận kỹ thuật IP load balancing sẽ trình bày giải pháp với kiến trúc
Linux Virtual Server ( mục 3.3.2 ).
3.1 DNS Load balancing (DNS Round Robin)
3.1.1 Giới thiệu
Mỗi client và server trên internet đều có 32 bits duy nhất gọi là địa chỉ IP (ipv4). Để
client truyền thông được với server thì nó phải biết được địa chỉ IP của server bằng cách gửi
yêu cầu đến DNS (Domain Name System). DNS server chịu trách nhiệm ánh xạ tên máy tính
sang địa chỉ IP . Khi ta nhập một URL vào address box trên browser (ví dụ : www.mysite.com),
browser sẽ gửi yêu cầu đến DNS để được địa chỉ IP của site này như 172.29.0.1 chẳng hạn,
thao tác này gọi là DNS lookup. Sau khi browser nhận được IP nó sẽ gửi yêu cầu trực tiếp
server (xem hình 3-1) .
6 “an application of fast packet interposing”
7
8 keyword :” A scalable and highly available server”
9 “NetDispatcher : A tcp connection router”
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 5 / 98
Hình 3-1 DNS lookup một yêu cầu
Thông thường thì mỗi website ( domain name) sẽ tồn tại một địa chỉ IP duy nhất trên
DNS. Với phương pháp DNS Round Robin thì DNS Server duy trì nhiều hơn một địa chỉ IP cho
một website name , và khi đó mỗi lượt yêu cầu về địa chỉ IP của www.mysite.com sẽ được
DNS trã về luân phiên các địa chỉ IP này. Điều này cho phép ta load balancing trên hệ thống
cluster gồm nhiều server. Cách hoạt động được mô tả đơn giản như hình 3-2
3-2a) 3-2b) 3-2c)
Hình 3-2 DNS load balancing
Ta có 2 webserver là webserver1 và webserver2 , khi client1 yêu cầu IP của
www.mysite.com sẽ được DNS trả về IP của webserver1 và yêu cầu client sẽ được gửi đến
webserver1 (hình 3-2a), client3 thực hiện yêu cầu và được chỉ đến webserver2 (hình 3-2b).
Tiếp theo client2 thực hiện tương tự và được đáp ứng bởi bởi webserver1. Cách dùng thuật
toán DNS Round Robin như trên thì tất cả các yêu cầu gửi đến sẽ được đáp ứng luân phiên bởi
các server cluster . Vì vậy các các nodes trên mô hình cluster đều phục vụ mạng .
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 6 / 98
Đây là một giải pháp đơn giản và việc cấu hình cho nó cũng đơn giản.
3.1.2 Cấu hình
Sau đây là một cách cấu hình DNS Round Robin trên BIND (Berkeley Internet Name
Daemon) – được phát triển và duy trì bởi Internet Software Consortium (ISC), đây là một
Domain Name Server rất phổ biến trên flatform unix.
Trong cấu hình này ta tạo alias cho www.mysite.com sẽ được ánh xạ đến
wwwX.mysite.com (X : là số thứ tự các realserver 1, 2,..) bằng cách sử dụng nhiều CNAME (
Canonical Name) record. Ví dụ ta có 3 webserver : www1, www2, www3 (hình 3-3)
IN CNAME www1.mysite.com
IN CNAME www2.mysite.com
www.mysite.com.
IN CNAME www3.mysite.com
Hình 3-3 Cấu hình DNS Load balancing
Ta tiến hành edit 3 files sau:
File named.boot – BIND daemon boot configuration
;type domain source-file
primary mysite.dom db.mysite
primary rr.mysite.dom db.mysite.rr
File db.mysite - BIND DNS zonefile for the mysite.com domain
@ IN SOA world.mysite.com. root.world.mysite.com. (
1998021502 ; SERIAL
604800 ; REFRESH: Secondaries refresh after 1 week
3600 ; RETRY: Secondaries retry after 1 hour
604800 ; EXPIRE: Maximum TTL of Data is 1 week
86400 ; MINTTL: Minimum TTL of Data is 1 day
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 7 / 98
)
IN NS world.mysite.com.
;;
;; the resource record for www.mysite.com which
;; maps to the Round-Robin domain
;;
www IN CNAME www.rr.mysite.com.
Lựa chọn giá trị TTL (Time To Live) trong phương pháp này là một vấn đề khó khăn.
Việc caching các địa chỉ IP được điều khiển bởi giá trị này và nó được bổ sung bởi DNS server
( TTL được đặt trong SOA (start of authority) record trong BIND zonefile). Bởi lẽ, nếu ta đặt
TTL quá cao, ta sẽ giảm được DNS traffic nhưng DNS server caching thông tin quá lâu và như
vậy việc phân tán HTTP traffic đến các webservers sẽ không hiệu quả. Nếu ta set TTL quá
thấp sẽ làm tăng DNS traffic và các query đến DNS sẽ liên tục (do thông tin DNS hết hạn
nhanh vì vậy nó phải phân giải địa chỉ liên tục => có thể dẫn đến “thắt cổ chai” DNS server)
nhưng nó sẽ load balance hiệu quả hơn. Việc quyết định giá trị TTL tuỳ thuộc vào chúng ta
muốn load balancing hệ thống như thế nào. Trong cách cài đặt dưới đây với giá trị TTL bằng 1
giờ thì hệ thống hoạt động tương đối hiệu quả.
File db.mysite.rr -- BIND DNS zonefile for the rr.mysite.com domain
;; db.mysite.rr -- BIND DNS zonefile for the rr.mysite.com domain
;;
;;
;; the start of authority (SOA) resource record which
;; forces a minimal time-to-live (TTL) for this zonefile
;;
@ IN SOA world.mysite.com. root.world.mysite.com. (
1998021501 ; SERIAL
3600 ; REFRESH: Secondaries refresh after 1 hour
600 ; RETRY: Secondaries retry after 10 minutes
3600 ; EXPIRE: Maximum TTL of Data is 1 hour
1800 ; MINTTL: Minimum TTL of Data is 30 minutes
)
IN NS world.mysite.com.
;;
;; the multiple canonical name (CNAME) resource record
;; which implies BIND's Round-Robin (RR) feature
;;
www IN CNAME www1.rr.mysite.com.
IN CNAME www2.rr.mysite.com.
IN CNAME www3.rr.mysite.com.
;;
;; the address (A) resource records for the
;; final NAME -> IP mapping
;;
www1 IN A 172.29.0.1
www2 IN A 172.29.0.2
www3 IN A 172.29.0.3
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 8 / 98
3.1.3 Đánh giá ưu khuyết điểm
¾ Ưu điểm
- Chi phí thấp và dễ cài đặt : Tất cả các DNS Server hiện nay điều hỗ trợ phương pháp
này, do đó người quản trị hệ thống chỉ làm một ít thay đổi trên DNS server. Phương pháp này
không đòi phải thay đổi hay thêm code vào các Web Application vì các ứng dụng này sẽ
không nhận ra việc sử dụng phương pháp DNS load balancing.
- Đơn giản : Phương pháp này không cần một chuyên gia mạng để cài đặt hay bảo trì.
Tuy nhiên phương pháp DNS Round Robin có một số khuyết điểm.
¾ Khuyết điểm
Đây là phương pháp software-based và nó không thực sự hỗ trợ high – availability và
session affinity.
* Không hổ trợ hight – availability: Một mô hình cluster gồm có n nodes . Nếu 1 node “down”
thì n yêu cầu đến sẽ chắc chắn nhận được IP của node down vì DNS Server không nhận ra
điều này và do đó người dùng sẽ nhận ra hệ thống bị lỗi (Hình 3-4)
3-4a) 3-4b) 3-4c)
Hình 3-4 Server bị lỗi trong DNS Round Robin
Trong trường hợp trên, WebServer1 bị lỗi và DNS không nhận biết điều này do đó yêu
cầu của client2 sẽ bị lỗi (hình 3-4a). Trong khi đó yêu cầu client3 vẫn được đáp ứng tốt bởi
Webserver3(hình 3-4b). Và vẫn luân phiên khi client2 thực hiện yêu cầu tiếp sẽ được chuyển
đến Webserver1 bị lỗi (hình 3-4c).
Trên thực tế để làm tăng hiệu quả cho network traffic và request time, người ta có cơ
chế cache danh sách các IP đã mapped trước đó cả trên máy local và trên DNS Server. Do đó
khi có yêu cầu mapping IP address nó sẽ tìm trên cache máy local trước nếu không có thì gửi
yêu cầu lên DNS server và đương nhiên DNS server cũng lấy từ cache ra nếu cache đó chưa
hết hạn. Nếu trong trường hợp thời gian cache danh sách các IP address chưa hết hạn nhưng
node có IP đó đã “down” thì client vẫn được route đến node lỗi này. Trong trường hợp đó thì
client không thể access vào site đó mặc dù trên hệ thống server cluster vẫn còn nhiều
WebServer đang chạy tốt.
Vấn đề khó khăn phát sinh là khi remove một node ra khỏi hệ thống cluster (để bao trì
hay nâng cấp) thì sự việc vẫn diễn ra như trên khi client cố gắng access vào một node đã
removed. Khi thêm mới node thì node này chỉ phát huy hiệu quả sau khi đã cập nhật vào DNS.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 9 / 98
*Không hỗ trợ session affinity:
Session affinity là khả năng duy trì các yêu cầu thuộc cùng một kết nối sẽ do một
server đáp ứng. Điều này đặc biệt quan trọng trong các ứng dụng web động mà khi đó session
của mỗi phiên làm việc sẽ được lưu trữ trên server. DNS load balancing với tính luân phiên
của nó thì các yêu cầu lần lượt được chuyển đến các servers trong danh sách server cluster đáp
ứng. Khi đó sẽ xảy ra lỗi do session được lưu trữ trên server này mà yêu cầu tiếp theo lại do
server khác đáp ứng. Một ví dụ, là khi người dùng login vào một hệ thống e-commerce, sau
khi đăng nhập thành công, session login thành công được lưu trên server1 và khi họ thao tác
chọn hàng vào giỏ hàng lại được server2 đáp ứng, do server2 không biết được thông tin đăng
nhập của user nên nó báo lỗi “access denied” và bắt người dùng phải đăng nhâp lại.
3.2 Hardware-based Load balancing
Có nhiều lựa chọn cho giải pháp load balancing sử dụng phần cứng. Các hãng nổi tiếng
như Cisco, Alteon, Foundry network cung cấp nhiều Switchs mà có kèm sẵn chức năng load
balancing trong đó. Với vài thao tác cấu hình, ta có thể gắn nhiều máy tính chạy webserver
vào switchs, và lưu lượng mạng sẽ được cân bằng giữa các server.
Các thiết bị Switchs (có chức năng load balancing) này họat động ở tầng 3 hoặc 4 (
switch layer 3 hay switch layer 4 ). Đối với Switch Layer 3 nó dựa vào địa chỉ IP của các yêu
cầu gửi đến và điều phối yêu cầu cho webserver trên những thông tin này. Còn Switch layer4
(TCP layer) thì dựa vào port number (ví dụ như 80 cho HTTP).
Các thiết bị load balancing đặc biệt này hoạt động tốt mà không phụ thuộc vào số
lượng máy tính gắn vào nó ít hay nhiều. Giải pháp load balancing sử dụng phần cứng thông
minh hơn cách sử dụng thuật toán round robin , không cần sử dụng các “mẹo” nào trên DNS.
Các Switchs nhận tất cả các yêu cầu và phân tán các yêu cầu cho các available machines, tức
là khi server nào còn họat động thì nó mới chuyển yêu cầu đến và khi server bị down thì sẽ
không nhận được yêu cầu nào cho đến khi server đó họat động trở lại.
Giải pháp dựa vào phần cứng cũng có một số khuyết điểm. Nó không nhận biết được
năng lực xử lý của các máy tính, ví dụ như nó không chuyển nhiều yêu cầu hơn cho máy tính
có năng lực xử lý mạnh hơn trên server farm. Giá thành của giải pháp phần cứng đắt hơn nhiều
so với giải pháp phần mềm.
Ngày nay, người ta đang có xu hướng kết hợp các ưu điểm của giải pháp phần mềm
trên các thiết bị phần cứng đặc biệt nhằm đưa ra một giải pháp tối ưu.
Sau đây là giải pháp load balancing sử dụng Cisco Local Director của Cisco.
3.2.1 Giới thiệu
Đây là giải pháp sử dụng thiết bị mạng (phần cứng) để thực hiện công việc load
balancing trong mô hình clustering. Giải pháp với thiết bị Cisco LocalDirector.
Cisco LocalDirector là một thiết bị mạng dùng để thực hiện chức năng loadbalancing
TCP/IP cho nhiều servers. Nó đảm nhiệm chức năng phân tán các requests từ người dùng cho
hệ thống gồm nhiều servers (low-cost servers) –gọi là server farm.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 10 /
98
Với LocalDirector ta có thể xây dựng một hệ thống server farm với đầy đủ các tính
năng cao cấp như highly redundant và fault tolerant .
LocalDirector cho phép chuyển hướng các luồng kết nối tới nhiều servers tuỳ theo loại
dịch vụ. Ví dụ tất cả các FTP requests được chuyển đến hệ thống cluster gồm nhiều servers chỉ
phục vụ FTP request và HTTP requests được chuyển đến cluster chỉ phục vụ HTTP request.
Các thuật toán load balancing dựa trên weight (một trọng số mô tả performance của server) và
số lượng kết nối hiện tại của server để nhằm đảm bảo cho servers trong cluster không bị quá
tải. Nó xác định trạng thái sẵn sàng đáp ứng hay không của server (real time).
LocalDirector hỗ trợ các ứng dụng secure e-commerce và network có topology phức
tạp. Nó có thể duy trì được trạng thái kết nối của các browsers với các servers phân biệt trong
transaction cho dù client browsers có nằm sau một proxy.
Hỗ trợ QoS, trong suốt với người dùng khi online/offline, add/remove server. Có thể
cấu hình redundancy bằng cách thêm một LocalDirector khác chạy standby – giải quyết được
failover ở mức load balancer khi một director down.
LocalDirector có thể phân phối requests với hơn 200Mbps throughput. Đây là giải pháp
phù hợp cho các sites internet có mật độ tải cao. Việc cấu hình và quản trị với giải pháp này
tương đối đơn giản, không phải thay đổi lại địa chỉ mạng, giải quyết được vấn đề thiếu IP thực.
3.2.2 Mô hình hoạt động
Hình 3-5 sơ đồ phân tải luồng TCP/IP sử dụng LocalDirector(không có failover ở mức
load balancer)
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 11 /
98
Hình 3-6 sơ đồ phân tải luồng TCP/IP sử dụng LocalDirector(có failover ở mức load
balancer)
3.2.3 Cisco LocalDirector 4000 series
Tiêu biểu cho dòng sản phẩn này là Cisco LocalDirector416 và 430 .
*LocalDirector 430 : Phù hợp cho các sites internet có mật độ tải cao nó đáp ứng đến
200 Mbps cho throughput của hệ thống, tốt cho các hệ thống websites có tốc độ phát triển và
mở rộng nhanh, giải quyết đến 100 triệu lượt truy cập một ngày.
*LocalDirector 416 : Có giá thành tương đối, là giải pháp high-availability cho tất cả
các ứng dụng TCP/IP gồm:
Intranets
Database access
TN3270 sessions
*Sản phẩm cuối cùng trong dòng này là Cisco LocalDirector 417
Tuỳ theo nhu cầu và ứng dụng cung cấp mà chọn giải pháp với thiết bị thích hợp.
3.2.4 Đặc điểm của thiết bị
Hình 3-7 Front view LocalDirector 430 / 416
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 12 /
98
Hình 3-8 Front view LocalDirector 417
Hình 3-9 Rear view (với kết nối cáp failover giữa primary và backup load balancer)
LocalDirector 430 / 416
* Chi tiết
LocalDirector cung cấp các tính năng chi tiết sau:
- Hot standby và stateful failover, loại trừ các khả năng xảy ra lỗi và cho phép cấu hình
failover ở mức load balancer.
- Hỗ trợ transparent cho hầu hết các ứng dụng thông dụng như Web, FTP, telnet,
Gopher và SMTP mà không cần dùng đến phần mềm hay các cấu hình đặc biệt khác.
- Cung cấp khả năng throughput hệ thống lên 80Mbps đến 200Mbps (công nghệ
FastEthernet) đáp ứng được các giải pháp mạng đòi hỏi performance cao.
- Hỗ trợ 16 Fast EtherChannel 10/100 interfaces với LocalDirector 430, thích hợp cho
các hệ thống mạng phức tạp.
- Các thuật toán phân tán sessions hỗ trợ đến 1 triệu session TCP đồng thời (
LocalDirector 430) đáp ứng cho số lượng users tăng nhanh.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 13 /
98
- Cho phép đến 64.000 virtual và real servers, cho phép cấu hình nhiều domain và cấu
hình mạng khác nhau.
- Tương thích với bất kỳ hệ điều hình nào chạy trên servers.
- NAT, giải quyết được vấn đề khan hiếm IP đi internet trực tiếp cho servers.
- Tích hợp khả năng security, chống truy cập bất hợp pháp từ bên ngoài.
- Cấu hình đơn giản với tập lệnh chỉ gồm 10 commands và không cần thay đổi cấu hình
mạng hiện tại hoặc cấu hình lại IP cho mạng.
- Có hỗ trợ giao diện GUI với hầu hết các lệnh cấu hình.
3.2.5 Cấu hình thiết bị
Description LocalDirector 416 LocalDirector 430
Interfaces 3 10/100 BaseT interfaces
card
4 10/100 BaseT ports
(upgradeable to 16 or
maximum 4 FDDI ports)
Ports DB-9 EIA/TIA -323
consolse interface port
DB-9 EIA/TIA -323
consolse interface port
DRAM 32MB 384MB
Flash Memory 2MB 4MB
Bảng 3-1 Cấu hình Local Director 416/430
Description LocalDirector 417
CPU 600 MHz Pentium III
Ethernet Controller Intel 82559
Memory 512 MB SDRAM
16 MB Flash Memory
Ports 1 consolse
2 RJ45 (eth0-eth1 Intergrated 10/100 BaseT
port )
4 port-10/100 BaseT interfaces card (eth2-
eth5)
1 failover port (DB-15)
Bảng 3-2 Cấu hình Local Director 417
3.2.6 Bảng giá tham khảo
Cisco LocalDirector
LD-417 LocalDirector 417 $10,000
LD-FO= Local Director Fail Over Cable $200
Bảng 3-3 Tham khảo tại
systems/prices/index_full.asp
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 14 /
98
Cisco LocalDirector
LDIR-416 LocalDirector 416 $9 708,53
LDIR-430 LocalDirector 430 $24 293,75
LD-QUADFE= Four Port 10/100 Ethernet Card $777,40
LD-FDDI= FDDI Card for LocalDirector $2 915,25
LD-FO= Local Director Fail Over Cable $194,35
Bảng 3-4 Tham khảo tại
3.3 Software-based Load balancing
3.3.1 Application level load balancing với Apache/mod_jk/Tomcat
A. Giới thiệu
Hình 3-10 Kiến trúc Apache/Tomcat load balancing
Trong kiến trúc này, một Apache server như là một font-end HTTP server kết hợp với
module mod_jk để nó hoạt động như một load balancing, thực hiện phân tải các yêu cầu đến
các Servlet/JSP Server (Tomcat), các Server Tomcat sử dụng một hệ thống database chung.
Mỗi tomcat server chạy JVM (Java Virtual Machine) khác nhau. Ta có thể sử dụng mô hình
này trong n-tier clustering ( trình bày ở mục 3.4.1). Khi đó sau các Servlet/JSP server (
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 15 /
98
presentation tier) ta kết hợp thêm các Object Container ( như JonAS Server, JBoss Server) và
đến database chung.
Hình 3-11 n-tier clustering với Apache load balancer
Đây là một cách triển khai điển hình về load balancing ở mức application, tên thường
gọi là mô hình kết hợp giữa Apache với các Java Application Server, là một mô hình cluster
server.
Với kiến trúc này cung cấp cho hệ thống cluster:
• Load balancing : Các requests được phân phối cho nhiều Servers đáp ứng. Cung
cấp được tính năng “scalability”, cho phép nhiều hơn các kết nối đồng thời.
• High Availability (HA) : Các requests đảm bảo sẽ được chuyển đến những servers
có khả năng đáp ứng tốt (available server), tránh lỗi xảy ra do chuyển request đến
server bị “down”.
• Failover mức Servlet / JSP level : Nếu một Server JSP /Servlet bị “down”, thì một
JSP/ Servlet Server sẽ đáp ứng các yêu cầu ngay tức thì mà vẫn đảm bảo
transparently với người dùng.
Nếu ta sử dụng n-tier clustering, thì failover ở mức Object tier sẽ tích hợp sẵn trong các Object
server ( như JBoss chẳng hạn).
B. Cài đặt
Cấu hình: 1 Server Apache+mod_jk load balance cho 2 Server Tomcat (Hình 3-10)
- Apache HTTP Server, Tomcat, mod_jk là những sản phẩm mã nguồn mở, chạy tốt cả trên
Windows là Unix Linux. Trong phần trình bày sau đây sử dụng Apache version 1.3.3, Tomcat
4.1x, mod_jk.dll (cho Apache1.3.x chạy trên windows). Nếu cấu hình trên nền linux thì ta sử
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 16 /
98
dụng thư viện mod_jk.so ( chép vào thư mục/libexec/). (Tất cả các software và
package trên có kèm theo CD báo cáo).
Trên mỗi node ta cài đặt các Server tương ứng.
* Load balancer (ta cài đặt Apache HTTP server. Cài đặt đơn giản qua giao diện GUI và
Wizard trên windows)
- copy mod_jk.dll vào thư mục windows/system32 hay bất cứ thư mục nào trên máy
- Edit file cấu hình http.conf trong /conf/http.conf (thêm vào cuối file cấu hình
sau:
LoadModule jk_module /system32/mod_jk.dll
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkMount /*.jsp loadbalancer
JkMount /servlet loadbalancer
JkMount /servlet/* loadbalancer
- Tạo file tên là workers.properties và đặt nó vào /conf/. File này khai báo
thông tin về các server apache đang chạy sau nó, port giao tiếp. Để cho dễ nhớ ta đặt 2 Server
Tomcat là Tomcat1 và Tomcat2. Nội dung workers.properties như sau:
ps=/
#danh sách các worker
worker.list=tomcat1, tomcat2, loadbalancer
# ------------------------
# tomcat1
# ------------------------
worker.tomcat1.port=8009 //port listen mặt định cho AJP13 connector trên Tomcat
worker.tomcat1.host=
worker.tomcat1.type=ajp13
#kích thước cache cho một connect
#worker.tomcat1.cachesize
#chỉ ra cho worker load balancing khả năng đáp ứng của nó
# ----> lbfactorphải > 0
# ----> lbfactornhỏ có nghĩa worker này sẽlàm ít hơn worker kia
# chênh lệch giữa 2 worker khi cấu hình 2 server này khác nhau.
worker.tomcat1.lbfactor=100
# ------------------------
#tomcat2
# ------------------------
worker.tomcat2.port=8009
worker.tomcat2.host=
worker.tomcat2.type=ajp13
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 17 /
98
#worker.tomcat2.cachesize
#
worker.tomcat2.lbfactor=100
# ------------------------
# Load Balancer worker
# ------------------------
#
# loadbalancer (type lb) worker sd thuật toán weighted round-robin
# ----> nếu worker die, load balancer sẽ check trạng thái nó
# trong một lúc. Và sau đó request sẽ được chuyển cho other
# worker.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2
#cho phép session affinity ( session sticky)
worker.loadbalancer.sticky_session=1
#
# END workers.properties
- Đến đây phần cấu hình load balancer đã xong
* Cấu hình cho Tomcat server
- Edit file cấu hình /conf/server.xml
Tomcat cung cấp cho phép nhiều kiểu kết nối đến nó, trong đó có http và https. Các
kiểu kết nối này được định nghĩa là “Connector” trong file server.xml
Non-SSL HTTP/1.1 @ 8080
(*) SSL HTTP/1.1 @ 8443
AJP 1.3 @ 8009 // AJP13 Connector để kết nối với Server Apache
(*) Proxy HTTP/1.1 @ 8081
(*) non-SSL HTTP/1.0 @ 8082
WARP @ 8008
( ghi chú “* ” mặc định là disable; con số sau @ là port mặc định cho connector; Tomcat sử
dụng port TCP/8005 cho control connections).
HTTP và HTTPS là 2 protocol thông dụng cho các clients thông thường ( browsers) kết nối đến
Tomcat. AJP13 (Apache JServ Protocol) và WARP là những protocol dùng để liên lạc giữa các
server với nhau ( Giữa ApacheHTTP server và Tomcat Server) cho phép ta cấu hình hệ thống
server phân tán.
Để cấu hình cho Tomcat sử dụng AJP “nói chuyện” với Apache, phải chắc chắn rằng AJP13
connector phải được enable ( mặc định).
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="20000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 18 /
98
Để ngăn ngừa user truy cập trực tiếp vào server Tomcat, ta comment dòng “connector”
non-SSL HTTP/1.1 lắng nghe trên port 8080 ( ta chỉ cho người dùng truy cập vào server
Tomcat qua Apache)
Ví dụ:
<!--
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
-->
Disalbe Warp connector ( vì ta sử dụng AJP connector tốt hơn)
Comment tag (khoảng dòng 314)
Ví dụ:
<!--
<Connector className="org.apache.catalina.connector.warp.WarpConnector"
port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true" appBase="webapps"
acceptCount="10" debug="0"/>
-->
Nếu chạy tomcat instance trên cùng một máy thì phải thay đổi port của server và port
của AJP để tránh đụng độ.
- Cấu hình tương tự cho server Tomcat2.
* Tạo trang testlb.jsp để test load balancing
Nội dung đơn giản chỉ in ra màu sắc để dễ dàng cho việc testing.
Serving by Tomcat 1
- Đặt file testlb.jsp này vào thư mục /webapps/root/testlb.jsp trên server
Tomcat1
- Tương tự tạo file testlb.jsp cho server Tomcat2
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 19 /
98
Serving by Tomcat 1
* Kiểm tra cấu hình cài đặt
-Starting Tomcat1, Tomcat2 server /bin/startup.bat (on windows)
Phải startup 2 tomcat server trước, sau đó startup Apache Web server
/apache.exe
Mở Browser : (địa chỉ của Apache Webserver) . Ta sẽ thấy trang index.html
Test tomcat : nếu thấy tomcat index page là thành công
Testing loadbalancing :
Nếu thấy trang màu đỏ (Yêu cầu được server Tomcat1 phục vụ)
Màu xanh (Tomcat2)
Luân phiên mở 2 browser ta sẽ thấy load balancing Round Robin
* Session Affinity (có được hiểu là sticky session)
Session Affinity: Khi một yêu cầu của client được load balancer chuyển cho một Tomcat
server phục vụ, thì các queries tiếp theo (cùng browser session client đó) sẽ vẫn do Tomcat
server đó phục vụ mà không đổi server theo thuật toán RR ( đây là thuật toán cải tiến của RR).
Điều này đặc biệt quan trọng do session ban đầu được lưu trữ trên server (giả sử Tomcat1) nếu
các queries tiếp theo chuyển qua cho server khác (Tomcat2) thì session ban đầu sẽ bị mất.
* Cấu hình Session Affinity
Theo file cấu hình mặt định khoảng line thứ 100 thay thế:
Bằng:
Tương tự cho Tomcat2, đặt jvmRoute=”tomcat2”
Giá trị jvmRoute là duy nhất để xác định Tomcat instance.
Bây giờ nếu nhấn refresh button (F5) trên browser nhiều lần mà vẫn nhận được đáp
ứng cùng một tomcat server (một màu) thì đã đạt được session affinity.
3.3.2 Kỹ thuật IP load balancing với LVS (Linux Virtual Server)
A.Giới thiệu
LVS (Linux Virtual Server) là một hệ thống load balancing sử dụng Linux Kernel
Modules. Điều khác là load balancing trong trường hợp này được thực hiện ở mức hệ điều
hành và liên quan đến các tác vụ ở tầng network (IP) và transport (TCP), nó khác với mô hình
load balancing Tomcat/Apache/mod_jk thực hiện load balancing ở tầng ứng dụng (application).
LVS có ba mode hoạt động là NAT, TUN và DR, hỗ trợ để xây dựng cluster trên nhiều
network topologies khác nhau giữa load balancer, back-end servers và clients .
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 20 /
98
LVS cung cấp một nền tảng cơ bản để xây dựng một hệ thống internet server với đầy
đủ tính năng cao cấp:
* Scalability, khi nhu cầu cho các services mà ta cung cấp tăng lên , hệ thống của ta sẽ
dễ dàng mở rộng để đáp ứng yêu cầu người dùng ( đơn giản chỉ là việc thêm server phục vụ
vào hệ thống đang hoạt động).
* 24x7 availability, các dịch vụ ta cung cấp phải đáp ứng sẵn sàng 24/7 bất chấp có xảy
ra lỗi ở do phần cứng hoặc phần mềm.
* Manageability, mặc dù ta có thể xây dựng hệ thống cluster trong một khoảng cách
vật lý lớn, nhưng công việc quản trị cũng đơn giản và dễ dàng nhờ vào các công cụ cung cấp
để quản lý cluster.
* Cost-effectiveness, đây là tính năng cạnh tranh về mặc giá cả của hệ thống LVS so
với các hệ thống cung cấp cluster khác ( ví dụ như giải pháp cluster bằng thiết bị phần cứng
LocalDirector của Cisco).
Hệ thống cluster server với kiến trúc Linux Virtual Server được sử dụng ở các sites phổ
biến trên internet có mật độ tải cao như Linux portal www.linux.com, sourceforge.net, UK
National JANET Web Cache Services…( chi tiết ở phần phụ lục)
B. Kiến trúc hệ thống
B.1 Tổng quát
Đây là một kiến trúc dùng để xây dựng hệ thống network cung cấp các dịch vụ với các
tính năng highly scalable và highly available. Kiến trúc 3 tier LVS được mô tả như hình:
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 21 /
98
Hình 3-12 Tổng quan về LVS
Load balancer:
Các connections từ clients bên ngoài đến hệ thống servers thông qua load balancer, nó
đảm nhiệm công việc chuyển hướng các yêu cầu này đến các real servers trong cluster farm
(xử lý yêu cầu này ). Yêu cầu từ clients gửi đến hệ thống cluster thông qua một IP duy nhất là
IP của load balancer.
Server pool (server farm):
Gồm nhiều server cung cấp các dịch vụ thực sự như web, ftp, mail, …
Backend storage:
Cung cấp hệ thống lưu trữ share-file cho các servers để đồng bộ hoá dữ liệu. Đảm bảo
cung cấp nội dung giống nhau trên cùng một dịch vụ.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 22 /
98
Load balancer sử dụng các kỹthuật IP load balancing để điều phối các incoming
connections, nó chọn một server trong server pool để xử lý yêu cầu, duy trì trạng thái kết nối
hiện tại và forward packets đến server đó. Tất cả các công việc này được thực hiện bên trong
kernel vì vậy khả năng overhead trên load balancer là rất thấp. Do đó Load balancer có khả
năng tiếp nhận số lượng kết nối đến hệ thống nhiều hơn server thông thường.
Các servers trong kiến trúc này có thể được thêm vào để tăng khả năng scalability và
high availability. Scalability là khả năng thêm vào hoặc bớt ra (adding or removing) một node
trong hệ thống cluster mà trong suốt (transparent) với user. Khi một server được thêm vào thì
performance của hệ thống tăng.
Một ưu điểm của clustering là tính dư thừa về phần cứng và phần mềm. High
availability được cung cấp bằng cách kiểm tra các node (daemon hoặc service) bị lỗi, Load
balancer cấu hình lại hệ thống để các yêu cầu tiếp theo sẽ không được chuyển đến node bị lỗi
này. Chúng ta thường sử dụng monitor daemon chạy trên Load balancer để kiểm tra trạng thái
của một node, nếu 1 server không hồi đáp ICMP Ping hoặc không hồi đáp service trong 1
khoảng thời gian nào đó thì Load balancer sẽ remove hoặc disable server bị lỗi này ra khỏi
danh sách các server phục vụ, vì vậy Load balancer sẽ không điều phối một connection đến
server bị lỗi( user sẽ không thấy hệ thống bị lỗi ).
Vấn đề được đặt ra là Load balancer là điểm mấu chốt (single point) có thể gây ra lỗi
cho toàn bộ hệ thống, một khi Load balancer bị lỗi thì hệ thống sẽ ngưng hoạt động do các yêu
cầu không được điều phối đến các servers. Để ngăn ngừa lỗi xảy ra trên Load balancer chúng
ta cần set up một backup Load balancer.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 23 /
98
Hình 3 -13 Failover mức load balancer trong LVS
Hai heartbeat daemon chạy trên primary và backup chúng truyền thông điệp heartbeat
(health message) qua một kênh truyền heartbeat như đường serial line (sử dụng cable riêng).
Khi mà heartbeat daemon trên backup không nghe được health message từ primary trong 1
khoảng thời gian xác định, nó sẽ sử dụng kỹ thuật ARP snoofing để sử dụng virtual IP address
(của primary) và đảm nhiệm chức năng Load balancing thay cho primary. Khi mà primary
Load balancer được phục hồi, một là nó sẽ trở thành backup loadbalancer luôn; hai là nó sẽ
nhận lại IP ban đầu (bằng các thông điệp heartbeat từ primary thay thế) và nó trở lại vai trò
primary load balancer như ban đầu, và load balancer thay thế sẽ trở về vị trí backup như ban
đầu. Đây là quá trình failover(take failover ) ở mức Load balancer.Tuy nhiên, khi quá trình
này xảy ra thì bảng lưu trữ trạng thái các nối kết hiện tại sẽ bị mất và client phải thiết lập nối
kết lại.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 24 /
98
B.3 Các thành phần
Các thành phần chính của Linux virtual server được thể hiện trong hình sau:
Hình 3-14 Các thành phần trong LVS
“ VS Schedule & Control Module” đây là module chính của LVS, nó được “hook” ở hai
nơi như hình, đặt ngay hướng các packets đi ngang qua bên trong kernel giữ lấy và rewritten
lại packets để thực hiện IP load balancing. Nó được lookup trong “VS Rules Table” kiểm tra
xem packet của một connection mới có thuộc dịch vụ cung cấp load balancing không, và kiểm
tra “Connection Hash Table” để nhận thấy gói tin này có thuộc kết nối được thực hiện trước đó
không. IPVSADM là giao diện người dùng cho phép quản trị virtual servers, nó sử dụng hàm
setsockopt() để bổ sung các virtual server rules vào trong kernel (như loại dịch vụ đáp
ứng,port, IP address,…), và đọc các rules này thông qua /proc files.
“Connection Hash Table” được thiết kế để có thể lưu trữ thông tin hàng triệu kết nối
đồng thời, và mỗi entry lưu trữ chiếm 128 bytes bộ nhớ của loadbalancer. Ví dụ, một Load
balancer 256Mbytes RAM free có thể lưu trữ khoảng hai triệu kết nối cùng lúc. Kích thước của
hash table có thể được hiệu chỉnh bởi user cho phù hợp với ứng dụng của họ cung cấp, và
client được sử dụng như một hash key vì vậy xung đột hash rất
thấp. Một đồng hồ nhảy chậm sẽ kiểm tra mỗi giây để thu gom (giải phóng) các kết nối hết
hạn.
LVS thực hiện lưu giữ các gói ICMP cho virtual services. Các gói imcoming ICMP
packet sẽ được forward đến đúng realserver đáp ứng, và các outgoing ICMP packets nhận
được từ realserver cũng sẽ được hiệu chỉnh cho phù hợp và gửi chúng ra ngoài đúng cho client.
Điều này đặc biệt quan trọng để phát hiện lỗi và điều khiển cảnh báo giữa client và các
servers như thông tin về MTU.
LVS xây dựng 3 kỹ thuật IP load balancing, chúng có thể được sử dụng cho nhiều loại
hệ thống cluster, hoặc có thể kết hợp chúng với nhau trong một cluster, ví dụ : các packets
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 25 /
98
được forward cho một vài server qua phương pháp LVS/NAT, một vài servers khác thì qua
LVS/DR, và với các servers ở khoảng cách vật lý xa (kết nối WAN) sử dụng LVS/TUN.
C. Kỹ thuật IP load balancing
Kỹ thuật IP Load balancing mang lại tính sẵn sàng cao (high scalability), chúng ta phải
patch lại Kernel Linux để nó hỗ trợ tính năng này. Gồm có 3 loại: LVS/NAT, LVS/TUN
(tunnelling), LVS/DR (direct routing). Một máy chạy Linux Virtual Server hoạt động như
Load balancer cho các nối kết từ client. Thông thường, các real server cung cấp các dịch vụ
với cùng một nội dung. Các nội dung này được nhân bản (replicate) trên đĩa local của server
hoặc hệ thống share-file.
C.1 Linux Virtual Server – NAT
Do sự giới hạn không gian địa chỉ của IPv4 và một vài lý do về bảo mật, nhiều network
sử dụng địa chỉ IP riêng cho các máy trong mạng mình và nó không nối kết được Internet.
NAT (Network Address Translation) được phát triển khi các host trong mạng cục bộ muốn truy
cập đến hoặc được truy cập từ Internet. Cơ chế NAT dựa vào đặc điểm header của các packet
có thể điều chỉnh được và các client nối kết tới hệ thống server bằng một IP duy nhất-IP của
NAT, các real server sử dụng các IP khác nhau kết nối với NAT server, trên NAT server sử
dụng 2 network interfaces với một IP mạng riêng (cùng mạng với các server ) và một IP
Internet (nối ra mạng ngoài). Đặc điểm này được sử dụng để xây dựng một virtual server.
Kiến trúc LVS-NAT được mô tả như hình sau:
Hình 3-15 LVS-NAT
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 26 /
98
Trong kiến trúc này Load balancer và các real server nối kết với nhau bằng switch hoặc
hub. Hoạt động của LVS-NAT như sau: khi 1 user truy cập vào virtual service được cung cấp
bởi cluster server, một request packet được gửi đến virtual IP address (IP chấp nhận yêu cầu
cho virtual service ) đến Load balancer. Load balancer xác định địa chỉ đích và port number
của packet nếu nó hợp lệ với virtual service được cung cấp bởi các virtual server dựa vào bảng
rule table. Một real server sẽ được chọn để phục vụ bằng các thuật toán Load balancing, thông
tin về kết nối này được lưu vào bảng hash table để ghi nhận kết nối. Tiếp theo, địa chỉ đích và
port number của packet được re-written cho phù hợp với server được chọn và packet được
forward đến server. Khi mà các packet tiếp theo của kết nối đã được thiết lập trước đó ( kết
nối này được tìm thấy trong bảng hash table) và các packet này sẽ được re-written và forward
đến cùng server đã phục vụ nó trước đó. Khi Load balancer nhận được response packet, nó re-
write lại cho phù hợp với virtual service và trả về cho client.
Khi một kết nối bị đứt hoặc timeout, record ghi nhận thông tin kết nối sẽ được xoá bỏ khỏi
bảng hash table.
Một ví dụ về LVS/NAT mô tả như hình sau:
Hình 3-16 Một ví dụ LVS-NAT
Ta có 3 server như hình trên, một máy có 2 network interfaces làm Loadbalancer
(external IP Address :202.103.106.5 và internal IP Address: 172.16.0.1), 2 máy còn lại làm real
server với IP lần lượt là : 172.16.0.2 và 172.16.0.3
Bảng sau mô tả việc cấu hình phân tải cho các real server với 2 dịch vụ web và ftp:
Protocol Virtual IP Address Port Real IP address Port Weight
172.16.0.2 80 1TCP 202.103.106.5 80
172.16.03 8000 2
TCP 202.103.106.5 23 172.160.0.3 21 1
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 27 /
98
Tất cả các kết nối đến IP address : 202.103.106.5 (địa chỉ Load balancer) ở port 80 sẽ
được load balancer chuyển đến realserver IP address 172.16.0.2 port 80 và 172.16.0.3 port
8000. Như vậy đối với dịch vụ web sẽ được chia tải cho 2 real server này . Tương tự với dịch
vụ ftp , các kết nối đến địa chỉ 202.103.106.5 ở port 21 sẽ được chuyển đến server IP address
172.160.0.3 port 21, trong trường hợp này thì ta chỉ có một máy phục vụ ftp service. (Ghi chú:
giá trị Weight trong bảng trên chỉ là một con số “integer” cho thấy khả năng xử lý của 2 máy
có sự khác nhau, giá trị mặc định bằng 1).
Hai real server trên có thể chạy dưới bất kỳ hệ điều hành nào miễn là có hỗ trợ TCP/IP
và cấu hình default route của realservers phải là Virtual IP Address (172.16.0.1 trong trường
hợp này).
Với trường hợp LVS/NAT thì việc rewrite lại các packets được thực hiện như sau:
Các packets yêu cầu dịch vụ Web có địa chỉ nguồn và địa chỉ đích:
SOURCE 202.100.1.2:3456 DEST 202.103.106.5:80
Load balancer sẽ chọn một real server phục vụ chẳn hạn 172.16.0.3:8000. Packet được
rewriten và forward đến server :
SOURCE 202.100.1.2:3456 DEST 172.16.0.3:8000
Packet hồi đáp từ real server sau khi xử lý:
SOURCE 172.16.0.3:8000 DEST 202.100.1.2:3456
Và cuối cùng packet được rewriten lại tại load balancer để gửi trả kết quả về cho client:
SOURCE 202.103.106.5:80 DEST 202.100.1.2:3456
C.3 Linux Virtual Server – TUN (Tunnelling)
IP Tunneling(IP encapsulation) là công nghệ đóng gói IP datagram vào một IP
datagram, định hướng datagram từ một IP address đến một IP address khác. Công nghệ này
cho phép xây dựng một virtual server mà Load balancer chuyển các request packet theo tunnel
đến các server khác nhau, server xử lý các yêu cầu và trả kết quả trực tiếp về cho client.Vì
vậy, dịch vụ cung cấp được xem như virtual service trên một IP address. Kiến trúc LVS-IP
Tunneling được mô tả như hình sau:
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 28 /
98
Hình 3-17 LVS-TUN
Với kiến trúc này real server có thể có real IP address của bất cứ mạng nào, trên cả
mạng có khoảng cách xa(WAN) nhưng phải hỗ trợ IP Tunneling protocol và tất cả phải có
tunnel device được cấu hình với VIP (virtual IP address-IP của Load balancer ) giống như cấu
hình “ifconfig tunl0 VIP” trên Linux.
Hoạt động của LVS/TUN giống như LVS/NAT:
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 29 /
98
Hình 3-18 Hoạt động của LVS-TUN
Trong LVS/TUN Load balancer đóng gói (encapsulation) packet với một IP datagram
và forward nó đến server được chọn phục vụ. Khi server nhận packet đóng gói này, nó mở gói
(de-capsulation) và tìm trong packet địa chỉ VIP, sau đó xử lý yêu cầu và trả về kết quả trực
tiếp cho user.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 30 /
98
C.3 Linux Virtual Server – DR (Direct Routing)
Hình 3-19 LVS-DR
Trong kiến trúc này Load balancer và real servers phải thuộc cùng một segment của
LAN như Hub/Switch. Virtual IP address được dùng chung cho Load balancer và Real servers.
Tất cả các Real servers phải hỗ trợ loopback alias interface (lo trên Linux) cấu hình với VIP,
và Load balancer phải có một network interface khác cấu hình với địa chỉ IP có thể nhận được
các packets từ bên ngoài.
Hoạt động của LVS/DR giống như LVS/NAT và LVS/TUN:
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 31 /
98
Hình 3- 20 Hoạt động của LVS-DR
Load balancer chuyển hướng các request packets đến server được chọn để phục vụ
bằng cách đơn giản thay đổi MAC address của frame dữ liệu sau đó chuyển chúng vào LAN.
Khi server trong LAN nhận được packet, nó tìm trong packet địa chỉ phù hợp với IP trên
loopback interface của nó, xử lý và trả kết quả trực tiếp về cho user. Điều chú ý là realserver
phải được cấu hình cùng virtual IP address và không thực hiện hồi đáp arp.
Bảng so sánh giữa LVS/NAT, LVS/TUN, LVS/DR
LVS/NAT LVS/TUN LVS/DR
Server Any Tunneling Non-arp dev
Server network private LAN/WAN LAN
Server number Low (10~20) High (100) High(100)
Server gateway Load balancer Own router Own router
D. Các thuật toán load balancing trong LVS
Sau đây là một vài thuật toán điều phối hay còn gọi là thuật toán load balancing được
cài đặt trong kiến trúc Linux Virtual Server.
D.1 Round Robin
Thuật toán Round-Robin điều phối các yêu cầu theo kiểu “luân phiên” lần lượt đến các
server phục vụ trong danh sách các realserver. Ví dụ như ta có 3 real server trong danh sách
các server ( Server A, B và C) . Request thứ 1 sẽ được chuyển đến server A, request thứ 2
được chuyển đến server B, request thứ 3 được chuyển đến server C và request thứ 4 sẽ được
chuyển trở lại cho server A. Với thuật toán này thì nó xem tất cả các realserver có khả năng
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 32 /
98
xử lý như nhau mà không xem xét đến số lượng kết nối hiện tại đến server hoặc thời gian mà
server đáp ứng yêu cầu của từng server.
Linux Virtual Server Round-Robin có một số cải tiến so với truyền thống DNS Round-
Robin, nó không lưu cache mà luôn kiểm tra một cách năng động khả năng tồn tại ( chưa bị
lỗi) của server. Điều này tạo hiệu quả hơn cho thuật toán.
D.2 Weighted Round Robin
Thuật toán này điều phối các real server cũng luân phiên giống Round-Robin nhưng nó
còn kết hợp vào khả năng xử lý của từng máy server (Round-Robin xem như khả năng xử lý
tất cả server bằng nhau). Mỗi server được đánh giá bằng một số integer (giá trị Weight) chỉ ra
khả năng xử lý của nó. Mặc định giá trị Weight bằng 1. Ví dụ, các realserver A, B, C có
weight lần lượt là 4, 3, 2 và thứ tự điều phối các yêu cầu AABABCABC, nó luân phiên trong
chu kỳ (mod sum(Wi) ) . Thứ tự chọn real server phục vụ dựa vào số Weight của server.
Ta có một danh sách các real servers S={S0, S1, …, Sn}, một giá trị i (index) chỉ server
vừa mới được chọn trong danh sách S, cw chỉ giá trị weight hiện tại của server. Cả i và cw ban
đầu được gán bằng zero. Nếu tất cả W(Si)=0 ,thì lúc này coi như là hệ thống không có server
đáp ứng nào, tất cả các kết nối đến hệ thống sẽ bị từ chối.
Thuật giải được mô tả như sau:
while (1) {
if (i==0) {
cw=cw-1;
if (cw<=0) {
set cw the maximun weight of s;
if (cw==0) return null;
}
} else i= (i+1) mod n;
if (w(si)>=cw) return si;
}
Trong WRR , các realserver có giá trị weight cao sẽ nhận được kết nối mới đầu tiên và
nhận nhiều kết nối hơn server có weight thấp, servers có giá trị weight bằng nhau sẽ nhận sự
phân tải các kết nối mới bằng nhau.
Thuật toán điều phối Weighted Round-Robin hoạt động tốt hơn Round-Robin nếu khả
năng xử lý của các servers có khác nhau, tuy nhiên hệ thống cũng có khả năng xảy ra mất cân
bằng nếu yêu cầu xử lý đòi hỏi quá cao, chẳng hạn như với một yêu cầu màsố lượng đáp ứng
nhiều thì có thể nó sẽ dẫn đến chỉ một server đáp ứng.
Thật ra Round-Robin là một trường hợp đặc biệt của Weighted Round-Robin mà khi đó
các giá trị Weight đều bằng 1.
D.3 Least Connection
Thuật toán Least-Connection (LC) lựa chọn server phục vụ dựa vào số lượng kết nối
hiện tại đến server là ít nhất, đây là một thuật toán “dynamic”, bởi vì nó đếm số lượng kết nối
đến server một cách thường xuyên. Giống như RR, LC xem các performance của các server là
như nhau, điều này thích hợp cho các yêu cầu cần đáp ứng ít. Tuy nhiên nó có thể không cân
bằng được tải của hệ thống khi có nhiều loại server khác nhau và khả năng xử lý của chúng
cũng khác nhau.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 33 /
98
D.4 Weighted Least Connection
Cũng giống như giữa RR và WRR, Weighted Least-Connection (WLC) khác với LC ở
chỗ nó gán một giá trị biểu hiện performance cho mỗi server. Server có performance cao hơn
sẽ nhận được lượng phần trăm yêu cầu nhiều hơn (trong mỗi thời điểm). Người quản trị có thể
gán cho mỗi server một giá trị weight, số kết nối được chuyển cho server dựa vào tỉ lệ phần
trăm các kết nối hiện tại và chỉ số weight này.
WLC hoạt động như sau: Ta có n realserver mỗi server i có một giá trị Wi(i=1,2,..,n) và
các kết nối hiện hành đến hệ thống là Ci(i=1,2,..,n), ta gọi tổng số các kết nối này là S=sum
Ci(i=1,2,..,n). Giả sử lúc này server j sẽ được chọn với điều kiện sau được thỏa:
(Cj/S)/Wj = min {(Ci/S)/Wi} (với i=1,2,..,n)
Bởi vì S là một hằng số nên ta có thể biểu diễn biểu thức trên như sau:
Cj/Wj = min {Ci/Wi} (với i=1,2,..,n)
Có thể so sánh tương đương ( do không có số thực trong kernel linux)
Cj/Wj > Ci/Wi thay bằng Cj*Wi > Ci*Wj ( vì số Weight luôn > 0)
D.5 Connection Affinity
Chúng ta có thể xem mỗi connection đến hệ thống cluster server sẽ độc lập với các
connections khác, vì vậy các connections có thể được phục vụ bởi các servers khác nhau. Tuy
nhiên, khi 2 connections được thực hiện bởi cùng một client thì 2 kết nối này phải được phục
vụ bởi cùng một server vì nhiều nguyên nhân .
FTP là một ví dụ cho thấy sự cần thiết connection affinity. Để truy cập đến dịch vụ ftp,
client phải tạo ra 2 connections đến server, một là control connection (port 21) để trao đổi các
command, một data connection (thường là port 20) để truyền dữ liệu. Đối với active FTP,
client cung cấp thông tin cho server biết port mà nó đang listen, data connection được khởi tạo
bởi server từ server’s port 20 đến client’s port. Linux Virtual Server có thể kiểm tra được các
packets đến từ client và port mà client đang lắng nghe, tạo entry và lưu vào bảng hash table
cho kết nối data này. Nhưng đối với passive FTP, server báo cho client port nó đang listen, sau
đó client sẽ khởi tạo data connection đến port của server. LVS/TUN và LVS/DR chỉ tham gia
vào một nữa kết nối giữa client-server vì real server trả kết quả trực tiếp về cho client mà
không qua load balancer, vì vậy Linux Virtual Server không thể lấy được thông tin về port
trong các packets mà realserver chuyển trực tiếp cho client.
Một cách giải quyết vấn đề này là lưu trữ thông tin kết nối của người dùng. Khi client
truy cập lần đầu, load balancer sẽ tạo ra một template giữa client và server được chọn phục vụ
và lưu trữ thông tin này vào bảng hash table. Thông tin template này được cấu hình thời hạn
trong khoảng thời gian, và nó sẽ không bị hết hạn nếu nó vẫn còn điều khiển kết nối. Nhờ vào
thông tin trên template này mà load balancer sẽ chuyển tất cả các kết nối từ cùng một client
đến cùng một server phục vụ. Cách giải quyết này ổn thoả cho các dịch vụ đòi hỏi connection
affinity (như các ứng dụng multi port) nhưng có thể nó sẽ gây mất cân bằng cho hệ thống trong
một số trường hợp, tuy nhiên đây là giải pháp tốt cho connection affinity.
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 34 /
98
E. Các công cụ dùng để quản trị LVS
Việc quản trị một hệ thống cluster là vấn đề quan tâm hàng đầu khi người ta muốn xây
dựng hệ thống này. Đầu tiên là hệ thống cluster phải dễ cài đặt và quản trị, như việc thêm vào
một server để tăng throughput, hoặc bớt ra một server để bảo trì nó khi nó bị fail. Thứ hai, là
các phần mềm phục vụ công việc quản trị phải có khả năng tự cấu hình (self-configuration),
khả năng tự recovery khi xảy ra lỗi. Sau đây là 3 giải pháp với các gói phần mềm phục vụ cho
cài đặt và quản trị LVS cluster.
E.1 LVS Gui + heartbeat + ldirectord
- lvs-gui ( ) cho phép cấu hình các servers chạy LVS
kernel pachtes, ở thời điểm hiện tại thì lvs-gui chỉ hỗ trợ cấu hình LVS/DR.
- heartbeat ( ) là một công cụ truyền thông giữa các servers định kỳ
trong một khoảng thời gian cho trước để kiểm tra “health” của các server.
- ldirectord” được viết bởi Jacob Rief là một daemon (process) dùng để monitor và quản trị
các realserver trong cluster.
Với gói phần mềm này ta xây dựng failover mức realservers như sau: ldirectord
daemon chạy trên load balancer, nó monitor tất cả các realservers một cách thường xuyên.
Nếu một real server bị lỗi, nó sẽ đưa server này ra khỏi danh sách các server phục vụ, và nó
sẽ add trở lại danh sách khi server được recovery.
Failover ở mức load balancer: heartbeat daemons chạy trên cả primary và backup
loadbalancer, chúng truyền cho nhau thông điệp heartbeat (định kỳ) qua UDP/hoặc đường
serial line (cáp nối đặt biệt qua cổng com giữa 2 máy) được nối giữa 2 load balancer. Khi
heartbeat daemon trên backup loadbalancer không nhận được thông điệp heartbeat từ
daemon/primary trong khoảng thời gian định trước, nó sẽ kích hoạt fake daemon
( để cấu hình cho backup sử dụng Virtual IP address cung cấp
cho load balancer; Và khi nó nhận được thông điệp heartbeat trở lại từ primary, nó sẽ ngưng
kích hoạt fake daemon để trả lại IP address cho primary.
E.2 Piranha
piranha là một sản phẩm clustering từ Red Hat Inc., nó bao gồm kernel patch, các
daemons cluster và công cụ quản trị cluster với giao diện GUI.
nanny daemon quản trị các server nodes và trao đổi thông tin dịch vụ trong cluster.
pulse daemon điều khiển nanny deamon và đảm nhiệm công việc failover giữa 2 load
balancers. pulse daemon phân công cho mỗi nanny phụ trách một realserver phân biệt, và khi
nanny không nhận được hồi đáp từ server node trong khoảng thời gian qui định thì nó sẽ
remove server đó ra khỏi danh sách các server được điều phối. nanny daemon có thể điều
chỉnh giá trị weight của mỗi server node để tránh cho server bị quá tải. Khi nanny thấy server
load cao hơn giá trị bình thường nó sẽ giảm giá trị weight trong bảng điều phối bên trong
kernel để server sẽ nhận ít connection hơn.
E.3 mon + heartbeat
mon ( là gói phần mềm rất thông dụng dùng để
monitor hệ thống, ngày nay nó đã được mở rộng để monitor tính sẵn sàng của các dịch vụ
mạng trong các server nodes. Các mon service modules như fping.monitor, http.monitor,
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 35 /
98
ldap.monitor …được sử dụng để monitor các dịch vụ tương ứng trên realservers. Một alert sẽ
được phát ra để add/remove một entry trong bảng điều phối các servers khi phát hiện ra một
server node up/down. Vì vậy load balancer sẽ che dấu được các server bị lỗi với người dùng và
cho nó tiếp tục cung cấp dịch vụ khi được recovery.
heartbeat daemon được sử dụng để đảm nhiệm failover ở mức load balancers.
* Tất cả các gói phần mềm trên đây điều được sử dụng miễn phí theo GNU.
F. Cài đặt và cấu hình LVS cluster
F.1 Requirement cho client, Director, RealServers
* Clients : Bất cứ máy tính nào chạy bất kỳ hệ điều hành nào hỗ trợ telnel client và http
client (như browsers : netscape, lynx, IE) sử dụng cho công việc testing.
* Director : Máy tính chạy linux kernel 2.2.x (x>=14) hoặc 2.4.x patch với ipvs. Hiện tại
nên sử dụng kernel 2.4.x.Với mục đích testing, director không đòi hỏi phải có cấu hình cao –
các máy 486 với 10 bps ethernet card là đủ.
* Các RealServers : Đây là các máy tính cung cấp dịch vụ chính cho hệ thống (telnet
hay http service). Director forward các packets bằng 3 mode, tuỳ theo mỗi mode mà ta chọn
OS cho realservers:
- LVS-NAT: any machine, any OS , real server phải có tcp/ip stack.
- LVS-DR : OS hỗ trợ loopback aliasing ( không tốt với windows).
- LVS-TUN: real server cần phải chạy OS hỗ trợ tunnel (linux).
Lưu ý:
- Real servers và Client thường khác network ( thực tế khi triển khai thực hiện nếu client
và LVS cùng một network – sẽ không chạy), cho nên chúng ta sẽ sử dụng 2 network ( các
realserver private network vd : 192.168.1.0/24 ) , và client để test các dịch vụ nằm trên một
network khác. RealServers kết nối Director-Router-…Clients .
- Director thường sử dụng 2 NICs để có thể bổ sung thêm các tính năng filter và
security. Tuy nhiên ta cũng có thể đặt 1 NIC trên director với 2 IP address thuộc 2 network
khác nhau ( vd : eth0:1 , eth0:2).
- Ta không thể truy cập các dịch vụ cung cấp bởi LVS trên các máy tính trong hệ thống
LVS, tức là ta cần 1 client không thuộc realservers hoặc director. Nếu truy cập từ director thì
kết nối sẽ bị treo, kết nối từ realserver thì sẽ truy cập dịch vụ trên máy local mà không qua
LVS. Do đó minimum cho hệ thống là 3 machines : client, director, realserver(s).
F.2 Software ( các packages)
Để sử dụng được LVS ta phải patch và dịch lại kernel cho nó hỗ trợ IPVS. Kernel hiện
tại là bản 2.4, và công việc này thực hiện như sau:
Download bản standard kernel tại ftp://ftp.kernel.org/pub/linux/kernel/v2.4/ chọn bản
thích hợp như linux-2.4.17.tar.gz ( hoặc có thể cài đặt gói rpm kernel có kèm trong bộ đĩa CD
cài đặt RedHat Linux – sau khi cài đặt source kernel nằm ở : /usr/src/linux-2.4 )
Download hidden patch tại
Download IPVS patch tại
2.4.20-ipvs-1.0.8.patch.gz (April 11, 2003)
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 36 /
98
Công cụ quản trị và cấu hình LVS đơn giản ipvs admin :
hoặc
đều được.
F.3 Các bước thực hiện
Các bước re-compile lại kernel như sau:
#unpack new kernel
tar zxvf linux-2.4.17.tar.gz
#unpack ipvs patch
gunzip linux-2.4.20-ipvs-1.0.8.patch.gz
#unpack kernel
mv linux /usr/src/linux-2.4.17
cd /usr/src
# tạo symlink
rm –f linux-2.4
ln -s linux-2.4.17 linux-2.4
ln –s linux-2.4.17 linux
# Apply “hidden” patch
cd linux-2.4.17
patch –p1 < hidden-2.4.5-1.diff
output dạng như sau:
patching file include/linux/inetdevice.h
patching file include/linux/sysctl.h
Hunk #1 succeeded at 334 (offset 9 lines).
patching file net/ipv4/arp.c
Hunk #3 succeeded at 754 (offset -1 lines).
patching file net/ipv4/devinet.c
Hunk #1 succeeded at 756 (offset 20 lines).
Hunk #2 succeeded at 1013 (offset -4 lines).
Hunk #3 succeeded at 1079 (offset 20 lines).
patching file Documentation/filesystems/proc.txt
Hunk #1 succeeded at 1583 (offset 5 lines).
patching file Documentation/networking/ip-sysctl.txt
#apply ipvs patch
patch –p1 < linux-2.4.20-ipvs-1.0.8.patch
#Bắt đầu biên dịch
make clean
make mrproper
make menuconfig
make bzImage
make modules
make modules_install
#lưu ý là các bước trên diễn ra rất lâu – phải kiên nhẫn
#sau khi biên dịch, tập tin nhân kết quả lưu trong /usr/src/linux-2.4/arch/i386/boot/bzImage
#tiếp theo copy tập tin nhân kết quả vào thư mục /boot
cp /usr/src/linux/System.map-2.4.17 /boot/System.map-2.4.17
cd /boot
rm System.map
ln –s System.map-2.4.17 System.map
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 37 /
98
#Bây giờ cấu hình lại bootloader để nó nhận ra kernel mới (edit file /etc/lilo.conf nếu chọn bootloader là lilo lúc
cài đặt) , hoặc /boot/grub/grub.conf nếu chọn GRUB bootloader lúc cài đặt
vi /etc/lilo.conf
image=/usr/src/linux-2.4/arch/i386/boot/bzImage
label=linuxipvs
root=/dev/hda1
#reboot lại hệ thống
-------------------------------------------------------------------------------------------------
#Bước tiếp theo là cài đặt ipvsadm
#Nếu download gói rpm ta chỉ thực hiện
rpm –ivh ipvsadm-1.20-5.src.rpm
#Nếu download gói .tar.gz ta thực hiện unpack, make, makeinstall
Mọi việc cài đặt cho hệ thống xem như xong, sau đây là bước cấu hình hệ thống LVS,
nếu sử dụng các công cụ hỗ trợ cấu hình giao diện GUI, hoặc các script cấu hình có sẵn như
( thì có thể
download và cài đặt theo help của nhà cung cấp . Để đơn giản trong việc cấu hình LVS phục
vụ cho testing, sau đây 3 cách cấu hình đơn giản LVS/NAT, LVS/TUN, LVS/DR “by hand” sử
dụng ipvsadm .
F.3.1 LVS/NAT
Cấu hình LVS-NAT với các real server thuộc cùng một LAN, client dùng test thuộc một
network khác và director có 2 card mạng với 2 IP thuộc 2 mạng server và client. Chi tiết như
sơ đồ sau:
________
| |
| client |
|________|
CIP=172.29.0.2 /16(eth0)
|
|
__________ |
| | | (VIP=172.29.0.1/16, eth0)
| director |---|
|__________| | DIP=192.168.0.9/25 (eth1)
|
|
-----------------------------------
| |
| |
RIP1=192.168.0.1/25(eth0) RIP2=192.168.0.2/25(eth0)
____________ ____________
| | | |
|realserver1 | |realserver2 |
|____________| |____________|
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 38 /
98
* Cấu hình với dịch vụ telnet port 23: Để đơn giản cho việc testing cấu hình ta setup
trước tiên làdịch vụ telnet, các dịch vụ khác tương tự ta chỉ cần thay đổi port (ví dụ http, ftp,..)
Các công việc sau đây sẽ được thực hiện trên director (load balancer).
- Ta có thể thực hiện bằng command line trên console director hoặc gom chúng lại
thành một shell script tên tự đặt lvs_nat_telnet.sh và thực thi $sh lvs_nat_telnet.sh để thực hiện
cấu hình
- Shell script lvs_nat_telnet như sau:
#!/bin/sh
#------lvs_nat_telnet-director----------
#set ip_forward ON for vs-nat director (1 on, 0 off).
cat /proc/sys/net/ipv4/ip_forward
echo "1" >/proc/sys/net/ipv4/ip_forward
#director is gw for realservers
#turn OFF icmp redirects (1 on, 0 off)
echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects
cat /proc/sys/net/ipv4/conf/all/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects
cat /proc/sys/net/ipv4/conf/default/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects
cat /proc/sys/net/ipv4/conf/eth0/send_redirects
#cấu hình VIP
/sbin/ifconfig eth0 172.29.0.1 broadcast 172.29.0.255 netmask 255.255.0.0 up
#Cấu hình DIP
/sbin/ifconfig eth1 192.168.0.9 netmask 255.255.255.0 up
#set default gateway
#nếu director đứng sau một router thì đây là địa chỉ router đó
#trong trường hợp này là địa chỉ của client
/sbin/route add default gw 172.29.0.2 netmask 255.255.0.0 metric 1
#clear ipvsadm tables
/sbin/ipvsadm -C
#install LVS services with ipvsadm
#add telnet to VIP with rr sheduling (dùng thuật toán điều phối round robin: rr)
/sbin/ipvsadm -A -t 172.29.0.1:telnet -s rr
#Ghi chú
#(-A): virtual service; (-t): TCP sau đó là host:port ; rr: round-robin (các thuật toán #khác thay thế lc: least-
connection, wlc: weighted least-connection,..)
#first realserver
#forward telnet to realserver 192.168.0.1 using LVS-NAT (-m), with weight w=1
/sbin/ipvsadm -a -t 172.29.0.1:telnet -r 192.168.0.1:telnet -m -w 1
# (-r hostname:port) chỉ realserver và cổng dịch vụ
#check that realserver is reachable from director
ping -c 1 192.168.0.1
#Tương tự cho ealserver2
#forward telnet to realserver 192.168.0.2 using LVS-NAT (-m), with weight=1
/sbin/ipvsadm -a -t 172.29.0.1:telnet -r 192.168.0.2:telnet -m -w 1
#checking if realserver is reachable from director
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 39 /
98
ping -c 1 192.168.0.2
#list ipvsadm table
/sbin/ipvsadm
#------end lvs_nat_telnet -director----------
Thi hành shell trên $sh lvs_nat_telnet.sh sẽ thấy các output tương ứng lên màn hình
console.
Trên các realserver ta cần khai báo default gateway là DIP ngoài ra không cần phải
cấu hình nào khác ( đương nhiên là phải start server cung cấp dịch vụ như Webserver, ftp
server, hay telnet server tương ứng).
*Testing LVS-NAT:
Công cụ kiểm tra cũng là ipvsadm với các option như sau:
$ipvsadm : hiển thị cấu trúc của cấu hình LVS
$ipvsadm –S : hiển thị các rules cấu hình
$ipvsadm –L –stats : hiển thị trạng thái
$ipvsadm –L –rate : hiển thị chi tiết các connection hiện tại, các packets transfer, và tỉ
lệ packets transfer.
Chi tiết có thể manpage ipvsadm $man ipvsadm
Khi thực hiện $ipvsadm output dạng như sau:
IP Virtual Server version 0.9.14 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.29.0.1:telnet rr
-> 192.168.0.1:telnet Masq 1 0 0
-> 192.168.0.2:telnet Masq 1 0 0
Ngồi trên máy client thực hiện telnet 172.29.0.1 và trở lại director thực hiện $ipvsadm , lúc
này có dạng như sau
IP Virtual Server version 0.9.14 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.29.0.1:telnet rr
-> 192.168.0.1:telnet Masq 1 1 0
-> 192.168.0.2:telnet Masq 1 0 0
Bây giờ thì số lượng kết nối ActiveConn đã tăng lên, mở một telnet 172.29.0.1 khác và output
sẽ thấy ActiveConn tăng lên ở server thứ 2
IP Virtual Server version 0.9.14 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.29.0.1:telnet rr
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 40 /
98
-> 192.168.0.1:telnet Masq 1 1 0
-> 192.168.0.2:telnet Masq 1 1 0
Đến đây đã cấu hình LVS-NAT thành công.
Lưu ý quan trọng:
Nếu lỗi treo kết nối , dòng ActiveConn không tăng mà InActConn tăng dạng như sau:
IP Virtual Server version 0.9.14 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.29.0.1:telnet rr
-> 192.168.0.1:telnet Masq 1 0 1
-> 192.168.0.2:telnet Masq 1 0 0
Lỗi set default gateway trên realserver phải là director (DIP) và ngoài ra không được
route đến đích khác. Nếu tồn tại các route entries khác trong bảng route table của realserver
thì phải remove nó đi ví dụ: route del –net 192.168.0.0 netmask 255.255.255.0 dev eth0 trên
linux redhat.
F.3.2 LVS/DR
* Cấu hình LVS/DR trên một mạng đơn (192.168.1.254/24) trên các máy có 1 network
card. Cấu hình ip trên các alias (eth0:110, lo:0), các máy phải không được route với nhau để
tránh trường hợp chúng ping lẫn nhau.
________
| |
| client |
|________|
CIP=SGW=192.168.1.254 (eth0)
|
|
__________ |
| | | (VIP=192.168.1.110, eth0:110)
| director |---|
|__________| | DIP=192.168.1.9 (eth0)
|
|
-----------------------------------
| |
| |
RIP=192.168.1.11(eth0) RIP=192.168.1.12(eth0)
(VIP=192.168.1.110, lo:0) (VIP=192.168.1.110, lo:0)
____________ ____________
| | | |
| realserver | | realserver |
|____________| |____________|
Giống như NAT, ta có script cấu hình dịch vụ telnet (http tương tự) cho Director:
#!/bin/bash
#---------------lvs_dr_telnet-director------------------------
#set ip_forward OFF for vs-dr director (1 on, 0 off)
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 41 /
98
cat /proc/sys/net/ipv4/ip_forward
echo "0" >/proc/sys/net/ipv4/ip_forward
#director is not gw for realservers: leave icmp redirects on
echo 'setting icmp redirects (1 on, 0 off) '
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
cat /proc/sys/net/ipv4/conf/all/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
cat /proc/sys/net/ipv4/conf/default/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
cat /proc/sys/net/ipv4/conf/eth0/send_redirects
#add ethernet device and routing for VIP 192.168.1.110
/sbin/ifconfig eth0:110 192.168.1.110 broadcast 192.168.1.110 netmask 255.255.255.255
/sbin/route add -host 192.168.1.110 dev eth0:110
#listing ifconfig info for VIP 192.168.1.110
/sbin/ifconfig eth0:110
#check VIP 192.168.1.110 is reachable from self (director)
/bin/ping -c 1 192.168.1.110
#listing routing info for VIP 192.168.1.110
/bin/netstat -rn
#setup_ipvsadm_table
#clear ipvsadm table
/sbin/ipvsadm -C
#installing LVS services with ipvsadm
#add telnet to VIP with round robin scheduling
/sbin/ipvsadm -A -t 192.168.1.110:telnet -s rr
#forward telnet to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t 192.168.1.110:telnet -r 192.168.1.11 -g -w 1
#check realserver reachable from director
ping -c 1 192.168.1.12
#forward telnet to realserver using direct routing with weight 1
/sbin/ipvsadm -a -t 192.168.1.110:telnet -r 192.168.1.12 -g -w 1
#check realserver reachable from director
ping -c 1 192.168.1.12
#displaying ipvsadm settings
/sbin/ipvsadm
#not installing a default gw for LVS_TYPE vs-dr
#---------------end lvs_dr_telnet-director------------------------
ShellScript cấu hình cho các realserver
#!/bin/bash
#----------lvs_dr_telnet-realserver------------------
#installing default gw 192.168.1.254 for vs-dr
/sbin/route add default gw 192.168.1.254
#showing routing table
/bin/netstat -rn
#checking if DEFAULT_GW 192.168.1.254 is reachable
ping -c 1 192.168.1.254
#set_realserver_ip_forwarding to OFF (1 on, 0 off).
echo "0" >/proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
Khoa CNTT
Báo cáo Luận văn Tốt nghiệp
Nghiên cứu, Đánh giá & Phát triển các mô hình Cluster Server Trang 42 /
98
#looking for DIP 192.168.1.9
ping -c 1 192.168.1.9
#looking for VIP (will be on director)
ping -c 1 192.168.1.110
#install_realserver_vip
/sbin/ifconfig lo:110 192.168.1.110 broadcast 192.168.1.110 netmask 0xffffffff up
#ifconfig output
/sbin/ifconfig lo:110
#installing route for VIP 192.168.1.110 on device lo:110
/sbin/route add -host 192.168.1.110 dev lo:110
#listing routing info for VIP 192.168.1.110
/bin/netstat -rn
#hiding interface l
Các file đính kèm theo tài liệu này:
- Unlock-cluster_server_4406.pdf