CentOS6.6下DRBD+HeartBeat+NFS配置
一、DRBD配置
Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
我们可以理解为它其实就是个网络Raid 1,两台服务器间就算某台因断电或宕机也不会对数据有任何影响,而真正的热切换可以通过Heartbeat方案解决,不需要人工干预。
二、环境描述
系统版本:centos6.6 x64(内核2.6.32-504.16.2.el6.x86_64)
DRBD版本:DRBD-8.4.3
node1(主节点)IP: 192.168.0.191 主机名:drbd1.corp.com
node2(从节点)IP: 192.168.0.192 主机名:drbd2.corp.com
(node1) 仅为主节点配置
(node2) 仅为从节点配置
(node1,node2) 为主从节点共同配置
三、安装前准备:(node1,node2)
1、关闭iptables和SELINUX,避免安装过程中报错。
1 |
# service iptables stop |
2、配置hosts文件
1 |
# vi /etc/hosts |
3、在两台虚拟机分别添加一块10G硬盘分区作为DRBD设备磁盘,分别都为sdb1,大小10G,并在本地系统创建/store目录,不做挂载操作。
1 |
# fdisk /dev/sdb |
4、时间同步:
1 |
# ntpdate -u asia.pool.ntp.org |
四、DRBD的安装配置:
1、安装依赖包:(node1,node2)
1 |
# yum install gcc gcc-c++ make glibc flex kernel-devel kernel-headers |
2、安装DRBD:(node1,node2)
1 |
# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz |
3、加载DRBD模块:(node1,node2)
1 |
# modprobe drbd |
查看DRBD模块是否加载到内核:
1 |
# lsmod |grep drbd |
4、参数配置:(node1,node2)
1 |
# vi /usr/local/drbd/etc/drbd.conf |
清空文件内容,并添加如下配置:
1 |
resource r0{
|
注:请修改上面配置中的主机名、IP、和disk为自己的具体配置
5、创建DRBD设备并激活r0资源:(node1,node2)
1 |
# mknod /dev/drbd0 b 147 0 |
再次输入该命令:
1 |
# drbdadm create-md r0 |
6、启动DRBD服务:(node1,node2)
1 |
# service drbd start |
注:需要主从共同启动方能生效
7、查看状态:(node1,node2)
1 |
# service drbd status |
这里ro:Secondary/Secondary表示两台主机的状态都是备机状态,ds是磁盘状态,显示的状态内容为“Inconsistent不一致”,这是因为DRBD无法判断哪一方为主机,应以哪一方的磁盘数据作为标准。
8、将drbd1.example.com主机配置为主节点:(node1)
1 |
# drbdsetup /dev/drbd0 primary --force |
分别查看主从DRBD状态:
(node1)
1 |
# service drbd status |
(node2)
1 |
# service drbd status |
ro在主从服务器上分别显示 Primary/Secondary和Secondary/Primary
ds显示UpToDate/UpToDate
表示主从配置成功。
9、挂载DRBD:(node1)
从刚才的状态上看到mounted和fstype参数为空,所以我们这步开始挂载DRBD到系统目录/store
1 |
# mkfs.ext4 /dev/drbd0 |
注:Secondary节点上不允许对DRBD设备进行任何操作,包括挂载;所有的读写操作只能在Primary节点上进行,只有当Primary节点挂掉时,Secondary节点才能提升为Primary节点,并自动挂载DRBD继续工作。
成功挂载后的DRBD状态:(node1)
1 |
# service drbd status |
五、HeartBeat+NFS配置
1、安装heartbeat
1 |
# yum install epel-release -y |
2、设置heartbeat配置文件
(node1)
编辑ha.cf,添加下面配置:
1 |
# vi /etc/ha.d/ha.cf |
(node2)
编辑ha.cf,添加下面配置:
1 |
# vi /etc/ha.d/ha.cf |
3、编辑双机互联验证文件authkeys,添加以下内容:(node1,node2)
1 |
# vi /etc/ha.d/authkeys |
给验证文件600权限
1 |
# chmod 600 /etc/ha.d/authkeys |
4、编辑集群资源文件:(node1,node2)
1 |
# vi /etc/ha.d/haresources |
注:该文件内IPaddr,Filesystem等脚本存放路径在/etc/ha.d/resource.d/下,也可在该目录下存放服务启动脚本(例如:mysql,www),将相同脚本名称添加到/etc/ha.d/haresources内容中,从而跟随heartbeat启动而启动该脚本。
IPaddr::192.168.0.190/24/eth0:用IPaddr脚本配置对外服务的浮动虚拟IP
drbddisk::r0:用drbddisk脚本实现DRBD主从节点资源组的挂载和卸载
Filesystem::/dev/drbd0::/store::ext4:用Filesystem脚本实现磁盘挂载和卸载
5、编辑脚本文件killnfsd,用来重启NFS服务:(node1,node2)
1 |
# vi /etc/ha.d/resource.d/killnfsd |
赋予755执行权限:
1 |
# chmod 755 /etc/ha.d/resource.d/killnfsd |
六、创建DRBD脚本文件drbddisk:(node1,node2)
编辑drbddisk,添加下面的脚本内容
1 |
# vi /etc/ha.d/resource.d/drbddisk |
1 |
#!/bin/bash |
赋予755执行权限:
1 |
# chmod 755 /etc/ha.d/resource.d/drbddisk |
三、启动HeartBeat服务
在两个节点上启动HeartBeat服务,先启动node1:(node1,node2)
1 |
# service heartbeat start |
现在从其他机器能够ping通虚IP 192.168.0.190,表示配置成功
七、配置NFS:(node1,node2)
编辑exports配置文件,添加以下配置:
1 |
# vi /etc/exports |
重启NFS服务:
1 |
# service rpcbind restart |
注:这里设置NFS开机不要自动运行,因为/etc/ha.d/resource.d/killnfsd 该脚本会控制NFS的启动。
八、测试高可用
1、正常热备切换
在客户端挂载NFS共享目录
1 |
# mount -t nfs 192.168.0.190:/store /tmp |
模拟将主节点node1 的heartbeat服务停止,则备节点node2会立即无缝接管;测试客户端挂载的NFS共享读写正常。
此时备机node2上的DRBD状态:
1 |
# service drbd status |
2、异常宕机切换
强制关机,直接关闭node1电源
node2节点也会立即无缝接管,测试客户端挂载的NFS共享读写正常。
此时node2上的DRBD状态:
1 |
# service drbd status |
九、配置DRBD常见错误总结
问题1、’ha’ ignored, since this host (node2.centos.bz) is not mentioned with an ‘on’ keyword.?
错误信息:
执行指令 drbdadm create-md ha 时出现如下错误信息:
'ha' ignored, since this host (node2.centos.bz) is not mentioned with an 'on' keyword.
解决方法:
因为在 drbd 设定 drbd.conf 中 on 本来写的是 node1、node2 而以,将node1和node2分别改为node1.centos.bz,node2.centos.bz。
问题2、drbdadm create-md ha: exited with coolpre 20?
错误信息:
执行指令 drbdadm create-md ha 时出现如下错误信息:
open(/dev/hdb1) failed: No such file or directory
Command 'drbdmeta 0 v08 /dev/hdb1 internal create-md' terminated with exit coolpre 20
drbdadm create-md ha: exited with coolpre 20
解决方法:
因为忘了执行 fdisk /dev/hdb 指令建立分割区所造成,如下将 /dev/hdb 建立分割区后指令即可正常执行
# fdisk /dev/hdb //准备为 hdb 建立分割区
The number of cylinders for this disk is set to 20805.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n //键入 n 表示要建立分割区
Command action
e extended
p primary partition (1-4)
p //键入 p 表示建立主要分割区
Partition number (1-4): 1 //键入 1 为此主要分割区代号
First cylinder (1-20805, default 1): //开始磁柱值,按下 enter 即可
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-20805, default 20805): //结束磁柱值,按下 enter 即可
Using default value 20805
Command (m for help): w //键入 w 表示确定执行刚才设定
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@node1 yum.repos.d]# partprobe //使刚才的 partition table 变更生效
问题3、drbdadm create-md ha: exited with coolpre 40?
错误信息:
执行指令 drbdadm create-md ha 时出现如下错误信息:
Device size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command 'drbdmeta 0 v08 /dev/hdb1 internal create-md' terminated with exit coolpre 40
drbdadm create-md ha: exited with coolpre 40
解决方法:
使用 dd 指令将一些资料塞到 /dev/hdb 后再执行 drbdadm create-md ha 指令即可顺利执行
# dd if=/dev/zero of=/dev/hdb1 bs=1M count=100
问题4、DRBD 状态始终是 Secondary/Unknown?
错误信息:
Node1、Node2 主机启动 DRBD 后状态始终是 Secondary/Unknown
#service drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:16
m:res cs ro ds p mounted fstype
0:ha WFConnection Secondary/Unknown Inconsistent/DUnknown C
解决方法:
1、Node1、Node2 没有打开相对应的 Port,请开启相对应的 Port 或先把 IPTables 服务关闭即可。
2、可能发生了脑裂行为,一般出现在ha切换时,解决方法:
在一节点执行:
drbdadm secondary resource
drbdadm connect –discard-my-data resource
另一节点执行:
drbdadm connect resource
问题5、1: Failure: (104) Can not open backing device
错误信息:
执行drbdadm up r0时出现:
1: Failure: (104) Can not open backing device.
Command 'drbdsetup attach 1 /dev/sdb1 /dev/sdb1 internal' terminated with exit pre 10
解决方法:
可能因为你挂载了/dev/sdb1,执行umount /dev/sdb1即可。
CentOS6.6下DRBD+HeartBeat+NFS配置的更多相关文章
- 某电商网站线上drbd+heartbeat+nfs配置
1.环境 nfs1.test.com 10.1.1.1 nfs2.test.com 10.1.1.2 2.drbd配置 安装drbd yum -y install gcc gcc-c++ make g ...
- Centos6下DRBD的安装配置
导读 Distributed Replicated Block Device(DRBD)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案.数据镜像:实时.透明.同步(所有服务器 ...
- (转)CentOS6.5下Redis安装与配置
场景:项目开发中需要用到redis,之前自己对于缓存这块一直不是很理解,所以一直有从头做起的想法. 本文详细介绍redis单机单实例安装与配置,服务及开机自启动.如有不对的地方,欢迎大家拍砖o(∩_∩ ...
- 1.CentOS6.5下的基础DNS配置
常规DNS的安全和配置1.安装DNSyum -y install bind bind-utils安装后生成的文件,我们主要配置下面几个/etc/named.conf/var/named/xx这个xx是 ...
- 在Centos6.5下Samba的简单配置
本文的目的主要用来说明怎样在CentOS6.5的环境下配置出一个简单可用的samba服务,而且能够通过windows对其文件进行訪问 安装相关软件 # yum install samba samba- ...
- CentOS6.5下的Nagios安装配置详解(图文)
最近因为,科研需要,接触上了Nagios,这里,我将安装笔记做个详解.为自己后续需要和博友们学习! VMware workstation 11 的下载 VMWare Workstation 11的安装 ...
- CentOS6.5下Tomcat7 Nginx Redis配置步骤
所有配置均在一台机器上完成,部署拓扑信息如下: 注意:由于Redis配置对jar包和tomcat版本比较严格,请务必使用tomcat7和本文中提供的jar包.下载地址: http://pan.baid ...
- centos6.4下没有heartbeat包解决办法
1.在centos6.4 中使用yum install heartbeat,并没有发现heartbeat软件包 [root@master ~]# yum install heartbeat heart ...
- CentOS6.8下安装redis并配置开机自启动
参考资料:http://www.bubuko.com/infodetail-1006383.html http://www.cnblogs.com/skyessay/p/6433349.html ...
随机推荐
- bzoj 4569 [Scoi2016]萌萌哒 并查集 + ST表
题目链接 Description 一个长度为\(n\)的大数,用\(S_1S_2S_3...S_n\)表示,其中\(S_i\)表示数的第\(i\)位,\(S_1\)是数的最高位,告诉你一些限制条件,每 ...
- 转: Photoshop cs6 快捷键命令大全
转自: http://www.cnblogs.com/zhen656/p/4249759.html 工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具.单行单列 ...
- Linux中实现一个简单的进度条【转】
转自:http://blog.csdn.net/yuehailin/article/details/53999288 说起进度条,其实大家常常见到,比如说你在下载视频或文件的时候,提示你当前下载进度的 ...
- postman接口间关联
现有A.B两个接口,A接口返回的response的body中的部分数据,是B接口发起请求部分数据的来源. A接口response的body结构如下: { "address": &q ...
- 利用git把本地项目传到github+将github中已有项目从本地上传更新
利用git把本地项目传到github中 1.打开git bash命令行,进入到要上传的项目中,比如Spring项目,在此目录下执行git init 的命令,会发下在当前目录中多了一个.git的文件夹( ...
- Java易错知识点(2) - 在读取Cookie时除了Key,Value是得不到其他信息的
全文总结: 在读取Cookie,然后操作时,除了getName(),getValue()外,不要妄图得到其他信息,如下方法不会得到值的: cookie.getMaxAge(); cookie.getD ...
- 慎用Java递归调用
总结:慎用Java递归调用,测试时可以尝试该方法,否则尽量不要使用递归!递归过多调用时,最好改为for或者whlie来代替. 在java语言中,使用递归调用时,如果过多的调用容易造成java.lang ...
- 6.shell判断语句
[ condition ](注意condition前后要有空格),可以使用$?验证(0为true,>1为false) 两个整数的比较:=:字符串比较-lt:小于-gt:大于-le:小于等于-ge ...
- 3.资源调度框架yarn
既然要分析yarn,无非是从以下方面分析 (一).yarn产生背景(二).yarn概述(三).yarn架构(四).yarn执行流程(五).yarn环境搭建(六).提交作业到yarn上运行 (一).ya ...
- [ Openstack ] OpenStack-Mitaka 高可用之 概述
目录 Openstack-Mitaka 高可用之 概述 Openstack-Mitaka 高可用之 环境初始化 Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...