DRBD+HEARTBEAT+NFS高可用架构笔记

参考1:http://os.51cto.com/art/201412/461533.htm

参考2:http://732233048.blog.51cto.com/9323668/1669417

参考3:http://network.51cto.com/art/201010/230237_all.htm

网络拓扑:

简要说明:

两台 NFS 服务器,通过 eth0 网卡与内网的其他业务服务器进行通信,eth1网卡主要负责两台 NFS 服务器之间心跳通信,eth2网卡主要负责drbd数据同步的传输。

NFS 集群提供出来的一个VIP 192.168.1.160 来对外提供服务。

二、基础服务配置

1、配置时间同步

NFS1端:

[[email protected] ~]# ntpdate pool.ntp.org

NFS2端:

[[email protected] ~]# ntpdate pool.ntp.org

2、增加主机间路由 (选做)

首先先验证 M1 和 M2 的服务器 IP 是否合乎规划

   M1端:

[[email protected] ~]# ifconfig|egrep ‘Link encap|inet addr‘
[[email protected] ~]# ifconfig|egrep ‘Link encap|inet addr‘   
查看现有路由,然后增加相应的心跳线和drbd数据传输线路的端到端的静态路由条目。
目的是为了让心跳检测和数据同步不受干扰。

M1端:

route add -host 172.16.0.3 dev eth1
route add -host 172.16.100.3 dev eth2
echo ‘route add -host 172.16.0.3 dev eth1‘ >> /etc/rc.local
echo ‘route add -host 172.16.100.3 dev eth2‘ >> /etc/rc.local
traceroute 172.16.100.3

M2端:

和1 类似

三、部署 heartbeat 服务

此处仅演示 NFS1 服务端的安装,2 的不做复述。

1、安装heartbeat软件

