充分利用 AIStor 的网络配置

AIStor 可以以分布式方式部署,从而有效利用多个物理机或虚拟机的计算和存储资源。这可以是在私有云或公共云环境中运行的 AIStor,例如使用 Amazon Web Services、Google Cloud Platform、Microsoft 的 Azure 平台等。AIStor 可以部署到多种类型的拓扑 – 在生产环境中,我们建议使用多节点多驱动器 (MNMD) 部署。AIStor 建议站点复制为您的单站点部署提供 BC/DR 级故障转移和恢复支持,您可以针对您的使用案例进行设计和优化。在之前的博客文章中,我们已经讨论了为 AIStor 部署选择硬件时要使用的一些最佳实践。我们谈到了硬件的各个方面,从选择最佳区域、正确的驱动器、CPU 和内存配置,甚至一些推荐的网络配置。虽然我们触及了系统设计的广泛不同最佳实践,但我们总是可以更深入地探讨,今天我们将深入探讨设计 AIStor 的一些细节,以充分利用驱动器和网络。在这篇博文中,我们将深入探讨网络配置,您可以使用这些配置将 AIStor 配置为不同的复制策略和网络拓扑,这些策略和拓扑可用于确保在多个 AIStor 部署中高效存储和访问数据。您无需执行任何复杂的配置,例如设置绑定/双 NIC(这会增加额外的开销)。
简单的网络策略
AIStor 是用于云原生服务的 S3 兼容存储后端。通常,我们认为网络流量是应用程序与集群之间或集群中节点之间的网络流量。由于节点间流量,节点之间的联网速度必须尽可能快。每个池都由一组独立的节点组成,这些节点具有自己的纠删集。AIStor 必须查询每个池以确定它将读取和写入操作定向到的正确擦除集,以便每个额外的池每次调用增加的节点间流量最小,但会增加。然后,包含正确纠删集的池将响应该操作,对应用程序保持完全透明。企业可以使用 1 GbE 或 10 GbE NIC 的日子已经一去不复返了。现代企业工作负载理想情况下利用 100 GbE NIC。考虑到 TCP 协议的物理特性和开销的限制,这些 NIC 预计将提供 80-90% 的可用带宽,对于 100 Gbps NIC,通常约为 10GB/s,在真正配置良好的网络上最高可达 12GB/s。AIStor 不需要任何开箱即用的额外网络配置即可利用所有带宽,因为它侦听所有接口。开箱即用的 AIStor 支持侦听多个网络接口 (NIC)。您不需要任何其他特殊配置 AIStor 网络,但可以选择使用我们之前讨论的一些网络基础知识,您可以通过特定接口路由 AIStor 流量。在此示例中,我们将使用 Linux 操作系统进行演示,但无论您使用哪种操作系统,网络基础知识都是相同的。根据网络配置的不同,实现可能略有不同,但这应该会给您一个概念。
我们首先列出路由表
…
$ IP 路由
10.56.98.0/24 dev eth0 proto 内核范围 link src 10.56.98.18
…
如果您已将 AIStor 服务器配置为在 10.56.98.16/28 CIDR 范围内,则假设 AIStor 节点的 IP 地址之一是 10.56.98.21,该地址将通过 eth0 接口路由,因为 /28 与 10.56.98.0/24 的路由表条目匹配。但是,如果您想通过 eth1 而不是 eth0 路由 AIStor 流量,我们需要为 AIStor CIDR 添加特定路由,以便与该子网匹配的任何流量都通过该特定网络接口路由
…
$ ip 路由添加 10.56.98.16/28 dev eth1
…
添加路由后,让我们再次列出路由表,看看它是什么样子的
…
$ IP 路由
10.56.98.0/24 dev eth0 proto kernel scope link src 10.56.98.33.18
10.56.98.16/28 dev eth1 范围 link
…
现在,我们看到 /28 CIDR 的路由。如果您 ping AIStor 节点 10.56.98.21,它现在将通过 eth1 接口路由。这是因为当有两条路由的 /24 与 /28 重叠时,通常优先考虑前缀最长的路由(在本例中为 /28),并且在路由流量时将优先于任何其他较短的前缀路由。这称为 longest-matching prefix rule(最长匹配前缀规则)。如果您 ping 10.56.98.21,然后检查 tcpdump,则可以验证来自 10.56.98.16/28 的流量是否被正确路由,如下所示。您会注意到,来自源 10.56.98.18 的流量通过 eth1 路由到 10.56.98.21。
…
$ tcpdump -n -i eth1 icmp
…
15:55:44.410450 IP 10.56.98.18 > 10.56.98.21:ICMP 回显请求,ID 8416,序列 123,长度 64
15:55:44.410471 IP 10.56.98.21 > 10.56.98.18:ICMP 回显回复,ID 8416,序列 123,长度 64
15:55:45.434489 IP 10.56.98.18 > 10.56.98.21:ICMP 回显请求,ID 8416,序列 124,长度 64
15:55:45.434518 IP 10.56.98.21 > 10.56.98.18:ICMP 回显回复,ID 8416,序列 124,长度 64
15:55:46.458490 IP 10.56.98.18 > 10.56.98.21:ICMP 回显请求,ID 8416,序列 125,长度 64
15:55:46.458520 IP 10.56.98.21 > 10.56.98.18:ICMP 回显回复,ID 8416,序列 125,长度 64
正如您所看到的,使用 AIStor 不需要额外的特殊端口或服务来实现流量分离。AIStor 在设计时考虑到了简单性,在这种情况下,我们一直在考虑构建与购买,而不是构建像网关服务这样复杂的东西,AIStor 利用操作系统层已经可用的网络基础,以尽可能少的开销实现相同的结果。我们可以将这个想法更进一步。如今,服务器至少有 2 个接口,可以选择添加更多接口。因此,您可以让您的应用程序也在单独的 CIDR 块上运行(选择适合您的应用程序大小的块),而不是让应用程序流量通过与 AIStor 相同的接口。这种分离可确保用于复制和再平衡的 AIStor 流量不会影响应用程序的性能,反之亦然。它还使您能够监控和跟踪流量,以确保 AIStor 始终拥有执行操作所需的容量和带宽,而不会影响其性能。但是,如果您在不同的站点或地区拥有 AIStor,该怎么办?如何有效地配置它以确保没有性能瓶颈?AIStor 为一些最严格的使用案例提供了几种不同类型的复制配置。最多产的复制策略之一是站点到站点复制。这允许您使用单个集群启动 AIStor,并随着需求的增加扩展到 N 个数字。假设您有一个在 3 个不同站点上运行的 ETL/ELT 应用程序。通常,数据仅在其中一个区域可用,而其他区域需要跨区域提取大量数据才能运行其进程。毋庸置疑,这不仅效率非常低下,而且会给网络基础设施带来巨大压力,并可能给共享 WAN 的其他应用程序带来瓶颈。
在站点到站点复制配置中,您只需将数据写入第一个站点中的 AIStor 集群。复制过程会自动将数据复制到其他站点。无需对 ETL/ELT 应用程序进行其他更改。您只需将每个站点中的作业指向其各自的 AIStor 集群,该集群由反向代理(如 Nginx)提供支持,读取速度将比跨区域 WAN 读取快得多,如下所示。
但这就引出了一个问题,是否有可能进一步微调流量?假设您将数据文件添加到站点 1,则无论一天中的什么时间,它都会立即将其复制到其他站点。可能是在高峰期,此时其他 ETL/ELT 作业可能正在运行,同时网络资源被用于复制数据,这些数据可能要到第二天下一批应该运行时才会使用。在这种情况下,我们能做些什么呢?这就是 AIStor 的批量复制派上用场的地方。批量复制允许您选择要在特定时间复制的数据类型,它是完全可配置的。在这种情况下,可以将批量复制作业设置为在流量最低的空闲时间运行。由于应用程序访问时间在一天、一周甚至一个月中都可能有所不同,因此监控 AIStor 网络流量就派上用场了,因此您可以配置批处理作业以在正确的时间运行。您可以在不同的机架、数据中心或地理区域中部署对等站点,以支持全球分布式 AIStor 对象存储中的 BC/DR 或地理本地读/写性能等功能。
最后的思考
回顾一下,AIStor 的网络架构是目前最简单明了的网络架构之一。AIStor 没有重新发明轮子,而是使用网络基础知识来实现与其他一些数据存储的奇偶校验,这些数据存储具有复杂的网络和网关设置,几乎不可能调试。无论您调试同一问题多少次,由于架构的混淆性质,您都会感觉这是您第一次遇到它。相反,AIStor 专注于更高级别的抽象,这些抽象减轻了应用程序开发人员的负担,使其不必维护数据复制,而是专注于存储和处理数据。
相关文章:

充分利用 AIStor 的网络配置

算法题(10):好数
审题: 需要判断出1-N的范围内有多少个好数,并输出 思路: 遍历数据:需要用for循环(从1循环到N) 每一位判断:用while循环,先从个位开始,每循环一次就让记录位数的变量&…...
使用二分查找法找出给定点距离给定点集合距离最近的点
1、场景描述 给定点Point A (x,y)和 直线点集合 Points [(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)......],计算出集合中距离点A最近的一个点 (如果集合中的两个点距离A点最近且相等,则只取其中一个) 2、代码&#x…...

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案
随着科技高速发展,视频信号经过数字压缩,通过互联网宽带或者移动4G网络传递,可实现远程视频监控功能。将这一功能运用于施工现场安全管理,势必会大大提高管理效率,提升监管层次。而这些,通过Liveweb监控系统…...

构建MacOS应用小白教程(打包 签名 公证 上架)
打包 在package.json中,dependencies会被打进 Electron 应用的包里,而devDependencies则不会,所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …...

Nginx 双向链表 ngx_queue_t
目录 一、基本概述 二、数据结构 三、接口描述与实现 1、相关宏接口 2、ngx_queue_middle 3、ngx_queue_sort 四、使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx:模块开发与架构解析》 一、基本概述 双向链表的优势是可以快速进行数据插入、删除与…...

