- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
3.2 DRDB 的安装与配置
3.2.1 安装环境说明
操作系统统一采用 CentOS5.5-x86-64,安装环境如表 3-1 所示。
表 3-1 DRDB 的安装环境
其中,主用节点和备用节点两块磁盘/dev/sdb1 是未经格式化的物理磁盘分区,大小均为 10GB。为了不浪费磁盘空间,建议主用节点和备用节点的镜像磁盘大小保持一致。
DRBD 安装的基本拓扑信息如图 3-2 所示。
图 3-2 DRBD 安装拓扑
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”来查看了解更多的参数说明。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论