[[email protected] ~]# cd /etc/yum.repos.d/    
[[email protected] yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo   
[[email protected] yum.repos.d]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm   
[[email protected] yum.repos.d]# sed -i ‘[email protected]#[email protected]@g‘ *   (待研究,不做可以)
[[email protected] yum.repos.d]# sed -i ‘[email protected]@#[email protected]‘ *   (待研究,不做可以)
[[email protected] yum.repos.d]# yum install heartbeat -y     # 该命令有时可能需要执行2次

2、配置heartbeat服务

[[email protected]  yum.repos.d]# cd /usr/share/doc/heartbeat-3.0.4/    
[[email protected] heartbeat-3.0.4]# ll |egrep ‘ha.cf|authkeys|haresources‘ 
[[email protected] heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/    
[[email protected] heartbeat-3.0.4]# cd /etc/ha.d/   
[[email protected] ha.d]# ls    authkeys ha.cf harc haresources rc.d README.config resource.d shellfuncs

注意:主备节点两端的配置文件(ha.cf,authkeys,haresource)完全相同,下面是各个节点的文件内容

针对heartbeat的配置,主要就是修改ha.cf、authkeys、haresources这三个文件,下面我列出这三个文件的配置信息,大家仅作参考!

ha.cf

debugfile /var/log/ha-debug
logfile    /var/log/ha-log
logfacility    local0
keepalive 2
deadtime 10
warntime 6
udpport    694
ucast eth0 192.168.1.168 
auto_failback on
node    fuzai01
node    fuzai02
ping 192.168.1.199
respawn hacluster /usr/lib64/heartbeat/ipfail

authkeys

auth 1
1 crc

haresources

fuzai01 IPaddr::192.168.1.160/24/eth0

注意:这个里的nfsd并不是heartbeat自带的,需要自己编写。

针对该脚本的编写需要满足一下需求:

1、有可执行权限

2、必须存放在/etc/ha.d/resource.d或/etc/init.d目录下

3、必须有start、stop这两个功能

具体脚本信息,下文会写。

4、启动heartbeat

[[email protected] ha.d]# /etc/init.d/heartbeat start
 Starting High-Availability services: INFO: Resource is stopped    Done.   
 [[email protected] ha.d]# chkconfig heartbeat off

说明:关闭开机自启动。当服务重启时,需要人工去启动。

5、测试heartbeat

在此步测试之前,请先在 M2 上操作如上步骤!

a、正常状态

[[email protected] ha.d]# ip a|grep eth1    
  
[[email protected] ha.d]# ip a|grep eth1

说明:M1主节点拥有vip地址,M2节点没有。

b、模拟主节点宕机后的状态

[[email protected] ha.d]# /etc/init.d/heartbeat stop    
Stopping High-Availability services: Done.    
[[email protected] ha.d]# ip a|grep em1    说明:M1宕机后,VIP地址漂移到M2节点上,M2节点成为主节点

c、模拟主节点故障恢复后的状态

[[email protected] ha.d]# /etc/init.d/heartbeat start    
Starting High-Availability services: INFO: Resource is stopped    Done.    
[[email protected] ha.d]# ip a|grep em1    
说明:M1节点恢复之后,又抢占回了VIP资源

四、DRBD安装部署

1、新添加(初始)硬盘

# fdisk /dev/sdb

----------------

n-p-1-1-"+1G"-w

----------------

# mkdir /data

2、安装drbd

针对drbd的安装,我们不仅可以使用yum的方式,还可以使用编译安装的方式。由于我在操作的时候,无法从当前yum源取得drbd的rpm包,因此我就采用了编译的安装方式。

[[email protected] ~]# yum -y install gcc gcc-c++ kernel-devel kernel-headers flex make   
[[email protected] ~]# cd /usr/local/src   
[[email protected] src]# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz    
[[email protected] src]# tar zxf drbd-8.4.3.tar.gz    
[[email protected] src]# cd drbd-8.4.3    
[[email protected] ha.d]# ./configure --prefix=/usr/local/drbd --with-km --with-heartbeat    
[[email protected] ha.d]# make KDIR=/usr/src/kernels/补齐/   
[[email protected] ha.d]# make install   
[[email protected] ha.d]# mkdir -p /usr/local/drbd/var/run/drbd    
[[email protected] ha.d]# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/    
[[email protected] ha.d]# chmod +x /etc/init.d/drbd    
[[email protected] ha.d]# modprobe drbd      # 执行命令加载drbd模块到内核   
[[email protected] ha.d]# lsmod|grep drbd     # 检查drbd是否被正确的加载到内核   
drbd 310236 3    libcrc32c 1246 1 drbd 

通过yum安装DRBD(推荐):(dbm135,dbm134)1234   
 [[email protected] ~]# cd /usr/local/src/
 [[email protected] src]# wget 
 [[email protected] src]# rpm -ivh elrepo-release-6-6.el6.elrepo.noarch.rpm
 [[email protected] src]# yum -y install  kmod-drbd84      #时间可能会比较长 
[[email protected] ~]# modprobe drbd       #加载drbd模块FATAL: Module drbd not found.    
    解决加载drbd模块失败:
        因为在执行yum -y install drbd83-utils kmod-drbd83时,
        对内核kernel进行了update,要重新启动服务器,更新后的内核才会生效

3、配置DRBD

有关DRBD涉及到的配置文件主要是global_common.conf和用户自定义的资源文件(当然,该资源文件可以写到global_common.conf中)。

注意:M1和M2这两个主备节点的以下配置文件完全一样

global {   
        usage-count no;    
}    
common {    
        protocol C;    
        disk {    
                no-disk-flushes;    
                no-md-flushes;    
        }    
        net {    
                sndbuf-size 512k;   
                max-buffers 8000;   
                unplug-watermark 1024;   
                max-epoch-size 8000;   
                after-sb-0pri disconnect;   
                after-sb-1pri disconnect;   
                after-sb-2pri disconnect;   
                rr-conflict disconnect;   
        }    
        syncer {    
                al-extents 517;   
        }   
}
vi /usr/local/drbd/etc/drbd.d/drbd.res
resource drbd {            
        on fuzai01 {                 
                device /dev/drbd0;            
                disk disk /dev/sdb1;
                address 172.16.100.2:7789; 
                meta-disk internal; 
        }    
        on fuzai02 {    
                device /dev/drbd0;    
                disk disk /dev/sdb1;
                address 172.16.100.3:7789;    
                meta-disk internal;    
        }    
}

4、初始化meta分区

[[email protected] drbd]# drbdadm create-md drbd    
Writing meta data...    initializing activity log    
NOT initializing bitmap    
New drbd meta data block successfully created.

5、启动drbd服务

此处,我们可以看下M1 和M2 启动drbd服务前后,drbd设备发生的变化

M1端:

[[email protected] drbd]# cat /proc/drbd       # 启动前 drbd 设备信息   
version: 8.4.3 (api:1/proto:86-101)    
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 
2014-11-11 16:20:26    
[[email protected] drbd]# drbdadm up all      # 启动drbd,这里也可以使用脚本去启动   
[[email protected] drbd]# cat /proc/drbd        # 启动后 drbd 设备信息   
version: 8.4.3 (api:1/proto:86-101)    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 
build by [email protected], 2014-11-11 16:20:26    0: cs:Connected ro:Secondary/Secondary 
ds:Inconsistent/Inconsistent C r-----    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
 ep:1 wo:d oos:133615596

M2端:

[[email protected] ~]# cat /proc/drbd

M1端:

[[email protected] drbd]# drbdadm -- --overwrite-data-of-peer primary drbd    
[[email protected] drbd]# cat /proc/drbd    version: 8.4.3 (api:1/proto:86-101)    
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 
2014-11-11 16:20:26    0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C 
r---n-    ns:140132 nr:0 dw:0 dr:144024 al:0 bm:8 lo:0 pe:17 ua:26 ap:0 
ep:1 wo:d oos:133477612    [>....................] sync‘ed: 0.2% (130348/130480)M  
  finish: 0:16:07 speed: 137,984 (137,984) K/sec

M2端:

[[email protected] ~]# cat /proc/drbd

M1端:

[[email protected] ~]# cat /proc/drbd
[[email protected] drbd]# mkfs.ext4 /dev/drbd0

M1端:

[[email protected] drbd]# dd if=/dev/zero of=/data/test bs=1G count=1   
 1+0 records in   1+0 records out    
 1073741824 bytes (1.1 GB) copied, 1.26333 s, 850 MB/s   
 [[email protected] drbd]# cat /proc/drbd    
 [[email protected] drbd]# umount /data/   
 [[email protected] drbd]# drbdadm down drbd    # 关闭名字为drbd的资源

M2端:

[[email protected] ~]# cat /proc/drbd    # 主节点关闭资源之后,查看备节点的信息,
可以看到主节点的角色已经变为UnKnown

五、NFS安装部署

该操作依旧仅以NFS1为例,2操作亦如此。

1、安装nfs

[[email protected] drbd]# yum install nfs-utils rpcbind -y   
[[email protected] ~]# yum install nfs-utils rpcbind -y

2、配置 nfs 共享目录

[[email protected] drbd]# cat /etc/exports    
/data 192.168.1.0/24(rw,sync,no_root_squash,anonuid=0,anongid=0)   
[[email protected] ~]# cat /etc/exports    
/data 192.168.1.0/24(rw,sync,no_root_squash,anonuid=0,anongid=0)

3、启动 rpcbind 和 nfs 服务

[[email protected] drbd]# /etc/init.d/rpcbind start;chkconfig rpcbind off    
[[email protected] drbd]# /etc/init.d/nfs start;chkconfig nfs off       
[[email protected] drbd]# /etc/init.d/nfs start;chkconfig nfs off

4、测试 nfs

[[email protected] ~] # mount -t nfs -o noatime,nodiratime 192.168.1.160:/data /xxxxx/    
[[email protected] ~] # df -h|grep data    
lost+found test   
[[email protected] data] # echo ‘nolinux‘ >> nihao   
[[email protected] data] # ls    
lost+found nihao test  
[[email protected] data] # cat nihao    
nolinux

六、整合Heartbeat、DRBD和NFS服务

未成功

时间: 2024-08-08 09:40:44

DRBD+HEARTBEAT+NFS高可用架构笔记的相关文章

drbd+heartbeat+nfs高可用架构搭建

一.客户需求 1.需求描述 有些客户有自己的存储设备,但是并没有集群文件系统服务,所以如果我们多个节点(计算节点)如果想同时使用其中的一个块且要保证高可用的话,就需要我们自己来完成类似集群文件系统的服务组合,在此我们使用的服务组合是:iscsi共享+drbd+heartbeat+nfs. 2.服务说明 Iscsi共享:这里通过iscsi共享服务将存储设备上的存储块共享出去,提供节点(NC1+NC2)使用,此处我们将在iscsi服务短创建两个镜像充当块设备. Drbd   :服务器之间镜像块设备内

DRBD+Heartbeat+NFS高可用实战

实验环境:Centos 6.7_64位 服务器: Master节点:dm1 IP地址:10.0.0.61(eth0) 192.168.3.150(eth1,心跳) Slave节点:dm2 IP地址:10.0.0.62(eth0) 192.168.3.160(eth1,心跳) VIP地址:192.168.0.180 一.DRBD环境搭建 1. host映射 # vi  /etc/hosts 127.0.0.1   localhostlocalhost.localdomain localhost4

DRBD项目实施之NFS高可用架构(NFS+Heartbeat+Drbd)

由于目前线上的两台NFS服务器,一台为主,一台为备.主到备的数据同步,靠rsync来做.由于数据偏重于图片业务,并且还是千万级的碎图片.在目前的业务框架下,NFS服务是存在单点的,并且数据的同步也不能做完全实时性,从而导致不能确保一致性.因此,出于对业务在线率和数据安全的保障,目前需要一套新的架构来解决 NFS 服务单点和数据实时同步的问题. 然后,就没有然后了. 下面是一个丑到爆的新方案架构图,已经在公司测试环境的部署,并且进行了不完全充分的测试. 架构拓扑: 简单描述: 两台 NFS 服务器

DRBD+Heartbeat+Mysql 高可用实战

实验环境:Centos 6.7_64位 服务器: Master节点:dm1 IP地址:10.0.0.61(eth0) 192.168.3.150(eth1,心跳) Slave节点:dm2  Ip地址:10.0.0.62(eth0) 192.168.3.160(eth1,心跳) VIP地址:192.168.0.180 一.DRBD环境搭建 DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的软件,用软件实现的.无共享的.服

15、 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

15. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 参考自:http://oldboy.blog.51cto.com/2561410/1240412 heartbeat和keepalived应用场景及区别 很多网友说为什么不使用keepalived而使用长期不更新的heartbeat,下面说一下它们之间的应用场景及区别: 1.对于web,db,负载均衡(lvs,haproxy,nginx)等,heartbeat和keepalived都可以实现 2.lvs最好和keepa

Heartbeat+Drbd+NFS高可用实现

继续之前的操作,来完成heartbeat+drbd+nfs高可用的实现. heartbeat+drbd还是使用原来的环境即可,然而需要添加一台nfs客户端,客户端的信息如下: 主机名 IP地址 角色 server136.contoso.com 192.168.49.136 nfs客户端 一.环境准备 1)注意:因为我的客户端是192.168.49.0/24端,所以这里需要把VIP改为这个网段,所以先修改两个节点的haresources文件,将VIP修改为192.168.49.100.可以根据实际

DRBD+HeartBeat+NFS:配置NFS的高可用

说明: 上周研究了DRBD的安装和配置,今天研究下DRBD的第一个应用,利用DRBD+HeartBeat+NFS:配置NFS的高可用,作为集群中的底端共享存储 NFS主要存储WEB服务器上的程序代码和一些图片文件 参考: http://network.51cto.com/art/201010/230237_all.htm http://showerlee.blog.51cto.com/2047005/1212185 环境: [[email protected] ~]# cat /etc/issu

(转)Heartbeat+DRBD+NFS高可用案例

原文:http://9861015.blog.51cto.com/9851015/1939521--------------------------------Heartbeat+DRBD+NFS高可用案例 9.4 部署DRBD 的需求描述 9.4.1业务需求描述 假设两台服务器Rserver-1/Lserver-1, 其实际IP分别为192.168.236.143(Rserver)和192.168.236.192(Lserver) 配置目标:两台服务器分别配置好DRBD服务后.实现在Rserv

Heartbeat+Drbd+Mysql主从高可用实现

在上一篇中已经实现了MySQL服务的高可用,MySQL的数据目录放在drbd的共享目录中,并且只有获取到heartbeat资源的VIP才能挂载共享目录,从而启动MySQL服务,但是两端的数据使用drbd同步,保证发生故障时,服务和资源能够从一个节点切换到另外一个节点,下面是一个简略的架构图: 对于MySQL服务,一般在生产环境中都要做主从结构,从而保证数据的完整性,所以这次要在这个架构的前提下,在两个heartbeat节点下再部署一台MySQL从库,而主库是heartbeat集群中的一台(主库的