1. Mở đầu
2. Kĩ thuật cluster là gì ?
3. HAC và HPC
3.1. HAC (High Availability Computing )
3.1.1. HA Cluster
3.2. HPC (High Performance Computing)
4. Nâng cao tính khả dụng cho hệ thống
5. Giới thiệu về Linux Virtual Server (LVS)
5.1. Load blance bằng LVS / NAT
5.1.1. Định nghĩa
5.1.2. Mô hình thiêt lập
5.1.3. Build/patch/config kernel
5.1.4. Cài đặt ipvsadmin
5.1.5. Cấu hình load blance (LV1)
5.1.5.1. Khai báo network
5.1.5.2. Khai báo realserver
5.1.5.3. Điều chỉnh kernel
5.2. Load blance bằng LVS / DR
5.2.1. Định nghĩa
5.2.2. Mô hình thiết lập
5.2.3. Build/patch/config kernel
5.2.4. Điều chỉnh network
5.2.4.3. Khai báo / điều chỉnh RealServer
5.3. Đánh giá và giải pháp tối ưu cho hệ thống
5.3.1. Đánh giá / Giải pháp (1)
5.3.2. Đánh giá / Giải pháp (2)
5.3.3. Đánh giá / Giải pháp (3)
6. Sử dụng keepalived để giám sát hệ thống (Real Server)
7. VRRP Load blance
8. MySQL và load blance
9. Samba và load blance
10. FPT và load blance
11. Mail và load blance
12. Tài liệu tham khảo
1. Mở đầu
Để nâng cao tính bảo mật và tính khả dụng của máy chủ, thật sự không phải là 1 chuyên đơn giản , không chỉ riêng về mặt kĩ thuật , trang bị hàng loạt thiết bị có tính năng load blancing cũng không rẻ . bênh cạnh đó, những tài liệu viết về load blancing bằng tiếng việt cũng không thể nói là phong phú .
đó là những lý do tôi quyết định viết bài này để chia sẽ với bạn đọc về kĩ thuật cấu trúc cluster.
2. Kĩ thuật cluster là gì ?
Hệ thống được xây dựng cần thiết nhất là không bị down, bảo mật tốt ,và chịu được 1 số lượng truy cập lớn vv…. để đáp ứng được nhu các cầu trến , từ đó kĩ thuật cluster đã ra đời , khái niệm của cluster được hình thành rất đa dạng . định nghĩa của cluster được chia ra thành 2 phần lớn, đó là HPC và HAC . HAC được viết tắt của High- Availability Computing và HPC được viết tắt của High Performance Computing . sau đây tôi xin lấy khái niệm HAC và HPC để giới thiệu .
3.1 HAC và HPC
Những phương thức tiêu biểu được chia nhỏ ra từ 2 khái niệm HAC và HPC .
3.1.1 HA Cluster
- Failover cluster
Share type
Data mirror type
Remote cluster
- Load-balancing cluster
Load balance Cluster
Parallel database cluster
3.2. HPC Cluster
HPC – High performance computing
Bài viết này sẽ trình bày cách cấu hình HA cluster và kèm theo những giải thích kĩ thuật của HA Cluster . bạn đọc muốn tìm hiểu về HPC Cluster xin tham khảo tài liệu từ các trang sau đây .
Beowulf :
http://www.beowulf.org/ Score :
http://www.pccluster.org/index.html.en Open mosix :
http://openmosix.sourceforge.net/ 4. Cách nâng cao tính khả dụng cho hệ thống
Bài viết sẽ được hình thành dưới hình thức “Cách cấu hình cụ thể” và “Các khái niệm của những kĩ thuật xung quanh cần thiết khi cấu hình” , do đó về phần giải thích cụ thể về khái niệm của những kĩ thuật sẽ không được phong phú . bạn đọc có thể tìm hiểu thêm từ các nguồn sau đây .
http://www.linux-ha.org/ http://www.linuxvirtualserver.org/ 5. Linux Virtual Server
(được trích và chỉnh sửa từ bài “Linux virtual server” của anh Nguyễn Ngọc Khoa )
Là một phần mềm load balancing chạy trên *nix, cho phép xây dựng 1 server rất mạnh bao gồm tập hợp nhiều server thực có cấu hình giống nhau. Cấu trúc của Linux Virtual Server (thường gọi tắt là LVS) thông suốt đối với người dùng nên phía người dùng chỉ nhận biết thấy LVS là 1 server mạnh chứ không biết được cấu trúc thực bên trong. LVS cho phép load balancing theo 3 cách NAT (gọi là VS/NAT), Direct (gọi là VS/DR) và Tunneling (VS/TUN) .
VS/NAT
Phương pháp VS/DR và VS/TUN có chung cấu trúc như hình vẽ dưới, chỉ khác nhau ở cách kết nối giữa máy load balancing và real server. Hai cách này có nhược điểm là tốn địa chỉ IP, máy load balancing cần 2 IP, mỗi real server cũng cần 1 địa chỉ IP. Tuy nhiên ưu điểm là khả năng rất mạnh (có thể kết nối hàng trăm real server), máy load balancing không yêu cầu cao vì chỉ làm duy nhất nhiệm vụ load balancing. Các máy real server sẽ trả lời trực tiếp.
VS/DR – VS/TUN
LVS cho phép load balancing với rất nhiều dịch vụ , số lượng server cho mỗi dịch vụ cũng có thể khác nhau. Ngoài phần mềm chính LVS còn có một số phần mềm hỗ trợ như ipvsadmin để thiết lập, khai báo thêm, bớt các real server, keepalived để tự động kiểm tra các real server, xoá bỏ các khai báo của 1 real server ra khỏi LVS khi real server .
5.1. Load blance bằng LVS / NAT
Nâng cao tính khả dụng và giảm down time của hệ thống đến mức tối ưu, để thực hiện được những điều đó , LVS/NAT cũng là 1 giải pháp . sau đây là phần giới thiệu về cách thức triển khai bằng LVS/NAT. như mô hình dưới bạn có thể thấy khi từ client (bên hình cho là từ internet) request đến máy chủ , các cú request này đều qua LV1 và sau đó sẽ đến RealServer1.
Sau khi phía realserver1 nhận và xử lý xong sẽ reply cho LV1 , và LV1 sẽ thay thế realserver1 trả lời cho client .
5.1.1. Định nghĩa
LV1 : 172.16.0.1 ( Local IP : 10.0.0.1 )
RealServer1 : 10.0.0.101
RealServer2 : 10.0.0.102
Những IP thuộc 172.16.0.1/24 là các IP dùng để cung cấp dịch vụ .
Những IP thuộc 10.0.0.0/24 là các IP cục bộ của các realserver.
5.1.2. Mô hình
5.1.3. Thiết bị
Để hình thành được mô hình trên, bạn cần chuẩn bị 3 server có cấu hình tương đối gần nhau, tuy nhiên, dùng vmware hoặc các chương trình virtual pc vẫn có thể thực hiện được .
5.1.3. Build/patch/config kernel
Các phiên bản 2.6.x đã có hổ trợ LVS , do đó máy chủ đã được cài đặt các phiên bản 2.6.x sẽ không cần thiết thực thi bước này .
dùng phiên bản kernel 2.4.x phải lưu ý 1 điểm là khi biên dịch kernel phải lựa chọn phiên bản của ipvsadm và kernel thích họp với nhau vì chương trình quản lý ipvsadm rất có thể xãy ra xung đột với phiên bản kernel không thích họp .
Tham khảo thêm cách build/patch kernel 2.4.x tại link sau :
http://www.austintek.com/LVS/LVS-HOWTO/mini-HOWTO/LVS-mini-HOWTO.html#2.4.x_kernels 5.1.4. Cài đặt ipvsadmin
Tải chương trình ipvsadm
http://www.linux-vs.org/software/ipvs.html Các lệnh cài đặt chương trình ipvsadm
$ wget
http://www.linux-vs.org/software/kernel-2.6/ipvsadm-1.24.tar.gz $ tar zxf ipvsadm-1.24.tar.gz
$ cd ipvsadm-1.24
$ make
# make install
5.1.5. Cấu hình load blance (LV1)
Cho phép IP fowarding
# echo "1" > /proc/sys/net/ipv4/ip_forward
Tạo virtual service cho LV server (qua phương thức round robin )
# ipvsadm -A -t 172.16.0.1:http -s rr
Đối với dịch dịch vụ virtual trên , dùng các lệnh sau để cấu hình cho realserver
# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.101:http -m
# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.102:http -m
Có thể kiểm tra kết quả bằng lệnh
ipvsadm -L
Chỉnh default gateway tại máy LV1
route add -net default gw 10.0.0.1
đến đây bạn đã cấu hình xong , để kiểm chứng những kết quả trên , bạn có thể request trực tiếp từ phía client đến địa chỉ
http://172.16.0.1/ để xem kết quả các máy chủ có hoạt động đúng vai trò của chúng hay không .
-----------------------------------------------------------
5.2. Load blance bằng LVS / DR
Phương thức xử lý cũng như cấu trúc của mô hình LVS/DR rất khác biệt so với mô hình LVS/NAT . như hình dưới ta có thể thấy được khi client yêu cầu đến máy chủ , LV1 sẽ trực không trực tiếp xử lý , thay vì đó sẽ chuyển nguyên cú request của client sang RealServer1 (RealServer2) xử lý , sau khi được realserver1 (realserver2) xử lý xong sẽ không chuyển về LV1 như mô hình LVS/NAT, thay vì đó realserver của mô hình LVS/DR sẽ tự động trả lời đến client mà không qua LV1.
và một sự khác biệt lớn giữa LVS/NAT với LVS/DR là LVS/DR nằm chung network với các Realserver .
phương thức xử lý theo thứ tự như sau
1) LVS nhận request của client
2) Chuyển request từ client sang RealServer, trong quá trình này , LV1 sẽ chỉ mang vai trò redirect .
3) RealServer nhận được cú request của LV1 sẽ trực tiếp xử lý và trả lời đến client
Từ các trình tự trên, khi ta có 2 Realserver , phía LV1 sẽ nhẹ hơn đáng kể ,bên cạnh đó các RealServer (1 , 2 ) sẽ phân tán các request từ phía client, từ đây chúng ta đã thực hiện được mô hình load blance một cách rất hiệu quả .
5.2.1. Định nghĩa
LV1 – 172.16.0.100 (eth0)
Virtual IP - 172.16.0.1(eth0:0)
RealServer1 – 172.16.0.101
RealServer2 – 172.16.0.102
5.2.2. Mô hình thiết lập
5.2.3. Build/patch/config kernel
Cũng như LVS/NAT , trước tiên ta phải điều chỉnh các thông số của kernel để có thể sử dụng chức năng IP forwarding .
echo "1" > /proc/sys/net/ipv4/ip_forward
hoặc có thể điều chỉnh trong /etc/sysctl.conf .
5.2.4. Điều chỉnh network
Ngoài việc điều chỉnh interface thực của LV1 (eth0) ta cũng phải thêm interface ảo cho LV1, vì mô hình LVS/DR yêu cầu ta phải tạo thêm virtual IP trên LV1, cách làm như sau .
# ifconfig eth0:0 172.16.0.1 netmask 255.255.255.0
Điều chỉnh khi bạn khởi động máy có thể ghi vào như sau .
File : /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
5.2.4.3. Khai báo / điều chỉnh RealServer
Khai báo dịch vụ ảo cho LV1
LV1# ipvsadm -A -t 172.16.0.1:http -s rr
bước kế tiếp là khai báo realserver
LV1# ipvsadm -a -t 172.16.0.1:http -r 172.16.0.101:http -m
LV1# ipvsadm -a -t 172.16.0.1:http -r 172.16.0.102:http -m
LV1# ipvsadm -a -t 172.16.0.1:http -r 172.16.0.103:http -m
Kiểm tra
LV1# ipvsadm -L
Điều chỉnh RealServer để có thể nhận được các gói từ LV1 .
RealServer1 # iptables –t nat –A PREROUTING –d 172.16.0.1 –p tcp –dport 80 –j REDIRECT –to-ports 80
RealServer2 # iptables –t nat –A PREROUTING –d 172.16.0.1 –p tcp –dport 80 –j REDIRECT –to-ports 80
Đến đây bạn đã cấu hình xong LVS/DR , để kiểm chứng những kết quả trên , bạn có thể request trực tiếp từ phía client đến địa chỉ
http://172.16.0.1/ để xem kết quả các máy chủ có hoạt động đúng vai trò của chúng hay không .