lrx182125 发表于 2015-11-20 08:17:34

LVS+Keepalived实验笔记

  lvs+keeplive安装配置文档。
  1、LVS概念介绍。
   lvs目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR)。
  (1)Virtual Server via Network Address Translation(VS/NAT)

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
  (2)Virtual Server via IP Tunneling(VS/TUN)

采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。
  (3)Virtual Server via Direct Routing(VS/DR)

VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。
  二、安装规划:
  

Director Server master真实IP 10.7.35.33
Director Server backup真实IP10.7.11.227
Director Server VIP 10.7.35.33
Real Server1 IP 10.7.11.144
Real Server2 IP 10.7.11.121

  


  三.安装过程:
  1.从官方网站下载ipvsadm、keepalive:
  下载地址:http://www.linuxvirtualserver.org/software/kernel-2.6/
  下载ipvsadm-1.24.tar.gz,因为最新版ipvsadm-1.25这个版本只支持2.6.28以上的内核,RHEL 5.4内核版本达不到要求,所以选择安装前一个版本。
  下载地址:http://www.keepalived.org/download.html
  下载keepalived-1.1.20.tar.gz
  2、安装ipvsadm
  (1)创建一个连接文件,其命令为:
  ln-s /usr/src/kernels/2.6.18-92.el5-i686/usr/src/linux
  注意一定要与当前的运行的内核相一致,因为/usr/src/kernels目录下可能有多个目录。如果不创建这个连接文件,在编译时会出错,从而不能继续进行安装。

#tar zxvfipvsadm-1.24
#cdipvsadm-1.24
#make
#make install

  

(2)检验ipvsadm是否被正确安装
  (1)执行ipvsadm,看是否有如下输出。

IP Virtual Server version 1.2.1 (size=4096)
Port LocalAddress:Port Scheduler Flags      ->RomoteAddress:Port
Forward Weight ActiveConn InActConn

  

(2)检查当前加载的内核模块,看是否存在ip_vs模块。
  # lsmod | grep ip_vs
  ip_vs 77569 0
  注1:只有执行ipvsadm以后,才会在内核加载ip_vs模块。
  注2:不能以查进程的方式判断ipvs是否运行。
  注3:如果下载最新的ipvsadm-1.25.tar.gz这个版本,在创建连接文件/usr/src/linux后,执行编译时,可能需要修改/boot/grub/grub.conf启动内核名称。一旦当前运行内核与连接文件所代表的内核名不一致时,将出现找不到*.h这样的错误,从而导致安装不能正常进行。
  
  3、安装keepalived.
  在负载均衡服务器上执行master和backup

1、解压



#tar -zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure --prefix=/usr/local/keepalived
#make;make install
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived //etc/init.d/
chmod +x /etc/init.d/keepalived
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#service keepalived start|stop

  4、开启负载服务器路由机制master和backup
  #echo "1" >/proc/sys/net/ipv4/ip_forward
  # sysctl -p 使配置生效、
  (DR 模式 此步骤貌似可以不用)
  5、DR模式下 建立负载服务器启动脚本//master和backup
  vi /sbin/lvs.sh
  



#!/bin/bash
# description: start LVS of DirectorServer

# website director vip.
SNS_VIP=10.7.35.33
SNS_RIP1=10.7.11.144
SNS_RIP2=10.7.11.121
. /etc/rc.d/init.d/functions
logger $0 called with $1
case "$1" in
start)
# set squid vip
#/sbin/ipvsadm --set 30 5 60
/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up
/sbin/route add -host $SNS_VIP dev eth0:0
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 3
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 2

/sbin/ipvsadm
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
route del$SNS_VIP dev eth0
ifconfig eth0:0 down

#route del $SS_VIP
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
echo "ipvsadm stoped"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped"
exit 1
else
echo "ipvsadm OK"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0


  



#chmod 757 lvs.sh执行测试# lvsdr.sh start  6、配置后端WEB服务器

在10.7.11.144和10.7.11.121上分别建立如下脚本。

# vi rs.sh

#!/bin/bash
# description: Config realserver lo and apply noarp
SNS_VIP=10.7.35.33
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
/sbin/route add -host $SNS_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 >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
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 "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

  运行ifconfig 查看结果


  配置权限

# chmod 757 rs.sh
  在两台web服务器上分别执行其指命。

./rs.sh start

7.配置keepalived.conf配置文件 //master和backup
#vi /etc/keepalived/keepalived.conf  master脚本:

! Configuration File for keepalived
global_defs {
notification_email {
liang123an@qq.com
}
notification_email_from xwluan@tsong.cn
smtp_server127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER//备份服务器设置为backup
interface eth0
virtual_router_id 51
priority 100////备份服务器设置小于100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.7.35.33
}
}
virtual_server 10.7.35.33 80 {
delay_loop 6//隔6秒查询
lb_algo wrr   //lvs算法
lb_kind DR    //(Direct Route)
persistence_timeout 60//同一IP的连接60秒内被分配到同一台realserver
inhibit_on_failure//当web挂掉的时候,前面请求的用户,可以继续打开网页,但是后面的请求不会调度到挂掉的web上面。
protocol TCP   //用TCP协议检查realserver状态
real_server 10.7.11.144 80 {
weight 3   //权重
TCP_CHECK {
connect_timeout 10   //10秒无响应超时
nb_get_retry 3
delay_before_retry 3
}
}
real_server 10.7.11.121 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
}

  




  

backup上2处不同:
      1.priority 设置为小于100 我设置了99 。
     2.state 备份服务器设置为BACKUP。
  8.启动keepalived 测试
  运行命令:
        service keepalived start
  

权重问题:当lvs配置文件lvs.sh改变权重以及keepalived配置文件keepalived.conf修改权重后,哪个文件重新启动,哪个文件的权重生效。同时权重在master和backup上面可以设置不同。

当算法是rr的时候,权重没有作用,但是当算法是wlc和wrr的时候,必须设置权重,可以根据服务器的性能和配置,来确定权重的大小,当权重大的时候,lvs调度的服务也就多,同时权重高的服务器先收到链接。当小的时候,lvs调度的比较少。当权重为0的时候,表示服务器不可用,
测试lvs

1 当我把master的lvs服务关掉的时候,会将用户请求自动切换到backup上面进行工作。

2 当我把web服务关掉的时候,lvs上面会显示web消失,当启用后,web会自动显示

web关闭后:
watch -n 1 'ipvsadm -ln'




http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/434632706/QQ/WinTemp/RichOle/J6U)IOAO8~V)TX%60@WLQ%256
   

web启用后:

watch -n 1 'ipvsadm -ln'


http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/434632706/QQ/WinTemp/RichOle/DC2C04YAATBLMNXJWLJCY8O.jpg


3 当master服务器down的时候,backup自动会接替服务,当master起来的时候,backup会自动断掉。  4.压力测试
  ./ab -c 100 -n 10000 http://10.7.35.33/index.html


  在主备机上查看:watch -n 1 'ipvsadm -Ln'

http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/434632706/QQ/WinTemp/RichOle/A%7BKDV0YKL(EIC(V$Y8X9UCY.jpg  结果说明:由于配置文件中设置:persistence_timeout 60 //同一IP的连接60秒内被分配到同一台realserver


  测试下发现其实主备机上的脚本可以不运行,直接修改一个keepalived.conf即可,不知道这种说法对不对。
  参考:http://hi.baidu.com/rhce2010/item/b6dc4f7bbf294737714423dc
  http://5iwww.blog.iyunv.com/856039/267278等文档
  
页: [1]
查看完整版本: LVS+Keepalived实验笔记