萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> Linux中使用ipvsadm配置LVS集群的基本方法

Linux中使用ipvsadm配置LVS集群的基本方法

   LVS集群有DR、TUN、NAT三種配置模式,可以對www服務、FTP服務、MAIL服務等做負載均衡,下面通過搭建www服務的負載均衡實例,講述基於DR模式的LVS集群配置。

  一、 Director Server的配置

  在Director Server上配置LVS負載均衡集群,有兩種方法:

  a. 通過ipvsadm命令行進行配置

  b. 通過Redhat提供的工具piranha來配置LVS

  通過ipvsadm命令行方式配置LVS

  安裝IPVS後,就可以配置LVS集群了,首先在Director Server上綁定一個虛擬IP(也叫VIP),此IP用於對外提供服務,執行如下命令:

  復制代碼

  代碼如下:

  [root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 netmask 255.255.255.255 up

  此處在eth0設備上綁定了一個虛擬設備eth0:0,同時設置了一個虛擬IP是192.168.60.200,也就是上面我們規劃的IP地址,然後指定廣播地址也為192.168.60.200,需要特別注意的是,這裡的子網掩碼為255.255.255.255。

  然後給設備eth0:0指定一條路由,執行如下指令:

  代碼如下:

  [root@localhost ~]#route add -host 192.168.60.200 dev eth0:0

  接著啟用系統的包轉發功能,從而使系統充當路由器,執行如下指令:

  代碼如下:

  [root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward

  指令中,參數值為1時啟用ip轉發,為0時禁止ip轉發。其實在DR模式中,開啟系統的包轉發功能不是必須的,而在NAT模式下此操作是必須的。

  然後開始配置ipvs,執行如下操作:

  代碼如下:

  [root@localhost ~]#ipvsadm -C

  [root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600

  [root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g

  [root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g

  上面操作中,第一行是清除內核虛擬服務器列表中的所有記錄,第二行是添加一條新的虛擬IP記錄。這個新的IP是192.168.60.200,同時指定 持續服務時間為600秒。第三、四行是在新加虛擬IP記錄中添加兩條新的Real Server記錄,並且指定LVS 的工作模式為直接路由模式。

  最後,啟動LVS服務,執行如下操作:

  代碼如下:

  [root@localhost ~]#ipvsadm

  這樣,LVS在Director Server上的配置就完成了。

  為了管理和配置的方便,可以將上面的操作寫出一個腳本文件,腳本內容如下:

  代碼如下:

  #!/bin/bash

  VIP=192.168.60.200

  RIP1=192.168.60.132

  RIP2=192.168.60.144

  GW=192.168.60.1

  # set the Virtual IP Address

  /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  /sbin/route add -host $VIP dev eth0:0

  echo "1" >/proc/sys/net/ipv4/ip_forward

  #Clear IPVS table

  /sbin/ipvsadm -C

  #set LVS

  /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

  #Run LVS

  /sbin/ipvsadm

  #end

  也可以寫成可啟動與停止的服務腳本,腳本內容如下:

  代碼如下:

  #!/bin/sh

  # description: Start LVS of Director server

  VIP=192.168.60.200

  RIP1=192.168.60.132

  RIP2=192.168.60.144

  ./etc/rc.d/init.d/functions

  case "$1" in

  start)

  echo " start LVS of Director Server"

  # set the Virtual IP Address and sysctl parameter

  /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  echo "1" >/proc/sys/net/ipv4/ip_forward

  #Clear IPVS table

  /sbin/ipvsadm -C

  #set LVS

  /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

  #Run LVS

  /sbin/ipvsadm

  ;;

  stop)

  echo "close LVS Directorserver"

  echo "0" >/proc/sys/net/ipv4/ip_forward

  /sbin/ipvsadm -C

  /sbin/ifconfig eth0:0 down

  ;;

  *)

  echo "Usage: $0 {start|stop}"

  exit 1

  esac

  將此腳本命名為lvsDR文件,然後把文件放到/etc/init.d下,執行:

  代碼如下:

  [root@localhost ~]#chomd 755 /etc/init.d/lvsDR

  最後可以通過下面命令啟動或停止LVS服務:

  代碼如下:

  service lvsDR {start|stop}

  到此為止,命令行方式配置Director Server完畢。

  二、Real server 的配置

  在lvs的DR和TUn模式下,用戶的訪問請求到達真實服務器後,是直接返回給用戶的,而不再經過前端的Director Server,因此,就需要在每個Real server節點上增加虛擬的VIP地址,這樣數據才能直接返回給用戶,增加VIP地址的操作可以通過創建腳本的方式來實現,創建文件/etc /init.d/lvsrs,腳本內容如下:

  代碼如下:

  #!/bin/bash

  VIP=192.168.60.200

  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  /sbin/route add -host $VIP dev lo:0

  echo “1″ >/proc/sys/net/ipv4/conf/lo/arp_ignore

  echo “2″ >/proc/sys/net/ipv4/conf/lo/arp_announce

  echo “1″ >/proc/sys/net/ipv4/conf/all/arp_ignore

  echo “2″ >/proc/sys/net/ipv4/conf/all/arp_announce

  sysctl -p

  #end

  此操作是在回環設備上綁定了一個虛擬IP地址,並設定其子網掩碼為255.255.255.255,與Director Server上的虛擬IP保持互通,然後禁止了本機的ARP請求。

  PS:ipvsadm命令的用法和格式如下:

  ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]

  ipvsadm -D -t|u|f virtual-service-address

  ipvsadm -C

  ipvsadm -R

  ipvsadm -S [-n]

  ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port

  [-g|i|m] [-w weight]

  ipvsadm -d -t|u|f service-address -r server-address

  ipvsadm -L|l [options]

  ipvsadm -Z [-t|u|f service-address]

  ipvsadm --set tcp tcpfin udp

  ipvsadm --start-daemon state [--mcast-interface interface]

  ipvsadm --stop-daemon

  ipvsadm -h

  命令選項解釋:

  有兩種命令選項格式,長的和短的,具有相同的意思。在實際使用時,兩種都可以。

  -A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一台新的虛擬服務器。

  -E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。

  -D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。

  -C --clear 清除內核虛擬服務器表中的所有記錄。

  -R --restore 恢復虛擬服務器規則

  -S --save 保存虛擬服務器規則,輸出為-R 選項可讀的格式

  -a --add-server 在內核虛擬服務器表的一條記錄裡添加一條新的真實服務器記錄。也就是在一個虛擬服務器中增加一台新的真實服務器

  -e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄

  -d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄

  -L|-l --list 顯示內核虛擬服務器表

  -Z --zero 虛擬服務表計數器清零(清空當前的連接數量等)

  --set tcp tcpfin udp 設置連接超時值

  --start-daemon 啟動同步守護進程。他後面可以是master 或backup,用來說明LVS Router 是aster 或是backup。在這個功能上也可以采用keepalived 的VRRP 功能。

  --stop-daemon 停止同步守護進程

  -h --help 顯示幫助信息

  其他的選項:

  -t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務[vip:port] or [real-server-ip:port]

  -u --udp-service service-address 說明虛擬服務器提供的是udp 的服務[vip:port] or [real-server-ip:port]

  -f --fwmark-service fwmark 說明是經過iptables 標記過的服務類型。

  -s --scheduler scheduler 使用的調度算法,有這樣幾個選項rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是: wlc.

  -p --persistent [timeout] 持久穩固的服務。這個選項的意思是來自同一個客戶的多次請求,將被同一台真實的服務器處理。timeout 的默認值為300 秒。

  -M --netmask netmask persistent granularity mask

  -r --real-server server-address 真實的服務器[Real-Server:port]

  -g --gatewaying 指定LVS 的工作模式為直接路由模式(也是LVS 默認的模式)

  -i --ipip 指定LVS 的工作模式為隧道模式

  -m --masquerading 指定LVS 的工作模式為NAT 模式

  -w --weight weight 真實服務器的權值

  --mcast-interface interface 指定組播的同步接口

  -c --connection 顯示LVS 目前的連接 如:ipvsadm -L -c

  --timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout

  --daemon 顯示同步守護進程狀態

  --stats 顯示統計信息

  --rate 顯示速率信息

  --sort 對虛擬服務器和真實服務器排序輸出

  --numeric -n 輸出IP 地址和端口的數字形式

copyright © 萬盛學電腦網 all rights reserved