天天看點

叢集-LVS

叢集-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頁面

繼續閱讀