Linux 负载均衡介绍之LVS工作模式-DR直接路由模式
创始人
2024-03-21 23:51:42
0

Linux 负载均衡介绍之LVS工作模式-DR直接路由模式

图示:
在这里插入图片描述
工作原理:
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

特点:
1,集群节点和director必须在一个物理网络内
2,RIP可以使用公网地址或私有地址
3,director仅处理入站请求,director服务器的压力比较小
4,集群节点网关不指向director,故出站不经过director
5,不支持端口映射
6,大多数操作系统可以作为realserver,要支持隔离arp广播

ARP问题:
通常,DR模式需要在Real-server上配置VIP,配置的方式为:
/sbin/ifconfig lo:0 inet VIP netmask 255.255.255.255

i) 原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回复给client。

ii) 关于ARP广播:

  • 上面绑定VIP的掩码是”255.255.255.255″,说明广播地址是其本身,那么他就不会将ARP发送到实际的自己该属于的广播域了,这样防止与LVS上VIP冲突,而导致IP冲突。
  • 另外在Linux的Real-server上,需要设置ARP的sysctl选项:

LVS-DR案例:
环境:

192.168.0.106  client   windown7
192.168.0.124  dr1    负载均衡器      虚拟IP地址:192.168.0.123
192.168.0.120  rs1     web1			虚拟IP地址:192.168.0.123
192.168.0.121  rs2     web2			虚拟IP地址:192.168.0.123

步骤:
1.LVS准备VIP和路由
添加VIP

ifconfig ens32:0 192.168.0.123 broadcast 192.168.0.255 netmask 255.255.255.0 up
route add -host 192.168.0.123 dev ens32:0

注意:VIP与RIP要配到同一个网卡上

设置路由转发
服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1								开启路由功能
net.ipv4.conf.all.send_redirects = 0				禁止转发重定向报文
net.ipv4.conf.ens32.send_redirects = 0				禁止ens32转发重定向报文
net.ipv4.conf.default.send_redirects = 0			禁止转发默认重定向报文

2.LVS设置负载均衡条目
设置IPVSADM

yum install ipvsadm  -y
ipvsadm -C (-C   Clear the virtual server table.清除配置)
ipvsadm -A -t 192.168.0.123:80 -s rr
ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.120:80 -g
ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.121:80 -g

参数说明

-A 添加virtual server
-t 指定使用tcp协议
-s 指定调度策略为rr
-a 添加realserver
-r 指定realserver是谁
-g    LVS类型DRLVS类型:-g:Gateway,DR(默认使用的类型)-i:ipip,TUN-m:masquerade(地址伪装),NAT

3.LVS让配置永久生效:

# ipvsadm-save > /etc/sysconfig/ipvsadm
# systemctl enable ipvsadm

4.两个web上部署web服务

安装web服务#yum install nginx  -y
修改主页内容# vim /usr/share/nginx/html/index.html
启动服务:#systemctl start nginx#systemctl enable nginx
  1. 给两个web服务器的lo网卡设置子网掩码为32位vip
rs1:# ifconfig lo:0 192.168.0.123/32  
rs2:# ifconfig lo:0 192.168.0.123/32 

6.给两个web服务器设置内核参数

忽略arp响应 ,不允许收
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
为了让vip发包出去,但允许发
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  

7.客户端测试
ipvsadm状态测试

[root@localhost ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:16  SYN_RECV    192.168.0.106:63429 192.168.0.123:80   192.168.0.121:80

8.命令解释大全(略)
1. 管理虚拟服务

添加一个虚拟服务192.168.1.100:80,使用轮询算法ipvsadm -A -t 192.168.1.100:80 -s rr
修改虚拟服务的算法为加权轮询ipvsadm -E -t 192.168.1.100:80 -s wrr
删除虚拟服务ipvsadm -D -t 192.168.1.100:80
2. 管理真实服务
添加一个真实服务器192.168.1.123,使用DR模式,权重2ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 2
增加真实服务器的权重ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 5
修改真实服务器的权重ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.123 -g -w 5
删除真实服务器ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.123
3. 查看统计
查看当前配置的虚拟服务和各个RS的权重ipvsadm -Ln
查看当前ipvs模块中记录的连接(可用于观察转发情况)ipvsadm -lnc
查看ipvs模块的转发情况统计ipvsadm -Ln --stats  --rate

9.脚本配置方法
VS调度器配置

#!/bin/bash
vip='172.18.0.100'
iface='eth0:1'
mask='255.255.255.255'
port='80'
rs1='10.10.0.72'
rs2='10.10.0.73'
scheduler='wrr'
type='-g'
case $1 in
start)ifconfig $iface $vip netmask $mask broadcast $vip upiptables -Fipvsadm -A -t ${vip}:${port} -s $scheduleripvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1echo "The VS Server is Ready!";;
stop)ipvsadm -Cifconfig $iface downecho "The VS Server is Canceled!";;
*)echo "Usage: $(basename $0) start|stop"exit 1;;
esac

RS服务器配置

#!/bin/bash
vip=172.18.68.100
mask='255.255.255.255'
dev=lo:1
case $1 in
start)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig $dev $vip netmask $mask broadcast $vip uproute add -host $vip dev $devecho "The RS Server is Ready!";;
stop)ifconfig $dev downecho 0 > /proc/sys/net/ipv4/conf/all/arp_ignore3echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announceecho "The RS Server is Canceled!";;
*) echo "Usage: $(basename $0) start|stop"exit 1;;
esac

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...