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
98 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2709 | Lượt tải: 5
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:
- cluster_server_4406.pdf