如何部署lvs负载均衡集群 DR模式

news2024/10/5 17:25:37

Lvs _DR 模式

也是最常见的lv负载方式 DR DIRECT ROUTING 直接路由模式

DR模式工作过程

1 .客户端请求vip

2、LVS的调度器接受请求之后,根据算法选择一台后端的真实服务器, 请求转发到后端RS,请求的报 文的目的MAC地址,修改成后端真实服务器的MAC地址。转发。

3、后端真实服务器接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的MAC地址修改成客户端的MAC地址。直接把响应报文转发到客户端。

4、调度器,后端真实服务器都有vip地址,调度的地址和后端真实服务器在同一网段。

DR模式的特点

1调度器的ip和真是服务器的ip必须在同一个物理网络中

2真实服务器的IP地址可以是私有地址,也可以是公网地址,如果配置的是公网,通过互联网直接可以访问RIP

3调度器只作为入口,但是不做网关(不转发数据包),要把服务器的转发功能关闭

4真实服务器的网关也不能指向调度器,真实服务器的数据不允许经过调度器

5后端真实服务器 基于lo接口配置vip 的Ip地址。

ARP协议:网络层协议将Ip地址解析为物理MAC地址

ARP 请求主机A和主机B

ARP解决局域网内部的通信,IP地址和MAC地址映射。

DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现

问题1:

由于调度器和后端真实服务器的都有相同的vip地址,导致响应冲突,ARP通信紊

对真实服务器进行处理,真实服务器不响应针对VIP的arp请求

VIP地址使用LO的虚拟地址:arp_ignore=1

后端真实服务器只响应目的IP为本地IP地址,也就是rip,后端服务器的真正IP地址 ens提供的地址

问题2;

返回报文使用的原地址还是vip,调度器也是vip怎么把响应返回到客户端不经过调度器呢后端真实服务器做一内核参数的优化,ARP_announce=2 系统不同使用ip数据吧的源地址,来设置arp 的请求 真实的物理网卡的地址

DR模式:核心就是响应客户端由后端的真实服务器完成,不需要经过调度器

vip地址,调度器和后端服务器都要有vip地址

 VIP地址:是暴露访问地址,调度器转发请求的标识,调度器和后端服务器进行通信,高可用dr 模式的高可用 其他所有的请求和响应都是禁用的

修改VIP的调度算法:

ipvsadm -E -t 192.168.233.100:80 -s wrr

修改权重:

TCP 192.168.233.100:80 wrr

#表示VIP地址,wrr负载均衡的调度算法

-> 192.1 68.233.20:80  Route 1 0 0

-> 192.1 68.233.30:80  Route 1 0 0

#指向后端的真实服务器

Forward:   

# 负载均衡算法和负载均衡方式。route 就是DR模式

weight:      

#后端服务器的轮询权重

ActiveConn:   

#活跃连接,表示调取器正在处理的活动连接数这些连接正在进行传输数据或者正在进行交互。

InActConn:    

#表示挡圈处于非活动状态的连接数。已经建立连接但是目前没有数据传输,第二个连接处于的等待状态。

DR实验步骤

如何实现DR模式的负载均衡:

调度器 20.0.0.20  

集群1 20.0.0.30

集群2 20.0.0.40

NFS 20.0.0.50

vip地址 20.0.0.100

客户机随机

20.0.0.20:

 systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# modprobe ip_vs

[root@localhost ~]# yum -y install ipvsadm

#配置公网vip地址

[root@localhost ~]# ifconfig ens33:0 20.0.0.100/24

[root@localhost ~]# ifconfig

#调度器的内核优化

[root@localhost ~]# vim /etc/sysctl.conf

#检测下

[root@localhost ~]# sysctl -p

调度器的内核优化

net.ipv4.ip_forward = 0

#关闭服务器作为网关的转发功能

net.ipv4.conf.all.send_redirects = 0

#控制是否发送icmp的重定向消息,禁止重定向

net.ipv4.conf.default.send_redirects = 0

#默认网络接口,就是调度器的网卡,发送icmp的重定向消息

net.ipv4.conf.ens33.send_redirects = 0

