您的位置:首页 > 运维架构 > Linux

drdb+heartbeat+nfs实现Linux高可用群集(HA)

2012-10-18 00:33 681 查看
DRBD简介

Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。

数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)

DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。

DBRD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。

以上信息,来自于互联网,请尊重版权。接下来笔者将向您展示如何配置heartbeat+drbd的实例。

Drbd实验1





网络的初步配置

给node1配置IP地址,并启动网络服务

修改ip为 192.168.145.99 100





[root@localhost ~]# service network restart

改主机名字 node1.a.com

[root@localhost ~]# vim /etc/sysconfig/network

3 HOSTNAME=node1.a.com

[root@localhost ~]# hostname node1.a.com

注销重新登录,

高可用群集名称一定可以相互解析修改hosts文件

[root@node1 ~]# vim /etc/hosts

5 192.168.145.99 node1.a.com

6 192.168.145.100 node2.a.com

要求两个节点的时钟一致

[root@node1 ~]# hwclock –s

给node2配置IP地址,并启动网络服务

修改ip为 192.168.145.100





[root@localhost ~]# service network restart

改主机名字node2.a.com

[root@localhost ~]# vim /etc/sysconfig/network

3 HOSTNAME=node2.a.com

[root@localhost ~]# hostname node2.a.com

注销重新登录,

高可用群集名称一定可以相互解析修改hosts文件

[root@node1 ~]# scp /etc/hosts node2.a.com:/etc

[root@node1 ~]# vim /etc/hosts

5 192.168.145.99 node1.a.com

6 192.168.145.100 node2.a.com

要求两个节点的时钟一致

[root@node2 ~]# hwclock –s

创建一个扩展分区,用于保持数据同步

保持双方的的同步磁盘大小一致

在node1上,查看磁盘剩余未分区的磁盘容量。





创建出一个分区来,用于存储。

[root@node1 ~]# fdisk /dev/sda

Command (m for help): n 新建分区

Command action

e extended

p primary partition (1-4)

p 新建主分区

Selected partition 4

First cylinder (3954-6527, default 3954):

Last cylinder or +size or +sizeM or +sizeK (3954-6527, default 6527): +1G 大小设为1GB

Command (m for help): p 显示分区结果

Disk /dev/sda: 53.6 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 64 514048+ 83 Linux

/dev/sda2 65 3888 30716280 83 Linux

/dev/sda3 3889 3953 522112+ 82 Linux swap / Solaris

/dev/sda4 3954 4076 987997+ 83 Linux

Command (m for help): w 保存退出

The partition table has been altered!

[root@node1 ~]# partprobe /dev/sda 重新读取硬盘分区表,加载到内存

[root@node1 ~]# cat /proc/partitions

major minor #blocks name

8 0 52428800 sda

8 1 514048 sda1

8 2 30716280 sda2

8 3 522112 sda3

8 4 987997 sda4

147 0 987928 drbd0

在node2上,查看磁盘剩余未分区的磁盘容量





有空闲的磁盘,和node1一样,创建一个1GB的分区用于同步存储数据。

安装配置drbd的软件包,以内核模块的形式使用 两边都要安装

[root@node1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

[root@node1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

把drbd以模块的形式加载到内核

[root@node1 ~]# modprobe drbd

查看内核模块是否有drbd

[root@node1 ~]# lsmod |grep drbd

drbd 228528 0

编辑drbd的配置文件,在底行模式下读取需要帮助文件

[root@node1 ~]# vim /etc/drbd.conf

:r /usr/share/doc/drbd83-8.3.8/drbd.conf

[root@node1 ~]# cd /etc/drbd.d 备份这个文件,免得出错不好修复

[root@node1 drbd.d]# cp global_common.conf global_common.conf.bak

编辑

[root@node1 drbd.d]# vim global_common.conf

底行模式 使用命令1,$d 删除所有的行 添加一下内容

Protocol 协议

Startup 各种延迟

Disk 出错的协议

Net 加密 算法 密钥

Syncer 同步时的速率

global {

usage-count yes;

# minor-count dialog-refresh disable-ip-verification

}

common {

protocol C;

startup {

wfc-timeout 120;

degr-wfc-timeout 120;

}

disk {

on-io-error detach;

fencing resource-only;

}

net {

cram-hmac-alg "sha1";

shared-secret "mydrbdlab";

}

syncer {

rate 100M;

}

}

编辑资源文件,需要是 .res结尾的文件

[root@node1 drbd.d]# vim web.res

resource web {

on node1.a.com {

device /dev/drbd0;

disk /dev/sda5;

address 192.168.145.99:7789;

meta-disk internal;

}

on node2.a.com {

device /dev/drbd0;

disk /dev/sda5;

address 192.168.145.100:7789;

meta-disk internal;

}

}

在node2上,安装配置drbd,情况类似node1

把node1的drbd文件都拷贝到node2上

[root@node1 drbd.d]# scp * node2.a.com:/etc/drbd.d/

[root@node1 drbd.d]# scp /etc/drbd.conf node2.a.com:/etc/

前面的两边都要做完,才可以初始化,两边都要创建资源

[root@node1 drbd.d]# drbdadm create-md web

启动drbd服务,需要在两个服务器上同时启动

[root@node1 drbd.d]# service drbd start

查看谁是主设备primary secondary次设备 没有调整优先级前

[root@node2 drbd.d]# drbd-overview

0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----

使用命令在node1上 升级为主设备

[root@node1 drbd.d]# drbdadm -- --overwrite-data-of-peer primary web

再次查看时,node1已经升级了为了主设备









查看同步过程

[root@node1 drbd.d]# cat /proc/drbd





查看同步过程,1秒显示一次

[root@node1 drbd.d]# watch -n 1 'cat /proc/drbd'

查看节点1是主设备,节点2是次设备,在节点1上 做写操作





这个实验是单组模型,只有一个主设备

格式化这个设备,挂载设备

[root@node1 ~]# mkfs -t ext3 -L drbdweb /dev/drbd0

[root@node1 ~]# mkdir /mnt/1

[root@node1 ~]# mount /dev/drbd0 /mnt/1

[root@node1 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 29G 2.6G 25G 10% /

/dev/sda1 487M 16M 446M 4% /boot

tmpfs 127M 0 127M 0% /dev/shm

/dev/drbd0 950M 18M 885M 2% /mnt/1

测试

作适当的写操作 拷贝文件

[root@node1 ~]# cd /mnt/1

[root@node1 1]# cp /etc/passwd ./

由于node2是次设备,无法产看信息,

只有把node1的级别降为 次设备,就可以了

降级的方法,卸载,级别设为次

[root@node1 ~]# umount /mnt/1

[root@node1 ~]# drbdadm secondary web 降级为次设备





辅助设备是不能挂载,需要先升级为主设备,再挂载,就可以查看了

[root@node2 drbd.d]# dir /mnt/1

[root@node2 drbd.d]# drbdadm primary web

[root@node2 drbd.d]# mount /dev/drbd0 /mnt/1

进入挂载目录,查看同步过来的数据





在写操作,卸载,产看node1的变化
本文出自 “时大伟的博客” 博客,请务必保留此出处http://shdw1999.blog.51cto.com/5558851/1030233
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: