叢集-LVS
一 知識點
1 叢集:就是多台計算機為一件事情協同工作
2 叢集種類
LB :load balance 負載均衡
HA :高可用叢集
HPC:高性能計算叢集
3 負載均衡組成
Client:來自internet上的用戶端
DGW:企業網關
Director : 指揮官,排程者
RealServer :被通路的伺服器,就是叢集裡被通路的伺服器
4 負載均衡的IP位址
CIP:用戶端IP,公網IP (client IP)
DGW:eth1_ip公網IP,eth0_ip私網IP
VIP:Director的對外的IP位址,公網IP (Virtul IP)
DIP:Director的私網IP位址 (Direct IP)
RIP:Real_Server IP,私網IP,與DIP是同子網。(可以使用公網IP,但為了節省公網
Ip是以通常為私網IP。
Lo_ip :回環位址
5 負載均衡産品
(1)負載均衡産品
LVS:Linux virtul server,注意,用LVS一定要有一個backup。因為LVS并不穩定,有當機的危險。
F5 :日本負載均衡産品,核心是LINUX,但在linux的基礎上添加了很多功能,性能有
所提高。缺點:企業應成對購買,一個F5的價格要20萬,貴!
DNSRR :DNS負載均衡 ( DNS Round Robin )。性能不是很好,很少用。
(2)産品分析
CPU與內建電路
NP :網絡處理器(伺服器使用)
X86 :PC用
ASIC專用內建電路(把資料包拆包工作直接寫在晶片裡,進而節省了核心處理的開銷)
LVS是LINUX核心的一部分,其核心處理的運算都由伺服器的CPU來執行。 而F5的CPU就免除了拆包等核心處理的開銷,進而CPU負載大大減小,表現的更為穩定。
DNSRR:是通過DNS裡針對同一個服務的多個不同的A記錄來進行負載均橫的,如www 0 A ip1、www 0 A ip2、www 0 A ip3。對于負載均橫來講應用較少;對于不同地域配置設定離用戶端較近的A記錄應用較多。
(3)負載均衡的應用
sohu用DNSRR、163用LVS、sina用F5
6 負載均衡LVS的三種模式:
(1)介紹
NAT:網絡位址轉換模式、DR :直接路由模式、Tunnel:隧道模式
a. NAT模式,是基于iptables政策的負載均衡,調用IPTABLES的NAT子產品。iptables -t nat -A PREROUTING -p tcp -dport 80 -d 6.1.1.1 -j ,每一個通話過程都要經過Director進行入出兩個方向的位址轉換,共2次。并且,通過算法director進行負載分擔。
b. DR模式:NAT每次都要拆包解包,是以給Director帶來了瓶頸。比如用戶端要下載下傳600M的電影,此時用戶端隻要發送一個40K的資料包作為請求即可,而RealServer就要發送600M的資料包,這些資料包都要通過Direct進行NAT轉換,這樣就形成了瓶頸。DR模式的RealServer上傳檔案時繞過Director,通過DGW發送給client,硬體路由器的效率很高,不用拆包解包,進而就解決了Director的瓶頸問題。直接路由是主流模式。
(2)評價
性能(由優到弱):DR、Tunnel、NAT
配置難度(由易到難):NAT、Tunnel、DR
二 LVS
(一)安裝
由于LVS是根據資料包裡的内容來進行負載均橫的,是以要到核心空間中查找,核心中叫 ipvs 。查找方法
[root@stu1 ~]# ls /lib/modules/2.6.18-53.el5/kernel/net/ipv4/ipvs/
空 #說明沒有,需要ipvs工具的安裝和編譯核心
1 安裝ipvs
[root@stu1 ~]# rpm -qa |grep ipvsadm
[root@stu1 ~]# mount 192.168.0.254:/var/ftp/pub /mnt
[root@stu1 ~]# cd /mnt/RHEL5U1/Cluster
[root@stu1 Cluster]# rpm -ivh ipvsadm-1.24-8.1.i386.rpm
2 編譯核心
[root@stu1 ~]# cd /usr/src/kernels/2.6.18-53.el5-i686/
[root@stu1 2.6.18-53.el5-i686]# ls
arch crypto fs init kabi_whitelist lib mm Module.symvers scripts sound usr
block drivers include ipc kernel Makefile Module.kabi net security symsets-2.6.18-53.el5.tar.gz
[root@stu1 2.6.18-53.el5-i686]# make menuconfig
彈出視窗界面,要依下完成編譯:
networking頁籤--》networking option頁籤--》ip virtual server configration頁籤--》ip virtual server support
按空格鍵更改“ip virtual server support”的标記為M表示moudule;點選Exit多次;儲存退出。
[root@stu1 Cluster]# ls /lib/modules/2.6.18-53.el5/kernel/net/ipv4/ipvs/
ip_vs_dh.ko ip_vs.ko ip_vs_lblcr.ko ip_vs_nq.ko ip_vs_sed.ko ip_vs_wlc.ko ip_vs_ftp.ko ip_vs_lblc.ko ip_vs_lc.ko ip_vs_rr.ko
ip_vs_sh.ko ip_vs_wrr.ko
(二)設定為NAT模式:
實驗
CIP:6.1.1.2 #用戶端IP (customer IP)
DGW:eth1:6.1.1.254; eth0:192.168.0.254
VIP:6.1.1.1 #Director的對外的IP位址 (Virtul IP)
DIP:192.168.0.1 #Director的私網IP位址 (Direct IP)
RIP1:192.168.0.2 #Real_Server IP,私網IP,與DIP是同子網。
RIP2:192.168.0.3 #Real_Server IP,私網IP,與DIP是同子網。
1 配置Director
(1)啟用ip_forward
[root@stu1 ~]# vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
改為
net.ipv4.ip_forward = 1 #設定轉發
檢查
[root@stu1 etc]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
(2)設定ipvs
# 6.1.1.1是vip;:80是通過端口定義了服務類型;RIP1:192.168.0.2,RIP2:192.168.0.3
[root@stu1 ~]# ipvsadm -A -t 6.1.1.1:80 -s rr
[root@stu1 ~]# ipvsadm -a -t 6.1.1.1:80 -r 192.168.0.2 -m
[root@stu1 ~]# ipvsadm -a -t 6.1.1.1:80 -r 192.168.0.3 -m
[root@stu1 ~]# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm: #儲存在這個檔案 [ OK ]
[root@stu1 ~]#vi /etc/sysconfig/ipvsadm
-A -t 6.1.1.1:80 -s rr
-a -t 6.1.1.1:80 -r 192.168.0.2:80 -m -w 1
-a -t 6.1.1.1:80 -r 192.168.0.3:80 -m -w 1
(3) 加載配套子產品
[root@stu1 ~]# modprobe iptable_nat
(4) 設定VIP (Virtul IP)
[root@stu1 etc]# ifconfig eth0:1 6.1.1.1
(5) 停止httpd服務
[root@stu1 httpd]# service httpd stop #作為Director要必須關掉此服務,因為Director的vip也是6.1.1.1,是以在浏覽器裡要是輸入http://61.1.1.1,則會顯示Director的頁面。
2 配置RealServer
(1)登入
[root@stu1 ~]#ssh 192.168.0.2
(2)網關指向 (指向DIP(Director_IP))
[root@stu2 ~]#route -n #檢視路由
[root@stu2 ~]#route del default
[root@stu2 ~]#route add default gw 192.168.0.1 #192.168.0.1是DIP (Director_IP)
#這樣改不能永久生效,要想永久生效??
(3)更改web頁面(此步驟不是必須的,隻是因為在測試環境便于區分)
[root@stu2 ~]#service httpd start
[root@stu2 ~]#elinks 192.168.0.2
#在浏覽器中檢視自己的網頁,為了差別大家的網頁可以更改index.html的内容
echo "##########################.2" > /var/www/html/index.html
(4)同樣方法更改其他realserver
3 測試
在client機器上添加vip:6.1.1.2作為CIP進行測試;也可以不添加vip,直接用私網IP通路。??
[root@stu1 ~]#ifconfig eth0:1 6.1.1.1.2
[root@stu1 ~]#elinks 6.1.1.1 #以rr算法通路DIP (Director_IP),浏覽器裡會輪回顯示realserver的web頁面