#指明网卡设备,ens33 不发送重定向消息

#调度器上配置策略  添加vip地址 指定算法

[root@localhost ~]# ipvsadm -A -t 20.0.0.100:80 -s rr

[root@localhost ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.30:80 -g

[root@localhost ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.40:80 -g

[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm

[root@localhost ~]# systemctl restart ipvsadm.service

#查询当前配置的策略

[root@localhost ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  127.0.0.1:80 rr

  -> 20.0.0.30:80                 Route   1      0          0

  -> 20.0.0.40:80                 Route   1      0          0

#删除重新配

[root@localhost ~]# ipvsadm -D -t 20.0.0.100:80

No such service

[root@localhost ~]# ipvsadm -D -t 127.0.0.1:80

[root@localhost ~]# ipvsadm -ln

#已删除

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

#添加真实服务器地址

[root@localhost ~]# ipvsadm -A -t 20.0.0.100:80 -s rr

[root@localhost ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.30:80 -g

[root@localhost ~]# ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.40:80 -g

[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm

[root@localhost ~]# systemctl restart ipvsadm.service

[root@localhost ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  20.0.0.100:80 rr

  -> 20.0.0.30:80                 Route   1      0          0

  -> 20.0.0.40:80                 Route   1      0          0

20.0.50

[root@www ~]# systemctl stop firewalld

[root@www ~]# setenforce 0

[root@www ~]# mkdir /opt/kgc

[root@www ~]# mkdir /opt/benet

[root@www ~]#

#配置共享目录

[root@www ~]# vim /etc/exports

/opt/kgc 20.0.0.0/24(rw,sync)

/opt/benet 20.0.0.0/24(rw,sync)

[root@www ~]# chmod 777 /opt/kgc/ /opt/benet/

[root@www ~]# systemctl restart rpcbind

[root@www ~]# systemctl restart nfs

[root@www ~]# exportfs -rv

exporting 20.0.0.0/24:/opt/benet

exporting 20.0.0.0/24:/opt/kgc

[root@www ~]# showmount -e

#设置页面

[root@www ~]# cd /opt

[root@www opt]# echo "this is kgc" > kgc/index.html

[root@www opt]# echo "this is benet" > benet/index.html

20.0.0.30

[root@localhost ~]# systemctl restart nginx

[root@localhost ~]# systemctl restart rpcbind

[root@localhost ~]# systemctl restart nfs

#暴露功能共享目录

[root@localhost ~]# showmount -e 20.0.0.50

Export list for 20.0.0.50:

/opt/benet 20.0.0.0/24

/opt/kgc   20.0.0.0/24

[root@localhost ~]# mount 20.0.0.50:/opt/kgc /usr/share/nginx/html/

[root@localhost ~]# curl 20.0.0.30

this is kgc

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# ls

#基于Lo 这个回环接口创建虚拟网卡 绑定vip

[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0

cp: overwrite ‘ifcfg-lo:0’? yes

[root@localhost network-scripts]# vim ifcfg-lo:0

#100dd

DEVICE=lo:0

ONBOOT=yes

IPADDR=20.0.0.100

NETMASK=255.255.255.255

#打开lo 已经有了

[root@localhost network-scripts]# ifup lo:0

[root@localhost network-scripts]# ifconfig

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 20.0.0.100  netmask 255.255.255.255

        loop  txqueuelen 1  (Local Loopback)

#把VIP的地址绑定到lo:0,作为LVs 的VIP地址,标识,告诉调度器,进行转发请求的ip 地址寻址

[root@localhost network-scripts]# route add -host 20.0.0.100 dev lo:0

#做内核化 只能让真实的ip地址作为访问请求 vip要给办掉

[root@localhost network-scripts]# vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

#设置lo接口忽略来自任何接口的ARP请求

net.ipv4.conf.lo.arp_announce = 2

设置lo接口仅会响应本地的IP地址,其他的接口ARP请求,全部忽略

net.ipv4.conf.all.arp_ignore = 1

所有接口忽略来自任务接口的ARP请求

net.ipv4.conf.all.arp_announce = 2

# 所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略

#查看内核优化文件

[root@localhost network-scripts]# sysctl -p

20.0.0.40

[root@localhost ~]# systemctl restart nginx

[root@localhost ~]# systemctl restart rpcbind

[root@localhost ~]# systemctl restart nfs

#暴露功能共享目录

[root@localhost ~]# showmount -e 20.0.0.50

[root@localhost ~]# mount 20.0.0.50:/opt/benet /usr/local/nginx/html/

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0

[root@localhost network-scripts]# vim ifcfg-lo:0

#100dd

DEVICE=lo:0

ONBOOT=yes

IPADDR=20.0.0.100

NETMASK=255.255.255.255

[root@localhost network-scripts]# ifup ifcfg-lo:0

[root@localhost network-scripts]# ifconfig

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 20.0.0.100  netmask 255.255.255.255

        loop  txqueuelen 1  (Local Loopback)

[root@localhost network-scripts]# route add -host 20.0.0.100 dev lo:0

回到30查看内核优化文件复制过来

[root@localhost network-scripts]# sysctl -p

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

#配置内核文件

[root@localhost network-scripts]# vim /etc/sysctl.conf

[root@localhost network-scripts]# sysctl -p

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同为科技(TOWE)大功率带机械联锁工业插头插座箱

所谓工业机械联锁开关插座&#xff0c;是一种工业用途插座&#xff0c;带有一个旋钮开关&#xff0c;通过旋钮开关可以控制电源的通断。其特点是具有联动锁定机构&#xff0c;当旋钮开关断开操作后&#xff0c;联动锁定机构会自动撤销限位&#xff0c;使插头能够插入或拔出。当…

RabbitMQ基础篇 笔记

RabbitMQ 余额支付 同步调用 一步一步的来&#xff0c;支付业务写完后&#xff0c;如果之后加需求&#xff0c;还需要增加代码&#xff0c;不符合开闭原则。 性能上也有问题&#xff0c;openfeign是同步调用&#xff0c;性能太差。 同步调用耦合太多。 同步的优势是可以立…

Node编写用户登录接口

目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token&#xff0c;如何编写注册接…

侯捷C++面向对象程序设计笔记(上)-Object Based(基于对象)部分

基于对象就是对于单一class的设计。 对于有指针的&#xff1a;complex.h complex-test.cpp 对于没有指针的&#xff1a; string.h string-test.cpp https://blog.csdn.net/ncepu_Chen/article/details/113843775?spm1001.2014.3001.5501#commentBox 没有指针成员——以复数co…

【单片机学习笔记】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc环境搭建

为摒弃在接受keil邮件&#xff0c;研究了下gun编译&#xff0c;以STM32F407为例&#xff0c;简单记录 1. 软件包准备 Git 选择对应版本直接安装即可https://git-scm.com/download/winmakegcc ​ 1&#xff09;将上述软件包放置于C盘根目录 2&#xff09;添加环境变量 3&am…

分类预测 | MATLAB实现SSA-CNN-BiLSTM-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现SSA-CNN-BiLSTM-Attention数据分类预测&#xff08;SE注意力机制&#xff09; 目录 分类预测 | MATLAB实现SSA-CNN-BiLSTM-Attention数据分类预测&#xff08;SE注意力机制&#xff09;分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MAT…

Android View拖拽startDragAndDrop,Kotlin

Android View拖拽startDragAndDrop&#xff0c;Kotlin import android.os.Bundle import android.util.Log import android.view.DragEvent import android.view.View import android.view.View.OnDragListener import android.view.View.OnLongClickListener import android.w…

Spring中方法拦截器

一、MethodInterceptor 在动态代理中要想添加一个额外功能&#xff0c;只要去实现MethodBeforeAdvice这个接口就行了&#xff0c;但是实现了这个接口的额外功能只能运行在目标类执行之前&#xff0c;如果是想在目标类执行之后呢&#xff1f;那这个需求就完成不了&#xff0c;所…

SpringBoot Lombok的使用

目录 下载Lombok插件 Lombok的用法 获取日志对象 生成get,set方法 Lombok框架的实现原理 Lombok的常用注解 下载Lombok插件 要使用Lombok首先要确保idea安装了lombok插件 在项目中添加 lombok依赖 在<dependency>里右键生成点击edit starters 插件(没有就下载,可…

行业模型应该如何去拆解?

行业模型应该如何去拆解&#xff1f; 拆解行业模型是一个复杂的过程&#xff0c;涉及对整个行业的深入分析和理解。下面是一些步骤和方法&#xff0c;可以帮助你系统地拆解行业模型&#xff1a; 1. 确定行业范围 定义行业&#xff1a;明确你要分析的行业是什么&#xff0c;包括…

寻找二叉树一个节点的后继节点

后继节点&#xff1a;中序遍历的后一个节点 普通二叉树&#xff1a;中序遍历得到一个list&#xff0c;时间复杂度O(n) 本题的二叉树&#xff1a;有父节点的指针&#xff0c;后继节点与原节点的距离为1&#xff0c;因此可以直接通过父节点找到下一个节点 优化&#xff1a;节点…

出差学小白知识No6:LD_PRELOAD变量路径不对找不到库文件

交叉编译的时候出现以下问题&#xff0c;显示LD_PRELOAD变量找不到路劲 首先先查看一下LD_PRELOAD的路径&#xff1a;echo $LD_PRELOAD 如果输出一大串&#xff0c;那么先进行清空&#xff1a;unset LD_PRELOAD 重新给LD_PRELOAD进行赋值他的路径和库文件&#xff1a; expor…

亚马逊、eBay、wish、Lazada、shoppe和mercari如何降低测评成本提高测评效率?

测评&#xff08;补单&#xff09;是跨境卖家在如亚马逊、Lazada、Shopee、wish、eBay、速卖通、阿里国际、沃尔玛、newegg、mercari等平台运营中不可或缺的需求。近年来&#xff0c;测评技巧在跨境卖家圈中越来越活跃。那么为什么跨境测评对于亚马逊卖家来说如此重要呢&#x…

【Leetcode】 213. 打家劫舍 II ?

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈&#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚…

Java反射实体组装SQL

之前在LIS.Core定义了实体特性&#xff0c;在LIS.Model给实体类加了表特性&#xff0c;属性特性&#xff0c;外键特性等。ORM要实现增删改查和查带外键的父表信息就需要解析Model的特性和实体信息组装SQL来供数据库驱动实现增删改查功能。 实现实体得到SQL的工具类&#xff0c…

视觉SLAM十四讲-第三讲三维刚体运动

什么是刚体运动以及三维空间中刚体运动描述方式有哪些&#xff1f; 两个坐标系之间的运动由一个旋转加上一个平移组成&#xff0c;这种运动称为刚体运动。描述三维空间中刚体运动的方式有旋转矩阵、旋转向量、欧拉角、四元数。 请描述左手坐标系和右手坐标系。 大拇指——y …

筹备三年,自动驾驶L3标准将至,智驾产业链的关键一跃

‍作者|张祥威 编辑|德新 多位知情人士告诉HiEV&#xff0c;智能网联汽车准入试点通知&#xff0c;乐观预计将在一个月内发布。试点的推动&#xff0c;意味着国家层面的自动驾驶L3标准随之到来。 「L3标准内容大部分与主机厂相关&#xff0c;由工信部牵头&#xff0c;找了几家…

电子企业MES管理系统体系架构与功能解析

随着科技的不断发展&#xff0c;电子企业对于生产过程的数字化需求日益增强。为了满足这一需求&#xff0c;许多企业开始引入MES&#xff08;制造执行系统&#xff09;来打造数字化车间&#xff0c;以改善车间的管理和生产等各环节。本文将详细介绍电子企业MES系统的体系架构和…

pythonselenium自动化测试实战项目

说明&#xff1a;本项目采用流程控制思想&#xff0c;未引用unittest&pytest等单元测试框架 一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不…

echarts 实现双Y轴刻度对齐

话不多说&#xff0c;直接上代码&#xff1a; min: min2, max: max2, splitNumber: 5, interval: (max2 - min2) / 5, const min1 this._getMinValue(dataArr1),min2 this._getMinValue(dataArr2),max1 this._getMaxValue(dataArr1),max2 this._getMaxValue(dataArr2); _g…