玩转LVS,快速实现负载均衡

作者: 魏延是反贼. 分类: Linux, 系统·安全·调优

模型一:NAT模型的配置

实验环境:

采用VMware虚拟机,版本6.0.5

操作系统:Red Hat Enterprise Linux 5 (2.6.18)

虚拟机1:充当Director:网卡1(桥接):192.168.0.33(对外),网卡2(Vmnet):10.0.0.1(对内)

虚拟机2:充当RS1:IP:10.0.0.11

虚拟机3:充当RS2:IP:10.0.0.12

设置工作环境:

  1. # 在Director上安装ipvsadm
  2. yum install ipvsadm 
  1. # 在RS1和RS2上这样配置
  2. yum install httpd mysql-server php php-mysql php-mbstring 
  3. route add default gw 10.0.0.1 
  4. hostname localhost 
  1. # 在RS1上配置网页
  2. echo “<h1>RealServer1</h>” > /var/www/html/index.html 
  1. # 在RS2上配置网页
  2. echo “<h1>RealServer2</h>” > /var/www/html/index.html 
  1. # 分别在RS1和RS2上开启服务
  2. server httpd start 
  1. # 在Director上开启路由转发功能
  2. echo 1 > /proc/sys/net/ipv4/ip_forward 
  1. # 在Director上配置ipvs的定义:使用模式以及算法 
  2. ipvsadm -A -t 192.168.0.33:80 -s rr 
  3. ipvsadm -a -t 192.168.0.33:80 -r 10.0.0.11 -m 
  4. ipvsadm -a -t 192.168.0.33:80 -r 10.0.0.12 -m 
  5. ipvsadm -L -n 

clip_image002

于是我们进入浏览器,进入主机看是否响应

clip_image004

我们发现当我们刷新的时候,的确出现了不同的页面,也就是我们的系统在内部的确实现了调度

clip_image006

回到终端,查看我们ipvsadm的状态。发现的确它的InActConn值很平均,的确在按照RR算法进行调度

clip_image008

改为WLC算法,查看权重信息:

  1. # 在Director上修改算法以及权重信息  
  2. ipvsadm -E -t 192.168.0.33:80 -s wlc  
  3. ipvsadm -e -t 192.168.0.33:80 -r 10.0.0.11 -m -w 3  ## 权重定义为3:1  
  1. # 我们在另一台主机上使用Apache自带的ab命令进行压力测试 
  2. ab -c 10 -n 10000 http://192.168.0.33/index.html 

查看检测内容:

clip_image010

 

改为sed算法,查看的效果,的确如Sed算法特点的那样加大大权重的使用率,于是……

clip_image012

 

同理修改为NQ算法的效果,在权重比相差悬殊的情况下不让权重高的一直响应而导致低权重的完全空闲的机制

clip_image014

 


模型二:DR模型的配置

实验环境:

采用VMware虚拟机,版本6.0.5

操作系统:Red Hat Enterprise Linux 5 (2.6.18)

虚拟机1:Director:

DIP配置在接口上 172.16.19.10

VIP配置在接口别名上:172.16.19.1

虚拟机1:RS1:RIP配置在接口上:172.16.19.11 ;VIP配置在lo别名上

虚拟机2:RS2:RIP配置在接口上:172.16.19.12 ;VIP配置在lo别名上

  1. # 我们在Director上这样配置
  2. ifconfig eth0 172.16.19.10/16 
  3. ifconfig eth0:0 172.16.19.1 broadcast 172.16.19.1 netmask 255.255.255.255 up 
  4. route add -host 172.16.19.1 dev eth0:0 
  5. echo 1 > /proc/sys/net/ipv4/ip_forward 
  1. # RS1和RS2配置属于自己的ip之后都要:定义内核参数,禁止响应对VIP的ARP广播请求 
  2. echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
  3. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
  4. echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
  5. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
  1. # 配置VIP 
  2. ifconfig lo:0 172.16.19.1 broadcast 172.16.19.1 netmask 255.255.255.255 up 
  3. # 凡是到172.16.19.1主机的一律使用lo:0响应 
  4. route add -host 172.16.19.1 dev lo:0  
  1. # 在Director上配置Ipvs 
  2. ipvsadm -A -t 172.16.19.1:80 -s wlc 
  3. ipvsadm -a -t 172.16.19.1:80 -r 172.16.100.11 -g -w 2 
  4. ipvsadm -a -t 172.16.19.1:80 -r 172.16.100.12 -g -w 4 
  5. ipvsadm -Ln 

clip_image002[6]

我们对172.16.19.1访问查看wlc算法的实现结果

clip_image004[5]

OK,通过这样的实现,我想已经可以完整的明白LVS的理论实现过程了。

如果还有什么疑问,欢迎提出,我会一一解答,并且补充到博客中去

标签:

返回正文

(1)条评论

您的留言是我最大的支持!