【vue】npm install 报错 python2 Error: not found: python2
如图所示,vue项目在下载依赖的时候报错找不到python2,有网友通过下载python2.7并配置环境变量解决了,这里有两个其他自测可用的方式,供各位作为参考。 报错的主要原因是因为【sass-loader】【node-sass】这两个依赖跟nodejs版本有…...
CS 144 check3: the TCP sender
Lecture Notes 略 Exercises 现在,在check3中,您将实现连接的另一边。 TCPSender是一种工具,它从出站字节流转换为将成为不可靠数据报的有效负载的段。 TCP sender的任务是确保receiver至少收到每个bytes一次。任务: 1、跟踪…...

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。
网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…...

Tomato 靶机(通关攻略)
点击开启靶机 去kali终端输入 arp-scan -l //扫描靶机IP 扫出靶机IP192.168.131.171 第一步:信息收集 端口扫描 nmap -p- 192.168.131.171 敏感目录扫描 dirb http://192.168.131.171 总结: IP:192.168.168.131 开放端口:2…...

服务器被入侵登录不上怎么办?
在数字化时代,服务器作为数据存储与业务运行的核心载体,其安全性直接关系到企业的生死存亡。然而,随着网络攻击手段的不断升级,服务器被入侵的事件屡见不鲜,导致系统瘫痪、数据泄露等严重后果。当您发现自己的服务器被…...

达梦官方工具 SQLark数据迁移(oracle->达梦数据库)
应国产化需求需要,需将系统中涉及的各中间件替换成国产中间件,此文介绍了从Oracle迁移数据至达梦dm8的步骤,该文在windos环境下已验证测试过 1 SQLark介绍 SQLark是一款专为信创应用开发者设计的数据库开发和管理工具。它支持快速查询、创建和管理多种类型的数据库系统…...

redis数据类型:list
list 的相关命令配合使用的应用场景: 栈和队列:插入和弹出命令的配合,亦可实现栈和队列的功能 实现哪种数据结构,取决于插入和弹出命令的配合,如左插右出或右插左出:这两种种方式实现先进先出的数据结构&a…...
.NET周刊【12月第2期 2024-12-08】
国内文章 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名) https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系统由.net core和WPF开发,旨在开放、开源、共享。开发者为解决360与其他国产管家的误…...

C#—扩展方法
扩展方法 扩展方法是C#中一种特殊的静态方法,它定义在一个静态类中,但是可以像实例方法一样被调用,使得代码看起来更为直观和易于阅读。扩展方法允许你在不修改原始类的情况下,添加新的方法到现有的类型中。 有↓箭头的是扩展方…...

金碟中间件-AAS-V10.0安装
金蝶中间件AAS-V10.0 AAS-V10.0安装 1.解压AAS-v10.0安装包 unzip AAS-V10.zip2.更新license.xml cd /root/ApusicAS/aas# 这里要将license复制到该路径 [rootvdb1 aas]# ls bin docs jmods lib modules templates config domains …...
sql server 查询对象的修改时间
sql server 不能查询索引的最后修改时间,可以查询表,存储过程,函数,pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间,因为索…...

Qt之串口设计-线程实现(十二)
Qt开发 系列文章 - Serial-port(十二) 目录 前言 一、SerialPort 二、实现方式 1.创建类 2.相关功能函数 3.用户使用 4.效果演示 5.拓展应用-实时刷新 总结 前言 Qt作为一个跨平台的应用程序开发框架,在串口编程方面提供了方便易用…...

探索 Seaborn Palette 的奥秘:为数据可视化增色添彩
一、引言 在数据科学的世界里,视觉传达是不可或缺的一环。一个好的数据可视化不仅能传递信息,还能引发共鸣。Seaborn 是 Python 中一款广受欢迎的可视化库,而它的调色板(palette)功能,则为我们提供了调配绚…...
Linux创建普通用户和修改主机名
创建修改用户名和用户组 工作组相关命令 功能命令说明切换用户su username注销用户logout新建用户adduser username 创建用户并分配到用户组useradd -g test username 设置用户密码passwd username查看某一用户w username查看登录用户w查看登陆用户并显示IPwho查看登录历史…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...