当前位置: 首页 > article >正文

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做客户端最好没有缓存)
在这里插入图片描述


http://www.kler.cn/a/379148.html

相关文章:

  • html简易流程图
  • 使用onnxruntime c++ API实现yolov5m视频检测
  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • LeetCode 19. 删除链表的倒数第 N 个结点(java)
  • Python | Leetcode Python题解之第530题二叉搜索树的最小绝对差
  • 深度学习基础—语言模型和序列生成
  • 21 Docker容器集群网络架构:四、Docker集群网络验证
  • 在k8s环境中如何在本地和pod之间同步文件?
  • 基于微信小程序的生签到系统设计与实现(lw+演示+源码+运行)
  • 一键式配置适合 Web 开发的Ubuntu系统
  • 采用SpeedL模式控制UR5e机器人
  • HarmonyOS开发 - 餐饮APP中多门店多窗口打开实例补充
  • Unity简易版成就系统
  • FPGA 开发相关的资源
  • 如何实现视频人声分离?实用方法分享
  • Windows 部署非安装版Redis
  • 代码随想录八股训练营 | 面试高频八股(测开部分)
  • MathType在Word中的安装与配置记录
  • IMU应用于监测进食
  • 【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入
  • 如何选择和利用低代码无代码平台实现企业数字化转型?
  • 【论文复现】ChatGPT多模态命名实体识别
  • 单例模式四种写法
  • 防抖与节流 - 2024最新版前端秋招面试短期突击面试题【100道】
  • 人脑与机器连接:神经科技的伦理边界探讨
  • 编程语言的设计模式