部署 lvs


部署环境

LVS :  10.0.0.5

RS1节点 :10.0.0.3

RS1节点 :10.0.0.3


[root@LVS ~]# cat /etc/redhat-release 

CentOS release 6.5 (Final)

[root@LVS ~]# uname -a

Linux LVS 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@LVS ~]# uname -r

2.6.32-431.el6.x86_64

[root@LVS ~]#

#########################################################

#########################################################

下面在LVS下操作

1.做软连接

ls -ld /usr/src/kernels/`uname -r`/

ln -s /usr/src/kernels/`uname -r`/ /usr/src/linux

ls /usr/src/linux -l

=========================================================

[root@LVS ~]# ls -ld /usr/src/kernels/`uname -r`/

/usr/src/kernels/2.6.32-431.el6.x86_64/

[root@LVS ~]# ln -s /usr/src/kernels/`uname -r`/ /usr/src/linux

[root@LVS ~]# ls /usr/src/linux -l

lrwxrwxrwx. 1 root root 39 Oct 12 09:08 /usr/src/linux -> /usr/src/kernels/2.6.32-431.el6.x86_64/


说明:

如果第一步ls -ld /usr/src/kernels/`uname -r`/没有结果,那就用下面命令安装kernel

yum install kernel-devel -y

也可以不做ln做软连接,但是可以编译的时候需要指定kernel路径

 

2.下载安装LVS


lsmod | grep ip_vs

先查看是否有ip_vs模块,如果没有就继续安装

[ ! -d /home/lvnian/tools ] && mkdir /home/lvnian/tools -p

cd /home/lvnian/tools 

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz 

tar xf ipvsadm-1.26.tar.gz 

cd ipvsadm-1.26

yum install libnl* libpopt* -y

yum install popt-static -y

make 

make install

lsmod | grep ip_vs

/sbin/ipvsadm  (或者modprobe ip_vs(把命令放进内核的意思))

lsmod | grep ip_vs

##########################################################

安装完上面的ipvsadmin软件,以出现下面内容为安装正确

 

[root@LVS ipvsadm-1.26]# lsmod | grep ip_vs

ip_vs                 125220  0 

libcrc32c               1246  1 ip_vs

ipv6                  317340  142 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

[root@LVS ipvsadm-1.26]#

出现上面的内容才标明安装成功


错误解决:

故障1:

make后的故障如下


libipvs.c:1072: error: too many arguments to function ‘ipvs_nl_send_message’

make[1]: *** [libipvs.o] Error 1

make[1]: Leaving directory `/home/lvnian/tools/ipvsadm-1.26/libipvs'

make: *** [libs] Error 2

解决

[root@LVS ipvsadm-1.26]# yum install libnl* libpopt* -y

=================================

 故障2:

 make后的故障如下

ipvsadm.c: In function ‘print_largenum’:

ipvsadm.c:1383: warning: field width should have type ‘int’, but argument 2 has type ‘size_t’

make: *** [ipvsadm.o] Error 1

解决:

[root@LVS ipvsadm-1.26] yum install popt-static -y


安装LVS小结

1、centos5.x 安装lvs使用1.24版本

2、centos6.x 使用1.26版本

3、安装lvs,要执行ipvsadm(modprobe ip_vs)把ip_vs模块加载到内核中

###########################################################################

###########################################################################


3.手工添加LVS转发


a、手工配置VIP

ifconfig eth0:10 10.0.0.100 netmask 255.255.255.0

ifconfig

=================

[root@LVS ~]# ifconfig eth0:10 10.0.0.100 netmask 255.255.255.0

[root@LVS ~]# ifconfig eth0:10

eth0:10   Link encap:Ethernet  HWaddr 00:0C:29:04:9C:CB  

          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

##########

添加主机路由(不是必须的)


route add -host 10.0.0.100 dev eth0

route -n

=================

[root@LVS ~]# route add -host 10.0.0.100 dev eth0

[root@LVS ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.0.0.100      0.0.0.0         255.255.255.255 UH    0      0        0 eth0

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 eth0

[root@LVS ~]# 


在客户端windows是PING 看能不能通

###########################################

b、手工执行配置添加lvs

 

ipvsadm -h

ipvsadm -C

ipvsadm --set 30 5 6            ##设置超时的命令,分别是  tcp tcpfin udp的超时

ipvsadm -A -t 10.0.0.100:80 -s rr -p 20

ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.3 -g

ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.4 -g -w 1

ipvsadm -L -n

ipvsadm -L -n --stats


上面的命令都是临时生效的,如果要永久生效,那就写脚本,放在让其开机自动生效



[root@LVS ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.0.0.100:80 rr persistent 20

  -> 10.0.0.5:80                  Route   1      0          0         

  -> 10.0.0.6:80                  Route   1      0          0         

[root@LVS ~]#



[root@LVS ~]# ipvsadm -d -t 10.0.0.100:80 -r 10.0.0.6  

[root@LVS ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.0.0.100:80 rr persistent 20

  -> 10.0.0.5:80                  Route   1      0          0         

[root@LVS ~]#


[root@LVS ~]# ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.6 -g -w 3

[root@LVS ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.0.0.100:80 rr persistent 20

  -> 10.0.0.5:80                  Route   1      0          0         

  -> 10.0.0.6:80                  Route   3      0          0         

[root@LVS ~]#


###########################################################################

###########################################################################

4、配置RS服务器

每台RS配置VIP

ifconfig lo:100 10.0.0.100 netmask 255.255.255.255 up

ifconfig lo:100

ifconfig

route add -host 10.0.0.100 dev lo

每台RS上抑制ARP响应

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


##############################################################

配置成功


这个实验,高可用功能实现效果很差,测试的时候可以用多台客户机测试,负载均衡方面还是挺不错的。


测试 结果

客户端1:(这服务器不能是lvs和RS)

[root@moban ~]# for n in `seq 100 `;do curl 10.0.0.100 ; sleep 5;done

10.0.0.4

10.0.0.4

...

客户端2:

wKiom1YbFoWwrIkaAADEC8UDXHo988.jpg

客户端3:

wKioL1YbFqKjfWDZAABWqJ6msvs116.jpg