styxmx 发表于 2019-1-5 07:23:38

lvs之DR模型实现

  前言:基于IPVS实现web服务的负载均衡的DR模型的实现。
  首先让两台服务器当RealServer:让两台服务器都需要启动web服务,并提供不同的页面,方便以后测试的时候知道是哪台服务器在提供web服务。其中,RIP在eth0上,VIP在lo:0上;
  Director的eth0上配置DIP,在eth0:0上配置VIP

  RIP 1:192.168.1.7

  RIP 2:192.168.1.8
  VIP:192.168.1.2
  DIP:192.168.1.50

  


  

  RealServer:

  首先在RealServer上定义两个参数:一个是ARP的响应级别,arp_ignore=1;另外一个是ARP的通告级别,arp_announce=2;用来实现来自客户请求VIP时RealServer上的VIP不予响应。(让调度器来响应,并分配给合适的RealServer来响应)
  #echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  #echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  RealSever上的VIP配置在回环口上,其广播地址也为192.168.1.2,网关为255.255.255.255。(其响应报文要从eth0出去)
  #ifconfig lo:0 192.168.1.2 broadcast 192.168.1.2 netmask 255.255.255.255 up
  加一个路由信息:
  #route add -host 192.168.1.2
  Dirctor:
  #ifconfig eth0:0 192.168.1.2 broadcast 192.168.1.2 netmask 255.255.255.255
  #route add -host 192.168.1.2 dev eth0:0
  #ipvsadm -A -t 192.168.1.2:80 -s wrr (添加一个集群服务,并指定为wrr的调度算法)

  #ipvsadm -a -t 192.168.1.2:80 -r 192.168.1.7 -g -w 2 (-g指定DR模型,-w指定权重)
  #ipvsadm -a -t 192.168.1.2:80 -r 192.168.1.8 -g -w 1
  下面我们来检测下负载均衡能工作否:
  现在调度器上执行# watch -n1 'ipvsadm -L -n --stats'来时刻关注那个响应的。


  好了,试的访问下192.168.1.2吧:
这是192.168.1.8这台主机提供的服务;
  这里我遇到一个小问题:需要等个几分钟再刷新网页才能出现来自另一台服务器的页面……(可能是我在虚拟机中做的实验,每个给的内存有点少了280左右的内存)也有可能我哪里出现问题了,还望各位大神给出宝贵的意见~

  在每隔几分钟刷新n次页面后,很明显的可以在调度器上看到监控这两台服务器每个所响应的个数,大概是2比1的比例;因为我的规则里面是加权轮巡的,嘻嘻~

  

  下面介绍下ipvsadm的几个参数:
  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p timeout] [-O] [-M netmask]
  A:添加   E:编辑   

  -t:tcp   -u:udp -f:firewallmark(防火墙标记,在lvs实现将多个服务(端口)捆绑,一起实现负载均衡。)
  service-address:VIP:Port

  -s:指定调度方法 (rr,wrr,sh,lc,wlc等)

  删除一个集群服务:ipvsadm -D -t|u|f service-address
  ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
  -a:添加-e;编辑

  -r IP[:port] 指定realserver地址
  指定lvs类型:-g:dr模型,(默认);-i tun模型 ;-m:nat模型
  -w weight 指定权重;
  删除一个:例:ipvsadm -d -t 192.168.1.2:80 -r 192.168.1.7
  等配置好后记得保存:#service ipvsadm save(保存在/etc/sysyconfig/ipvsadm)
  也可以使用一个特定的文件,方便以后的使用:
  ipvsadm -S > /path/to/ipvsadm.rules 输入重定向
  ipvsadm -R < /path/to/ipvsadm.rules 输出重定向
  查看:#ipvsadm -L|l -n --rate --stats

  

  




页: [1]
查看完整版本: lvs之DR模型实现