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

时间:2023-03-09 17:29:21
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负载均衡机制之LVS-DR模式工作原理以及简单配置

1.服务器IP分配:

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

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

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

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

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

注意: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