DR模式介绍

news2024/9/21 11:06:37

DR模式

lvs的三种模式

nat:地址转换

DR模式:直接路由模式

tun:隧道模式

DR模式的特点

调度器在整个lvs集群当中是最重要的,在nat模式下,即负责接受请求,同时根据负载均衡的算法转发流量,响应发送给客户端

DR模式:调度器依然负责接收请求,同时也根据负载均衡算法转发到流量到RS,响应直接由RS响应给客户端

直接路由 Direct Routing 是一种二层转发模式,二层转发的是数据帧。根据原mac地址和目的mac地址进行转发

不会修改数据包源ip和目的ip,根据数据包mac地址进行转发

DR模式下,lvs也是维护一个虚拟的IP地址,所有请求都是发送到这个vip,既然是走二层转发,当客户端请求到达调度之后,根据负载均衡的算法选择一个RS,修改vip服务器的目的mac地址,RS处理完请求之后,根据报文当中客户端的源mac地址直接把响应发送到客户端即可,不需要走调度器了

1、调度器配置了vip,RS上也配置了vip地址

vip地址冲突,调度器和RS都在同一网段,ARP通信紊乱,因为整个局域网广播,所有设备都收到了

怎么把lo这个回环的响应把它屏蔽掉,只有本机的物理ip地址响应

修改内核参数

arp_ignore=1

系统的物理IP地址才会响应ARP请求,咯不会响应ARP请求

2、返回报文时,VIP地址还在,怎么样让客户端来接收到响应

arp_announce=2

系统不适用IP数据包的源地址来响应ARP请求,直接发送物理接口的IP地址。

节点服务器的配置:

DR模式的实现:

需要两台服务器

一个vip

一个调度器地址

一个客户端

在这里插入图片描述

安装ipvsadm

修改网卡

在这里插入图片描述

在这里插入图片描述

关闭转发功能

修改配置文件

etc/sysctl.cof

在这里插入图片描述
在这里插入图片描述

编辑的内容
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0


设置策略

先保存再重启

在这里插入图片描述

修改配置文件重新导出

在这里插入图片描述

在原有的基础上修改

修改vip的轮询算法和权重

在这里插入图片描述

修改两台服务器的显示内容

修改回环地址

在这里插入图片描述

在这里插入图片描述

route add-host 20.0.0.100 dev lo:0

设置ip地址为20.0.0.100添加到回环接口,作为lvs的vip。通过路由的模式转发到RS.能让vip识别到真实的服务器

在这里插入图片描述

-p让它生效

在这里插入图片描述

简述lvs的三种模式和他们的区别

lvs的三种工作模式:

NAT*DR*TUN
优点地址转换,配置简单性能最好WAN,可以实现较远距离数据包转送
缺点性能瓶颈不支持跨网段专用通道需要开通VPN(花钱)
RS要求无限制必须要禁止非物理接口的ARP响应要支持隧道模式
RS数量10-20台100台100台

在原有的基础上修改

修改vip的轮询算法和权重

lvs和nginx做负载均衡的区别

lvs是四层转发 内核态 ip+端口 四层代理

nginx 四层转发 也可以七层代理

lvs(DR模式)+nginx+tomcat

lvs实现四层转发+nginx实现四层转发(动态)

访问lvs的vip地址可以实现动静分离

在这里插入图片描述

实验

在这里插入图片描述

实现一主一备

两台机器

systemctl stop firewalld
[root@test2 ~]# setenforce 0
[root@test2 ~]# vim /etc/sysctl.conf 
[root@test2 ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
安装两个服务
yum -y install ipvsadm keepalived

添加策略更改权重

vim /etc/sysconfig/ipvsadm
[root@test2 ~]# systemctl restart ipvsadm
ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.80:80 -w 3
[root@test2 ~]# 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.80:80                 Route   3      0          0         
  -> 20.0.0.85:80                 Route   1      0          0         

修改配置文件

 pwd
/etc/keepalived
[root@test2 keepalived]# ls
keepalived.conf
[root@test2 keepalived]# 

可将58行以下全部删除

 8    }
  9    notification_email_from Alexandre.Cassen@firewall.loc
 10    smtp_server 192.168.200.1
 11    smtp_connect_timeout 30
 12    router_id lvs_01   修改名字可任意
 13    vrrp_skip_check_adv_addr
 14    vrrp_strict
 15    vrrp_garp_interval 0
 16    vrrp_gna_interval 0
 

 19 vrrp_instance VI_1 {
 20     state MASTER
 21     interface ens33   修改网卡
 22     virtual_router_id 10   主备保持一致
 23     priority 120    设置优先级
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }   
 29     virtual_ipaddress {
 30         20.0.0.100   修改vip地址
 31     }   
 32 }   
