Luận văn Nghiên cứu, đánh giá và 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

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

pdf98 trang | Chia sẻ: maiphuongdc | Lượt xem: 2713 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu, đánh giá và phát triển các mô hình cluster server, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
equirement 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 lo:110, will not arp echo "1" >/proc/sys/net/ipv4/conf/all/hidden cat /proc/sys/net/ipv4/conf/all/hidden echo "1" >/proc/sys/net/ipv4/conf/lo/hidden cat /proc/sys/net/ipv4/conf/lo/hidden #----------end lvs_dr_telnet-realserver------------------ * Testing LVS/DR: sử dụng $ipvsadm với các option cũng giống như lúc test với LVS/NAT. F.3.3 LVS/TUN * Documents hướng dẫn cài đặt và cấu hình hệ thống LVS có thể tham khảo thêm tại : (bản cập nhật đến 2003). Hoặc tham khảo cách cấu hình nhờ các phần mềm hỗ trợ của các nhà cung cấp giới thiệu ở phần Các tools hỗ trợ cài đặt và quản trị LVS như piranha. G. Đánh giá ưu khuyết điểm G.1 Linux Virtual Server – NAT - Ưu điểm: Đối với LVS/NAT các realservers có thể chạy dưới bất kỳ hệ điều hành nào miễn có hỗ trợ giao thức TCP/IP, các realservers chỉ cần sử dụng địa chỉ IP thuộc mạng riêng và chỉ đòi hỏi một địa chỉ IP đi được internet cho load balancer. - Khuyết điểm: Khả năng scalability của LVS/NAT không được tốt lắm, số lượng real servers mà chúng ta có thể mở rộng để tăng khả năng đáp ứng yêu cầu ( scalability) bị giới hạn. Bởi vì cả các request packets và response packets đều phải được rewritten tại load balancer, điều này có thể dẫn đến hiện tượng “thắt cổ chai “ tại load balancer. Do đó số lượng real server trong LVS/NAT bị giới hạn trong khoảng ~20 servers( giá trị này còn tuỳ thuộc khả năng xử lý của server). Tính trung bình một packet TCP khoảng 536 bytes và độ trễ trung bình để load balancer rewritten lại packet này là 60us / trên vi xử lý Pentium (thời gian này có thể được giảm xuống với vi xử lý nhanh hơn), tốc độ throughtout nhanh nhất của load balancer là 8.93 Mbytes/s . Load balancer có thể điều phối 15 servers nếu tốc độ throughout trung bình của real server là 600Kbytes/s và 22 servers nếu tốc độ throughout của real server là 400Kbytes/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 43 / 98 Tuy nhiên, nếu lượng realservers chúng ta nhiều và ta vẫn sử dụng LVS/NAT thì có một hướng giải quyết tình trạng “thắt cổ chai” ở mức load balancer như sau : Kết hợp với phương pháp truyền thống là dựa vào đặc điểm DNS hỗ trợ load balancing (DNS Round- Robin) ta xây dựng thêm load balancer, mỗi load balancer đảm nhiệm phân tải một cluster. Khi đó ta đăng ký nhóm các load balancer này cùng thuộc một domain trên DNS. G.2 Linux Virtual Server – TUN LVS/TUN hỗ trợ hầu hết các dịch vụ thông dụng trên internet (vd : web service, SMTP, telnet ,..). Ta thấy các request packets thường có kích thước nhỏ, trong khi đó số lượng và kích thước của các response packets lại rất lớn ( response packets thường mang kèm theo nhiều data), đây có thể được xem là một ưu điểm của LVS/TUN so với LVS/NAT vì load balancer chỉ thực hiện công việc rewritten đối với các request packets nên nó không xảy ra hiện tượng “thắt cổ chai” ở mức load balancer. Điều này cho phép mở rộng (scalability) số lượng real servers lên đến con số 100 servers . Chính vì vậy mà throughput của hệ thống virtual server có thể lên đến 1Gbps mặc dù load balancer chỉ có 100Mbps full-duplex network adapter => good scalability. Tuy nhiên để thực hiện LVS/TUN đòi hỏi các servers phải hỗ trợ IP Tunneling protocol ( đáp ứng được trên server linux). Ngày nay, khi IP tunneling protocol trở thành một chuẩn của tât cả các hệ điều hành nên giải pháp xây dựng hệ thống virtual server LVS/TUN có thể thực hiện được với các realservers chạy bất cứ hệ điều hành nào. G.3 Linux Virtual Server – DR Giống như LVS/TUN , LVS/DR chỉ xử lý một nữa trong kết nối client-server, nên khả năng mở rộng thêm realservers là rất lớn. So sánh với LVS/TUN, LVS/DR sẽ không xảy ra tunneling overhead, nhưng nó đòi hỏi server OS phải hỗ trợ loopback alias interface và không thực hiện hồi đáp ARP ( thực hiện tốt với realserver chạy linux). Load balancer và realservers phải được kết nối trực tiếp trong cùng một LAN. H. Kết luận Linux Virtual Server cung cấp cho chúng ta 3 kỹ thuật IP load balancing, LVS/NAT, LVS/TUN, LVS/DR. Hiện tại, LVS hỗ trợ 4 thuật toán load balancing phù hợp cho nhiều ứng dụng, dịch vụ khác nhau. Scalability hỗ trợ add/remove server một cách trong suốt với người dùng. High availability với các công cụ kiểm tra các node bị lỗi và tự cấu hình lại hệ thống cho phù hợp. Giải pháp cluster server với LVS không đòi hỏi bất kỳ một cấu hình nào phía client, và nó hỗ trợ hầu hết các dịch vụ TCP & UDP của mạng hiện tại. LVS được thiết kế để chia tải cho hàng triệu các kết nối đồng thời cho hệ thống server. LVS hỗ trợ nhiều opensource, nó dễ sử dụng cài đặt và bảo trì hệ thống. LVS rất phù hợp để xây dựng các sites internet có lưu lượng tải cao và thực tế đã được sử dụng rộng rãi ở nhiều sites nỗi tiếng như sourceforge.net , linux.com, …(tham khảo thêm các site sử dụng kiến trúc cluster LVS ở phụ lục kèm theo). Điều giới hạn của LVS là nó chỉ hỗ trợ các kỹ thuật load balancing ở mức IP, mà không load balancing dựa vào nội dung dịch vụ cung cấp, do đó ta không thể cân bằng tải dựa vào nội dung. Điểm thứ hai là quá trình take failover ở mức load balancing ( thay đổi vai trò giữa primary và backup) thì bảng thông tin về các kết nối hiện tại sẽ bị mất và đòi hỏi người dùng phải gửi lại yêu cầu truy cập 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 44 / 98 Trong tương lai, hy vọng rằng nhóm phát triển LVS sẽ phát triển hơn nữa công nghệ này. Có thể phát triển kỹ thuật IP load balancing thành components và sử dụng được trên nhiều hệ điều hành khác linux như hệ thống Windows chẳng hạn. 3.4 Oracle 9iAS clustering 3.4.1 Kiến trúc n-tier clustering Với các ứng dụng Enterprise Application (EA), để đạt được tính năng scalability và availability người ta thường sử dụng giải pháp loadbalancing trên mô hình clustering. Enterpise application tier là một khái niệm mà khi đó ở phía server người ta chia ra từng “tier” logic khác nhau. Trong một vài trường hợp thì các tier này có thể chạy trên cùng một máy tính (server) . Một cách phân loại các tier như sau: * Web tier Đây là tier cung cấp “các nội dung tĩnh “ như các trang HTML và thường được gọi làvị trí front-end trong các ứng dụng EA. Ví dụ như một hoặc nhiều máy tính chạy Apache, IIS, Netscape Enterpise Server . Load balancer sẽ chuyển các requests đến cho web tier. * Presentation tier Presentation tier cung cấp “các nội dung động” như servlets hay JSP . Ví dụ như máy tính chạy Tomcat, JServ, …Nếu ứng dụng chỉ phục vụ các trang HTML tĩnh thì ta có thể gộp web tier và presentation tier lại. * Object tier Object tier cung cấp các Java Object như EJBs , RMI classes , JDBC pool ,… mô hình J2EE sever cluster chạy các bean EJB là một object tier (ví dụ như Weblogic , WebSphere, JBoss, …) Kết hợp nhóm các tier lại với nhau (theo nghĩa logic) chúng ta có một có một kiến trúc clustering thật sự- kiến trúc n-tier clustering. * N-tier Clustering architecture Bằng cách gom nhóm các tier lại với nhau chúng ta có một kiến trúc cluster cho các ứng dụng EAs. Tuỳ thuộc vào khả năng sử dụng và từng loại ứng dụng mà ta chọn loại kiến trúc (trong kiến trúc n-tier) cho phù hợp yêu cầu. Loại ứng dụng của ta có thể chỉ cung cấp các trang tĩnh HTML, động JSP /servlet, hay ứng dụng transaction e-commerce. A. Single tier-clustering ( basic clustering) Đây là kiến trúc clustering đơn giản nhất, tất cả các tier logic ở trên sẽ được chạy trên cùng một máy tính trong hệ thống cluster (theo hình 3-21) . Load balancer phân tán các requests người dùng đến các server này trong cluster. Kiến trúc này dễ dàng cho công việc quản trị. Performance được nâng cao nhờ vào tất cả các tiers được gom vào một máy, và vì vậy nên giảm được traffic cho việc liên lạc giữa các tier. Dễ phát triển thêm node (server ) theo chiều ngang. 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 45 / 98 Hình 3-21 Basic clustering Load balancer phân tán requests người dùng đến các servers thường dựa vào thuật toán round-robin distribution. Nó không đảm bảo được tài nguyên trên hệ thống được cân bằng tải tuyệt đối .Với kiến trúc này, trong một số trường hợp performance của server sẽ bị giảm xuống, server bị faile trong khi đang xử lý một request thì sẽ dẫn đến lỗi cho người dùng mà không chuyển được yêu cầu đó cho server khác. Trong kiến trúc này khả năng load balancing và failover bị giảm xuống (hạn chế) nên nó được ít dùng cho các ứng dụng Enterpise applications. B. Two tier-clustering Ba tier cơ bản ở trên được group lại thành hai logical tier. Có hai cách gộp nhóm chúng lại . Web và presentation tiers chạy trên một máy tính cluster riêng lẻ gọi là WebServer cluster. Object tiers cha

Các file đính kèm theo tài liệu này:

  • pdfcluster_server_4406.pdf