基于LVS实现LB(负载均衡)

2088阅读 0评论2011-09-08 hanlenry
分类:LINUX

LVS    

工作在用户空间的代码:ipvsadm

工作在内核空间的代码:ipvs

查看一下ipvs

grep -i -C 5 ipvs /boot/config-2.6.18-l64.e.5

ipvsadm的工作原理类似于iptables

ipvsadm命令的使用:

1.定义集群服务

                     ipvsadm -t(tcp) |-u(udp) |-f(防火墙标记)

    格式:      ipvsadm -A|-E -t|-u VIP:port -s schedule_method

  -A 添加

  -E 修改

  -s 指定调度算法

  -D 删除

2.对于真正的服务

格式为: ipvsadm -a|-e -t|-u VIP:port -r Realserver_addr -g|-i|-m -w weight

  -a 添加

  -e 修改

 -r 指定真正的服务器地址

  -g|i|m  指定LVS类型 ,g表示为DR类型,i表示TUN类型,m表示NAT类型

  -w   指定权重

 删除一个realserver

  ipvsadm -d -t|-u VIP:port -r REALSERVER_addr

3.查看,保存,恢复

  -L|l 查看  -n 以数字的方式输出 --stats 统计数据

  -C 清空规则

  -S 保存规则到文件中

  -R 恢复规则

  保存ipvsadm规则也可以使用:service ipvsadm save



(1)LVS-NAT的实现

                              图1-1 LVS-NAT架构

准备工作

web1:10.0.11.12

web2:10.0.11.13

1.  分别在Director,web1上,web2上分别配置yum源

[base]
name=Instructor Server Repository
baseurl=ftp://192.168.0.254/pub/Server
gpgcheck=0

[Cluster]
name=Cluster
baseurl=ftp://192.168.0.254/pub/Cluster
gpgcheck=0

2.  在Director安装ipvsadm。

#yum install ipvsadm

 在web1上安装apache。

#yum install httpd

配置网页文件:

#vim /var/www/html/index.html

This is the Realserver Web1

在web2上安装apache。

#yum install httpd

#vim /var/www/html/index.html

This is the Realserver Web2

3.  配置网络环境

设置ip地址:

(1)在Director上配置ip,并将第二块网卡类型设置为VMnet2:

#ifconfig eth0 192.168.0.151

#ifconfig eth1 10.0.11.11

(2) 在web1上配置ip,并将网卡类型设为VMnet2,并指定网关为10.0.11.11

#ifconfig eth0 10.0.11.12

#route add default gw 10.0.11.11

#route -n

(3) 在web2上配置ip,并将网卡类型设为VMnet2,并指定网关为10.0.11.11:

#ifconfig eth0 10.0.11.13

#route add default gw 10.0.11.11

#route -n

--------------

你可以做一下测试,看一下Dip与两个Rip是否能ping通。

4.在Director上配置ipvsadm:

#ipvsadm -A -t 192.168.0.151:80  -s rr

#ipvsadm -a -t 192.168.0.151:80 -r 10.0.11.12 -m 

#ipvsadm -a -t 192.168.0.151:80 -r 10.0.11.13 -m

5.在地址栏中输入192.168.0.151,然后不断刷新,看页面变化情况

你也可以在用一台虚拟机做测试,需要安装apache,安装完之后,使用ab名另对其测试:

ab -c 5 -n 10000

-c 表示线程数

-n 表示连接数

151后面的"/" 必须加上

6.在做压力测试时,你可以在Director上查看负载均衡的情况
#watch -n 2 `ipvsadm -L -n`

7.你自己可以使用ipvsadm命令将算法进行改变,来查看效果,我就不再演示了。

--------------------------------------------------------------------------

(2) LVS-DR的实现:

 

原理我已经在集群的基础知识中介绍过了,这里不再啰嗦。

arp_announce (在某个接口上向别人通告自己的ip地址和MAC的对应关系时所定义的不同级别)
            0(default) 无论你请求哪个端口,都响应
            1 尽可能避免使用另外一个接口去响应
            2 总是使用匹配到的去响应(最佳响应)
arp_ignore (接收到请求后,在那种情况下予以对响应)
            0 (default)无论你请求哪个接口,都响应
            1 请求的地址和ARP进来的接口的地址一致,才响应

 

LVS-DR的实现:

1.在director上进行配置:

注意:Dip要配置在接口上,Vip要配置在接口别名上

我在这里定义了一个变量,知识为了写起来方便

Vip=192.168.11.13

(1)配置Dip

#ifconfig eh0 192.168.11.10

(2)配置vip

# ifconfig eth0:0 $Vip broadcast $Vip netmask 255.255.255.255 up  

# route add -host $Vip dev eth0:0

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

 

2.配置realserver

Rip要配置在接口上,Vip要配置在lo的别名上;

在web1上配置:

(1)定义内核参数,禁止响应对VipARP广播请求;

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

(2)配置Rip,Vip

RIP:

#ifconfig eth0 192.168.11.11

VIP:

#ifconfig lo:0 $Vip broadcast $Vip netmask 255.255.255.255 up

#route add -host $Vip dev lo:0

 在web2上配置:

(1)定义内核参数,禁止响应对VipARP广播请求;

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

(2)配置Rip,Vip

RIP:

#ifconfig eth0 192.168.11.12

VIP:

#ifconfig lo:0 $Vip broadcast $Vip netmask 255.255.255.255 up

#route add -host $Vip dev lo:0

 

3.director上:

定义集群服务

#ipvsadm -A -t 192.168.11.13:80 -s wlc

添加realserver

#ipvsadm -a -t 192.168.11.13:80 -r 192.168.11.11 -g -w 2

#ipvsadm -a -t 192.168.11.13:80 -r 192.168.11.12 -g -w 4


4.你可以使用ab做测试

上一篇:集群的基础知识
下一篇:高可用集群(HA)的简单架设