centos7之LVS-DR模式传统部署

介绍

优缺点以及适用场景

复制代码
优点:能负载更多的Realserver减轻LB的压力,性能高于tun模式。
缺点:不支持端口转发(VIP:80必须代理RIP:80),Realserver和LVS需要在同一网段下。
适用:适用于大多数公司,也是大多数公司用的最多的模式。

DR模式:路由模式原理,ip不变主要改MAC地址

复制代码
1.客户端把请求数据包发给DirectorServer
2.DirectorServer拆包查看(源ip:CIP源MAC:CIP-MAC, 目标ip:VIP 目标MAC:VIP-MAC),这个包是给自己的就会收下数据包。
3.DirectorServer通过算法(rr wrr)找一台合适的RealServer,修改数据包(源ip:CIP源MAC:DIP-MAC, 目标ip:VIP 目标MAC:RIP-MAC),封装发给后端Realserver
4.RealServer收报/拆包发现目标MAC是给自己的就会收下数据包。
5.RealServer会把需要回复的数据加入数据包中并修改数据包(源ip:VIP 源MAC:vip-MAC,目标ip:CIP 目标MAC:CIP-MAC),封包发给客户端

DR模式中后端RealServer为什么要抑制ARP广播

复制代码
arp工作在数据链路层和网络层,只有找到对方的MAC地址后才能进行TCP三次握手建立链接
当客户端发起arp广播时会询问"vip对应的MAC地址是谁?",LB和RS都有vip,都会对回复arp响应,这样就会出现数据包不经过lvs转发直接发送给后端RealServer的情况。

1、传统部署

lvs基于四层ip+端口转发,不支持基于url和目录的转发

一、准备环境

二、部署

1、LB部署脚本

复制代码
# yum -y install ipvsadm
# cat /usr/local/sbin/lvs_dr.sh 
#!/bin/bash
# 开启路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.1.200
rs1=192.168.1.11
rs2=192.168.1.12
#注意这里的网卡名字
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
# 让vip走虚拟网卡
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
------------------------------
-A: 表示添加一条虚拟服务器记录
-D: 表示删除虚拟服务ipvsadm -D -t 172.168.1.100:80 删除后它下面的规则也都没有了
-a: 表示添加一条真实服务器的映射规则
-d: 表示删除后端realserver,删除时不要指定权重和模式
-s:表示算法
-t: 表示增加tcp端口
-r:表示增加realserver地址和tcp端口
-g: 表示DR模式
-w: 表示权重

2、RealServer部署脚本

复制代码
# yum -y install nginx
# cat /usr/local/sbin/lvs_dr_rs.sh 
#/bin/bash                                                                               
vip=192.168.1.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
# 让vip走虚拟网卡
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

3、执行脚本

复制代码
[root@lb ~]# bash /usr/local/sbin/lvs_dr.sh
[root@web1 ~]# bash /usr/local/sbin/lvs_dr_rs.sh
[root@web2 ~]# bash /usr/local/sbin/lvs_dr_rs.sh

4、监控检测脚本

复制代码
# cat /usr/local/sbin/lvs_dr_check.sh 
#!/bin/bash
VIP=192.168.1.200:80
RIP1=192.168.1.11:80
RIP2=192.168.1.12:80
while true
do
    for IP in $RIP1 $RIP2
    do
        curl -s http://$IP > /dev/null 2>&1
        if [[ $? -eq 0 ]]
        then
            # 检测后端realserver没问题则加入集群
            ipvsadm -Ln |grep -q $IP || ipvsadm -a -t $VIP -r $IP
        else
            # 如果检测后端realserver有问题则踢出集群,删除的时候不要指定模式和权重
            ipvsadm -Ln |grep -q $IP && ipvsadm -d -t $VIP -r $IP
        fi
    done
    sleep 1
done

5、注意:不要在LB上用curl测试命令,因为每台服务器上都有vip,直接用curl访问是无法成功的,最好用客户端浏览器/cmd访问。(用linux做客户端最好没有缓存)

相关推荐
小网洞22 分钟前
免费WPA无线握手包在线分析跑包网站
网络·网络安全·密码学·wps
@insist1232 小时前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
极客互动API2 小时前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
QH139292318802 小时前
Keysight N5183B N5183B 微波模拟信号发生器
网络·单片机·嵌入式硬件·集成测试·信息与通信
LabVIEW开发2 小时前
基于原始套接字实现LabVIEW网络Ping检测的编程方法
网络·labview·labview知识·labview功能·labview程序
东莞和裕包装3 小时前
如何管控广州定制纸箱生产中的啤切精度与印刷色差质量问题
大数据·运维·网络·人工智能
Zguigo4 小时前
lesson19-23计算机网络数据链路层完全指南:从帧封装到滑动窗口协议
网络·计算机网络
Kina_C4 小时前
从零搭建Kubernetes集群:Harbor私有仓库 + K8s v1.35 + Flannel网络插件完整部署指南
网络·容器·kubernetes
明源云4 小时前
穿透式监管如何打破国有资产盘活困局?
大数据·网络·人工智能·架构
肠畔码农6 小时前
Redis 主从复制内核深潜:从物理模型到全量增量同步的本质
网络·redis·php