技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

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

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-02-24 06:06┆點(diǎn)擊:

  LVS集群有DR、TUN、NAT三種配置模式,可以對(duì)www服務(wù)、FTP服務(wù)、MAIL服務(wù)等做負(fù)載均衡,下面通過搭建www服務(wù)的負(fù)載均衡實(shí)例,講述基于DR模式的LVS集群配置。

  一、 Director Server的配置

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

  a. 通過ipvsadm命令行進(jìn)行配置

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

  通過ipvsadm命令行方式配置LVS

  安裝IPVS后,就可以配置LVS集群了,首先在Director Server上綁定一個(gè)虛擬IP(也叫VIP),此IP用于對(duì)外提供服務(wù),執(zhí)行如下命令:

  復(fù)制代碼

  代碼如下:

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

  此處在eth0設(shè)備上綁定了一個(gè)虛擬設(shè)備eth0:0,同時(shí)設(shè)置了一個(gè)虛擬IP是192.168.60.200,也就是上面我們規(guī)劃的IP地址,然后指定廣播地址也為192.168.60.200,需要特別注意的是,這里的子網(wǎng)掩碼為255.255.255.255。

  然后給設(shè)備eth0:0指定一條路由,執(zhí)行如下指令:

  代碼如下:

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

  接著啟用系統(tǒng)的包轉(zhuǎn)發(fā)功能,從而使系統(tǒng)充當(dāng)路由器,執(zhí)行如下指令:

  代碼如下:

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

  指令中,參數(shù)值為1時(shí)啟用ip轉(zhuǎn)發(fā),為0時(shí)禁止ip轉(zhuǎn)發(fā)。其實(shí)在DR模式中,開啟系統(tǒng)的包轉(zhuǎn)發(fā)功能不是必須的,而在NAT模式下此操作是必須的。

  然后開始配置ipvs,執(zhí)行如下操作:

  代碼如下:

  [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

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

  最后,啟動(dòng)LVS服務(wù),執(zhí)行如下操作:

  代碼如下:

  [root@localhost ~]#ipvsadm

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

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

  代碼如下:

  #!/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

  也可以寫成可啟動(dòng)與停止的服務(wù)腳本,腳本內(nèi)容如下:

  代碼如下:

  #!/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下,執(zhí)行:

  代碼如下:

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

  最后可以通過下面命令啟動(dòng)或停止LVS服務(wù):

  代碼如下:

  service lvsDR {start|stop}

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

  二、Real server 的配置

  在lvs的DR和TUn模式下,用戶的訪問請(qǐng)求到達(dá)真實(shí)服務(wù)器后,是直接返回給用戶的,而不再經(jīng)過前端的Director Server,因此,就需要在每個(gè)Real server節(jié)點(diǎn)上增加虛擬的VIP地址,這樣數(shù)據(jù)才能直接返回給用戶,增加VIP地址的操作可以通過創(chuàng)建腳本的方式來實(shí)現(xiàn),創(chuàng)建文件/etc /init.d/lvsrs,腳本內(nèi)容如下:

  代碼如下:

  #!/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