《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——第3章 数据安全工具DRBD、extundelete 3.1 数据镜像软件DRBD介绍

简介:

本节书摘来自华章计算机《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》一书中的第3章,第3.1节,作者:高俊峰著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章 数据安全工具DRBD、extundelete

3.1 数据镜像软件DRBD介绍

分布式块设备复制(Distributed Replicated Block Device,DRBD),是一种基于软件的、基于网络的块复制存储解决方案,主要用于对服务器之间的磁盘、分区、逻辑卷等进行数据镜像。当用户将数据写入本地磁盘时,还会将数据发送到网络中另一台主机的磁盘上,这样本地主机(主节点)与远程主机(备节点)的数据就可以保证实时同步,当本地主机出现问题,远程主机上还保留着一份相同的数据,可以继续使用,保证了数据的安全。
3.1.1 DRBD的基本功能
DRBD的核心功能就是数据的镜像,其实现方式是通过网络来镜像整个磁盘设备或磁盘分区,将一个节点的数据通过网络实时地传送到另一个远程节点,保证两个节点间数据的一致性,这有点类似于一个网络RAID1的功能。对于DRDB数据镜像来说,它具有如下特点:
实时性。当应用对磁盘数据有修改操作时,数据复制立即发生。
透明性。应用程序的数据存储在镜像设备上是透明和独立的。数据可以存储在基于网络的不同服务器上。
同步镜像。当本地应用申请写操作时,同时也在远程主机上开始进行写操作。
异步镜像。当本地写操作已经完成时,才开始对远程主机进行写操作。
3.1.2 DRBD的构成
DRBD是Linux内核存储层中的一个分布式存储系统,具体来说由两部分构成,一部分是内核模板,主要用于虚拟一个块设备;一部分是用户空间管理程序,主要用于和DRBD内核模块通信,以管理DRBD资源。在DRBD中,资源主要包含DRBD设备、磁盘配置、网络配置等。
一个DRBD系统有两个以上节点构成,分为主用节点和备用节点两个角色,在主用节点上,可以对DRBD设备进行不受限制的读写操作,可以用来初始化、创建、挂载文件系统。在备用节点上,DRBD设备无法挂载,只能用来接收主用节点发送过来的数据,也就是说备用节点不能用于读写访问,这样做的目的是保证数据缓冲区的一致性。
主用节点和备用节点不是固定不变的,可以通过手工方式改变节点的角色,备用节点可以升级为主用节点,同时主用节点也可以降级为备用节点。
DRBD设备在整个DRBD系统中位于物理块设备之上,文件系统之下,在文件系统和物理磁盘之间形成了一个中间层,当用户在主用节点的文件系统中写入数据时,数据被正式写入磁盘前会被DRBD系统截获,同时,DRBD在捕捉到有磁盘写入的操作时,就会通知用户空间管理程序把这些数据复制一份,写入远程主机的DRBD镜像,然后存入DRBD镜像所映射的远程主机磁盘。图3-1详细展示了DRBD系统的运行结构。

image

DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一台主机。另一台主机再将数据存到自己的磁盘中。目前,DRBD每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持两个节点进行读写存取。
3.1.3 DRBD与现在的集群的关系
DRBD由两个或两个以上节点构成,与HA集群类似,也有主用节点和备用节点之分,因而经常用于高可用集群和负载均衡集群系统中作为共享存储设备。由于DRBD系统是在IP网络中运行,所以,在集群中使用DRBD作为共享存储设备,不需要任何硬件投资,可以节约很多成本,因为在价格上IP网络要比专用的存储网络更经济。
另外,DRBD也可以用于数据备份、数据容灾等方面。
3.1.4 DRBD的主要特性
DRBD系统在实现数据镜像方面有很多有用的特性,我们可以根据自己的需要和应用环境,选择适合自己的功能特性。下面依次介绍DRBD几个非常重要的应用特性。
1 . 单主模式
这是使用最频繁的一种模式,主要用在高可用集群的数据存储方面,解决集群中数据共享的问题,在这种模式下,集群中只有一个主用节点可以对数据进行读写操作,可以用在这种模式下的文件系统有ext3、ext4、xfs等。
2 . 双主模式
这种模式只能在DRBD8.0以后的版本中使用,主要用在负载均衡集群中,解决数据共享和一致性问题。在这种模式下,集群中存在两个主用节点,由于两个主用节点都有可能对数据进行并发的读写操作,因此单一的文件系统就无法满足需求了,此时就需要共享的集群文件系统来解决并发读写问题。常用在这个模式下的文件系统有GFS、OCFS2等,通过集群文件系统的分布式锁机制就可以解决集群中两个主用节点同时操作数据的问题。
3 . 复制模式
DRBD提供了三种不同的复制方式,分别是:
协议A,只要本地磁盘写入已经完成,数据包已经在发送队列中,则认为一个写操作过程已经完成。
这种方式在远程节点故障或者网络故障时,可能造成数据丢失,因为要写入到远程节点的数据可能还在发送队列中。
协议B,只要本地磁盘写入已经完成,并且数据包已经到达远程节点,则认为一个写操作过程已经完成。
这种方式在远程节点发生故障时,可能造成数据丢失。
协议C,只有本地和远程节点的磁盘已经都确认了写操作完成,则认为一个写操作过程已经完成。
这种方式没有任何数据丢失,就目前而言应用最多、最广泛的就是协议C,但在此方式下磁盘的I/O吞吐量依赖于网络带宽。建议在网络带宽较好的情况下使用这种方式。
4 . 传输完整性校验
这个特性在DRBD8.2.0及以后版本中可以使用,DRBD使用MD5、SHA-1或CRC-32C等加密算法对信息进行终端到终端的完性验证。利用这个特性,DRBD对每一个复制到远程节点的数据都生成信息摘要,同时,远端节点也采用同样的方式对复制的数据块进行完整性验证,如果验证信息不对,就请求主节点重新发送。通过这种方式保证镜像数据的完整性和一致性。
5 . 脑裂通知和自动修复
由于集群节点间的网络连接临时故障、集群软件管理干预或者人为错误,导致DRBD两个节点都切换为主用节点而断开连接,这就是DRBD的脑裂问题。发生脑裂意味着数据不能从主用节点复制到备用节点,这样会导致DRDB两个节点的数据不一致,并且无法合并。
在DRBD8.0及更高版本,实现了裂脑自动修复功能,在DRBD8.2.1之后,又实现了裂脑通知特性,在出现脑裂后,一般建议通过手工方式修复脑裂问题,为了彻底解决脑裂问题。在某些情况下脑裂自动修复还是比较可取的,DRBD自动修复脑裂的策略如下:
丢弃比较新的主用节点所做的修改。在这种模式下,当网络重新建立连接并且发现了脑裂后,DRBD会丢弃自动切换到主用节点上的主机所修改的数据。
丢弃老的主用节点所做的修改。在这种模式下,DRBD会丢弃首先切换到主用节点上的主机所修改的数据。
丢弃修改比较少的主用节点的修改。在这种模式下,DRBD会首先检查两个节点的数据,然后丢弃修改比较少的主机上的数据。
一个节点数据没有发生变化的情况下完美修复脑裂。在这种模式下,如果其中一台主机在发生裂脑时没有发生数据修改,那么就可以完美解决脑裂问题。

相关文章
|
3月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
4月前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
672 0
|
6月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
755 0
|
7月前
|
Oracle 关系型数据库 Linux
VirtualBox 7.1.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件
VirtualBox 7.1.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件
459 0
VirtualBox 7.1.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件
|
9月前
|
人工智能 安全 搜索推荐
SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎
本文深入解析SecMulti-RAG框架,该框架通过整合企业内部知识库、预构建专家知识及受控外部大语言模型,结合保密性过滤机制,解决企业在部署AI助手时面临的信息准确性、数据安全性和成本控制问题。它采用多层策略,利用三种知识来源(动态更新的企业知识、专家预写知识和按需外部知识),并通过微调的开源LLM生成最终响应,确保安全性与性能。实验表明,SecMulti-RAG在汽车行业技术报告生成任务中显著优于传统RAG系统,展现了其在企业环境中的实用性和优势。
383 5
SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎
|
3月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
|
4月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
6月前
|
Linux API iOS开发
Blender 4.5 (Linux, macOS, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)
Blender 4.5 (Linux, macOS, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)
314 1
Blender 4.5 (Linux, macOS, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)
|
6月前
|
Linux iOS开发 MacOS
Krita 5.2.10 (Linux, macOS, Windows) - 开源免费绘画软件
Krita 5.2.10 (Linux, macOS, Windows) - 开源免费绘画软件
288 0
Krita 5.2.10 (Linux, macOS, Windows) - 开源免费绘画软件