《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——3.2 DRDB的安装与配置

简介:

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

3.2 DRDB的安装与配置

3.2.1 安装环境说明
操作系统统一采用CentOS5.5-x86-64,安装环境如表3-1所示。
image

其中,主用节点和备用节点两块磁盘/dev/sdb1是未经格式化的物理磁盘分区,大小均为10GB。为了不浪费磁盘空间,建议主用节点和备用节点的镜像磁盘大小保持一致。
DRBD安装的基本拓扑信息如图3-2所示。

image

3.2.2 DRBD的安装部署
DRBD的安装非常简单,可以通过源码和yum源方式进行安装。简单起见,我们直接使用yum源方式来安装,其他系统基本类似。下面介绍具体的安装过程。
通过yum安装DRBD服务,执行如下命令:

[root@master-drbd ~]# yum -y install kmod-drbd83 drbd83

加载DRBD模块到内核:

[root@master-drbd ~]# modprobe  drbd

检查DRBD是否安装成功:

[root@master-drbd ~]# lsmod | grep -i drbd
drbd                  300440  0

查看drbd.ko安装的路径:

[root@master-drbd ~]# modprobe -l | grep -i drbd
/lib/modules/2.6.18-194.el5/weak-updates/drbd83/drbd.ko

安装成功之后drbd相关工具(drbdadm,drbdsetup)被安装在/sbin目录下面,并且会建立/etc/init.d/drbd启动脚本。
3.2.3 快速配置一个DRBD镜像系统
DRBD的配置文件主要分三个部分:global、common和resource。在运行时默认读取配置文件的路径是/etc/drbd.conf,这个文件描述了DRBD的一些配置参数以及DRBD设备与硬盘分区的映射关系,在默认情况下这个文件是空的,不过在DRBD的源代码包中包含了配置文件的样例。如果DRBD是通过yum源方式安装的,可以到对应的样例目录下去复制一份到/etc目录下。在本书的环境下,样例目录是/usr/share/doc/drbd83-8.3.13/。drbd.conf配置文件包含的内容如下:

include "/etc/drbd.d/global_common.conf";
include "/etc/drbd.d/*.res";

一般情况下,global_common.conf文件仅包含DRBD的global和common配置部分,而在/etc/drbd.d目录下还可以创建*.res的资源文件,只要所创建的文件是以文件名res结尾的,DRBD在启动的时候就会自动读取。将配置文件每个部分独立出来,这样做的好处是便于管理和维护。其实将DRBD所有配置部分都整合到一个单独的drbd.conf文件中也是可以的,不过,对于需要配置的资源比较多的情况,这样做就会变得混乱,难于管理。
为了讲述方便,下面我们将DRBD的所有配置都集中到一个配置文件中。下面是两台DRBD主机节点配置文件drbd.conf的简单示例。

[root@master-drbd ~]# cat /etc/drbd.conf
# drbd.conf
global {
usage-count no;    #是否参加DRBD使用者统计,默认参加
}
common {
syncer { rate 200M; }    #设置主用节点和备用节点同步时的网络速率最大值,单位是字节

}
resource r0 {    #资源名字为r0
protocol C;    #使用DRBD的第三种同步协议,表示收到远程主机的写入确认后认为写入完成
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
fence-peer "/usr/lib64/heartbeat/drbd-peer-outdater -t 5";
pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert' root";
split-brain "/usr/lib/drbd/notify-split-brain.sh root";
out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
}
net {
cram-hmac-alg "sha1";        # DRBD同步时使用的验证方式和密码信息
shared-secret "MySQL-HA";
}
disk {        # 使用dpod功能(drbd outdate-peer daemon)保证在数
        # 据不同步时不进行切换
on-io-error detach;
fencing resource-only;
}
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
device /dev/drbd0;
on master-drbd {        # 每个主机的说明以on开头,后面是hostname(uname -n),
        # 再后面的{}中为这个主机的配置
disk /dev/sdb1;        # /dev/drbd0使用的磁盘分区是/dev/sdb1
address 192.168.12.181:7788;    #设置DRBD的监听端口,用于与另一台主机通信
meta-disk internal;
}
on slave-drbd {
disk /dev/sdb1;        # /dev/drbd0使用的磁盘分区是/dev/sdb1
address 192.168.12.182:7788;    #设置DRBD的监听端口,用于与另一台主机通信
meta-disk internal;         # DRBD的元数据存放方式
}
}

将上面这个drbd.conf文件分别复制到两台主机的/etc目录下。drbd.conf的配置参数很多,有兴趣的读者可以使用命令“man drbd.conf”来查看了解更多的参数说明。

相关文章
|
9月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
2110 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
7月前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
818 0
|
8月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
6月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
762 11
|
6月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
589 2
|
8月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
8月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1448 1