34 virtual_server 20.0.0.100 80 {   修改到服务器端口
 35     delay_loop 6
 36     lb_algo rr 
 37     lb_kind DR   将模式修改为DR
 38     persistence_timeout 50
 39     protocol TCP    

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

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

相关文章

OceanBase 社区版,搭建,安装,部署

这是阿里的数据库,因为我目前在杭州,所以企业用这个的比较多。 我看的版本是V4.3.1 官网概述解读 我看的是社区版 他是分布式关系型数据库,支持事务。兼容mysql语法,支持水平扩展,LSM数据压缩。 社区版&#xff0…

ROS的TF系统

一、SLAM 1、SLAM全称是Simultaneous Localization And Mapping,即同时定位与地图构建 2、SLAM软件包Hector_Mapping,←建图可参考链接所示文章 二、机器人定位 1、假设机器人开始建图的位置是地图坐标系的原点 2、则机器人在建图过程中的位置可以描…

qml:Material风格下改变控件的颜色

用过Material的都知道,所有控件的默认颜色是玫红色,如果要改变颜色,只需要加一句代码即可:Material.accent: "blue" 你可以将这句写在顶层,那就是所有颜色都改了,如果你单独写在某个控件下&…

【linux】Shell 脚本中的 For 循环详细用法教程

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

Elasticsearch详细介绍

B站对应视频: Elasticsearch01-01.为什么学习elasticsearch_哔哩哔哩_bilibili 大多数日常项目,搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的,存在很多问题。 首先,查询效率较低。 由于数据…

类和对象(初)

目录 一、面向过程和面向对象初步认识 二、类的引入 命名规则 三、类的定义 四、访问限定符 五、类的作用域 六、类的实例化 七.类对象模型 一、面向过程和面向对象初步认识 1.C语言是面向过程的,关注的是过程,分析出求解问题的步骤,…

开发个人Ollama-Chat--5 模型管理 (二)

开发个人Ollama-Chat–5 模型管理 (二) ChatGPT 这是该项目的最终效果,使用ollama的open-webui进行人与机器的对话功能,对话的后端服务则完全对接自己开发的Go项目。 如何实现呢?则通过这篇文章,一一给大家剖析后端的原理及功能…

【进阶篇-Day8:JAVA中递归、异常的介绍】

目录 1、递归的介绍和使用1.1 递归的介绍1.2 案例案例一:案例二:案例三:案例四: 1.3 总结 2、异常的介绍和使用2.1 异常的介绍:(1)能够看懂异常(2)异常的体系接口和分类&…

fortran快速排序算法,示例对一维数组进行排序

fortran快速排序算法,示例对一维数组进行排序 0. 引言1. 快速排序方法(QuickSqrt)代码实现2. 结语 0. 引言 快速排序(QuickSort)是一种常用的排序算法,采用分治策略实现。它的基本思想是通过一趟排序将待排序的数据分割成独立的两…

[笔试训练](三十六)106:提取不重复的整数107:哈夫曼编码108:abb

目录 106:提取不重复的整数 107:哈夫曼编码 108:abb 106:提取不重复的整数 题目链接:提取不重复的整数_牛客题霸_牛客网 (nowcoder.com) 题目: ​ 题解: #include <iostream> #include <string> using namespace std; int n0; int cnt[10]; int ret0; int mai…

MySQL CONCAT函数的简单使用

CONCAT函数用于将mysql中查询多列的值拼成一列显示&#xff0c; 使用示例&#xff1a; SELECT CONCAT(attr_name,"&#xff1a;",attr_value) FROM pms_sku_sale_attr_value WHERE sku_id1; 上面SQL语句使用CONCAT函数将attr_name、attr_value两列的值拼成一列&am…

【代码随想录】【算法训练营】【第62天】 [卡码108]冗余连接 [卡码109]冗余连接II

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 62&#xff0c;又是一个周一&#xff0c;ding~ 题目详情 [卡码108] 冗余连接 题目描述 卡码108 冗余连接 LeetCode类似题目684 冗余连接 解题思路 前提&#xff1a; 思路&#xff1a; 重点&a…

如何对odoo17网站cookies进行配置(How to configure cookies for Odoo 17 website?)

浏览器cookies具有缓存和加速的作用&#xff0c;odoo17 website 模块内置了cookies的选项: &#xff08;Browser cookies have the function of caching and acceleration, and the Odoo 17 website module has built-in options for cookies:&#xff09; 1、安装website模块后…

TCP传输控制协议

传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;由IETF的RFC 793[1]定义。 TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机…

【C++】哈希表的模拟实现及 unordered_set 和 unorderded_map 的封装

目录 前言一、哈希表的模拟实现1.1 哈希表的改造1.1.1 模板参数列表的改造1.1.2 增加迭代器操作 1.2 哈希表的模拟实现1.2.1 哈希表中仿函数的实现1.2.2 哈希表中节点类的实现1.2.3 哈希表中迭代器类的实现1.2.4 哈希表中构造函数、析构函数和 Clear() 函数的实现1.2.5 哈希表中…

JZ62 孩子们的游戏(圆圈中最后剩下的数)

题目来源&#xff1a;牛客 题目描述&#xff1a; 每年六一儿童节&#xff0c;牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中&#xff0c;有个游戏是这样的&#xff1a;首先&#xff0c;让 n 个小朋友们围成一个大圈&#xff0c;小朋友们的编号是0~n-1。然后&…

Git 课程任务

** ** https://github.com/InternLM/Tutorial/pull/905 https://github.com/onlyzer0/all_you_need/blob/main/README.md

Dify中固定递归字符文本分割器的chunk长度计算方式

本文主要从源码角度剖析了Dify中FixedRecursiveCharacterTextSplitter的chunk长度计算方式。 1.self._length_function(chunk) 源码位置:dify\api\core\splitter\fixed\_text\_splitter.py\FixedRecursiveCharacterTextSplitter类\split\_text方法\self.\_length\_function(…

实验9 存储过程与函数的创建管理实验

一、实验目的&#xff1a; 理解存储过程和函数的概念。掌握创建存储过程和函数的方法。掌握执行存储过程和函数的方法。掌握游标的定义、使用方法。 二、实验内容 1&#xff0e;某超市的食品管理的数据库的Food表&#xff0c;Food表的定义如表所示&#xff0c; Food表的定义…

GESP 2023年12月C++二级真题

参考程序1&#xff1a; #include<iostream> using namespace std;int first,second; int m,n; int sum 0;int fn(int n) {if(n1) {return first;} else if (n2) {return second;} else {return fn(n-1)fn(n-2);} } int main() {cin>>first>>second;cin>…