一、LVS的三种配置模式
1. VS/NAT —— Virtual Server via Network Address Translation (网络地址转换)
2. VS/TUN ——Virtual Server via IP Tunneling (IP隧道)
3. VS/DR——Virtual Server via Direct Routing (直接路由)
二、LVS的安装
yum -y install ipvsadm*
或者源码安装:
下载:http://www.linuxvirtualserver.org/software/
注意对应自己的内核版本
ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
./configure
make && make install
#在负载调度服务器上安装即可
三、LVS集群的配置
1. LVS-NAT模式
简要的网络架构如下图:
配置LVS server运行脚本:
#!/bin/sh
# description: start LVS of Nat
VLAN-IP=202.99.59.110
RIP1=10.1.1.2
RIP2=10.1.1.3
#RIPn=10.1.1.n
GW=10.1.1.1
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of NAtServer"
echo "1" >/proc/sys/net/ipv4/ip_forward
echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects
echo "0" >/proc/sys/net/ipv4/conf/eth1/send_redirects(内网卡上的)
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -a -t 202.99.59.110:80 -r 10.1.1.2:80 -m -w 1
/sbin/ipvsadm -a -t 202.99.59.110:80 -r 10.1.1.3:80 -m -w 1
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Nat server"
echo "0" >/proc/sys/net/ipv4/ip_forward
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth1/send_redirects(内网卡上的)
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
配置 LVS real-server运行脚本
LVS-Nat 模式的后端机器不需要配置.
2. LVS-TUN模式
简要的网络架构如下:
配置LVS server运行脚本
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.25.41(注意,lvs server那台机器2个ip,一个是vip,一个是本身ip例如192.168.25.42)
RIP1=192.168.25.44
RIP2=192.168.25.45
#RIPn=192.168.0.n
GW=192.168.25.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.0 up
/sbin/route add -host $VIP dev tunl0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
配置LVS real-server运行脚本
#!/bin/sh
# ghb in 20060812
# description: Config realserver tunl port and apply arp patch
VIP=192.168.25.43
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Tunl port starting"
ifconfig tunl0 $VIP netmask 255.255.255.0 broadcast $VIP up
/sbin/route add -host $VIP dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
stop)
echo "Tunl port closing"
ifconfig tunl0 down
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
3. LVS-DR模式(调度器与实际服务器都有一块网卡连在同一物理网段上)
简要的网络结构如下所示
配置LVS server运行脚本
#!/bin/sh
VIP=192.168.0.210
RIP1=192.168.0.175
RIP2=192.168.0.145
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer"
#Set the Virtual IP Address
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/sbin/ipvsadm -A -t $VIP:80 -s rr
/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"
/sbin/ipvsadm -C
/sbin/ifconfig eth0:1 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
配置LVS real-server运行脚本
#!/bin/bash
VIP=192.168.0.210
LOCAL_Name=50bang
BROADCAST=192.168.0.255 #vip's broadcast
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "reparing for Real Server"
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
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $BROADCAST up
/sbin/route add -host $VIP dev lo:0
;;
stop)
ifconfig lo:0 down
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: lvs {start|stop}"
exit 1
esac
四、LVS的常用管理命令
ipvsadm -C:清空队列
ipvsadm -A:添加一个TCP类型的转发服务,例如:
ipvsadm -A -t 192.168.1.43:8080 -s lc -p 600
(后面的-p代表persistent,即保持时间)
ipvsadm -D:删除一个转发服务,例如:
ipvsadm -D -t 192.168.1.43:8080
(这时,后面不需要跟太多细节参数了)
ipvsadm -a:添加一个TCP类型的、NAT方式的、权重为1的转发节点,例如:
ipvsadm -a -t 192.168.1.43:8080 -r 10.1.5.33:8080 -m -w 1
ipvsadm -a:添加一个TCP类型的、DR方式的、权重为1的转发节点,例如:
ipvsadm -a -t 192.168.1.43:8080 -r 10.1.5.33:8080 -w 1
ipvsadm -d:删除一个TCP类型的转发节点,例如:(不需要跟太多细节参数)
ipvsadm -d -t 192.168.1.43:8080 -r 10.1.5.33:8080
ipvsadm -A:添加一个UDP类型的转发服务,例如:
ipvsadm -A -u 192.168.1.43:8080 -s lc -p 600
ipvsadm -ln:检查当前运行中的配置
ipvsadm -L -n:同上
ipvsadm -ln --stats:检查当前运行状态信息
ipvsadm -ln --rate:检查当前各RealServer的流量速度
ipvsadm -ln --connection/-c:检查当前回话连接的分配情况
ipvsadm -ln --persistent-conn:检查当前保持中的连接分配情况
四、其它
1. 制作service管理脚本
A. 创建/etc/sysconfig/ipvsadm文件,或者/etc/ipvsadm.rules文件
B. 编写管理逻辑代码到文件中
C. 操作命令 service ipvsadm start|stop管理命令
2. LVS的几种转发方式
-g | LVS-DR |
-i | LVS-TUN |
-m | LVS-NAT |
3. LVS的几种调度算法
-s rr | 循环法 |
-s wrr | 带权重的循环法 |
-s lc | 最少连接法 |
-s wlc | 带权重的最少连接法 |
-s lblc | 基于本地的最少连接法 |
-s dh | 目标散列法 |
-s sh | 源散列法 |
-s sed | 最短预期延迟法 |
-s nq | 永不排队法 |