LVS负载均衡机制之LVS-DR模式工作原理以及简单配置

本博文主要简单介绍一下LVS负载均衡集群的一个基本负载均衡机制:LVS-DR;如有汇总不当之处,请各位在评论中多多指出。

 

LVS-DR原理:

  LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由),是调度器与实际服务器都有一块网卡连在同一物理网段上的情况。

  而LVS-DR的工作原理就是:通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址,源IP/PORT,以及目标IP/PORT均保持不变

 

LVS-DR:直接路由的特点

   Director和各RS上都配置使用VIP

     (1)确保前端路由将目标IP为VIP的请求报文发往Director

        (a)在前端网关做静态绑定

        (b)在RS上使用arptables

        (c)在RS上修改内核参数以限制ARP通告和应答级别

           arp_announce

           arp-ignore

     (2)RS的RIP可以使用私网地址,也可以是公网地址,RIP与DIP在同一IP网络,RIP的网关不能指向DIP,以确保响应报文不会经由Director

     (3)RS跟Director要在同一个物理网络

     (4)请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client

     (5)不支持端口映射

 

 

 

LVS-DR部署简单步骤介绍:

下图为LVS-DR的拓扑配置图:

lvs-dr.png

 

 

1.服务器IP分配:

  IP分配.png

2.在RS服务器端安装nginx,并配置好RS的测试页面文件(test.html)

  ~]#yum install -y nginx 

  ~]#vim /usr/share/nginx/html/test.html

 

  RS1设置:

 ~]# cat /usr/share/nginx/html/test.html 

 <h1>RS1-192.168.73.142</h1>

  RS2设置:

~]# cat /usr/share/nginx/html/test.html 

 <h1>RS2-192.168.73.143</h1>

 

 

注意:RS1与RS2配置步骤一致,但在配置测试页面文件时,为了显示测试效果,会显示实际RS的hostname以及对于IP地址

 

3.配置RS1网卡的VIP,添加本地route限定并修改arp_announce和arp_ignore的设置

  ~]#ifconfig lo:0 192.168.73.160 netmask 255.255.255.255 broadcast 192.168.73.160 up

  ~]#route add -host 192.168.73.160 dev lo:0

  ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

  ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

  ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

 

注:配置RS2服务器,步骤跟RS1配置一致即可

 

4.在Director安装ipvsadm,并配置网卡设置,添加ipvsadm规则

  ~]#yum install -y ipvsadm

  ~]#ifconfig ens33:0 192.168.73.160 netmask 255.255.255.255 broadcast 192.168.73.160 up

  ~]#route add -host 192.168.73.160 dev ens33:0

 

  ~]# ipvsadm -At 192.168.73.160 -s rr

  Zero port specified for non-persistent service

  ~]# ipvsadm -At 192.168.73.160:80 -s rr

  ~]# ipvsadm -a -t 192.168.73.160:80 -r 192.168.73.142 -g 

  ~]# ipvsadm -a -t 192.168.73.160:80 -r 192.168.73.143 -g 

  ~]# ipvsadm -ln

  IP Virtual Server version 1.2.1 (size=4096)

  Prot LocalAddress:Port Scheduler Flags

    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

  TCP  192.168.73.160:80 rr

    -> 192.168.73.142:80            Route   1      0          0         

    -> 192.168.73.143:80            Route   1      0          0 

 

5.启动各服务器的nginx服务,同时为了简便,关闭所有服务器的firewalld

  ~]#systemctl start nginx

  ~]#systemctl stop firewalld

  ~]#setenforce 0  

 

6.在客户端测试访问,http://192.168.73.160/test.html

test.png

test1.png

test2.png

 

 

 

 

 

注意:LVS-DR模式其实可以通过脚本来直接实现,下面为各服务器的简单脚本,建议为了熟悉配置,前期还是自己手动设置比较好,

此脚本较简单,请大神勿喷!

 

 

#!/bin/bash

#lvs-dr模式部署脚本

 

vip=192.168.73.160

mask=255.255.255.255

iface='lo:0'

 

case $1 in

 

start)

   ifconfig $iface $vip netmask $mask broadcast $vip up

   route add -host $vip dev $iface

   echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

   echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

   echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

   ;;

 

stop)

   ifconfig $iface down

 

   echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

   echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

   echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

   echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

   ;;

 

*)

   echo "Usage:$(basename $0) start|stop"

   exit 2

   ;;

 

esac



 同步博客地址:https://blog.51cto.com/12068974

 

转载于:https://www.cnblogs.com/1210-listen/p/10748328.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值