生产环境有用drbd同步带生产厂家么

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
吾生有涯,而知无涯……
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
在实际使用的过程中,有时候会需要根据实际情况临时调整同步速率,比如,希望加快后台同步,就是说在某种情况下希望加快后台皇亲同步或者同步的速率,也有可能是由于前台应用访问频繁,需要减小后台同步的速率。# drbdadm disk-options --resync-rate=110M &resource&# & &drbdadm adjuse &resource&以上命令只需在一台机器上执行即可
阅读(173)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'DRBD临时更改同步速率',
blogAbstract:'\t在实际使用的过程中,有时候会需要根据实际情况临时调整同步速率,比如,希望加快后台同步,就是说在某种情况下希望加快后台皇亲同步或者同步的速率,也有可能是由于前台应用访问频繁,需要减小后台同步的速率。# drbdadm disk-options --resync-rate=110M &resource&# & &drbdadm adjuse &resource&以上命令只需在一台机器上执行即可',
blogTag:'drbd',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'吾生有涯,而知无涯……',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
家境小康, 积分 1864, 距离下一级还需 136 积分
论坛徽章:0
比如蛮小的一个mysql应用,用户也没有磁盘阵列,但是要求有HA,就采用了drbd来进行数据同步,再加上和Heartbeat集成的也不错,就采用了。
大家还有用drbd的么?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
腰缠万贯, 积分 9516, 距离下一级还需 484 积分
论坛徽章:0
回复 #1 rainbow 的帖子
1.你的方案是mysql官方赞成的.不会有问题的.
论坛徽章:0
回复 #1 rainbow 的帖子
这个是一个mysql复制中的主的高可用,加多个从,是很多机构都采用的
论坛徽章:0
原帖由 rainbow 于
16:10 发表
比如蛮小的一个mysql应用,用户也没有磁盘阵列,但是要求有HA,就采用了drbd来进行数据同步,再加上和Heartbeat集成的也不错,就采用了。
大家还有用drbd的么?
当然有啦,多了去了,你看Linbit站点的统计. 用的好不好,性能好不好,就看个人水平了.
家境小康, 积分 1864, 距离下一级还需 136 积分
论坛徽章:0
个人还是有些担心稳定性,性能到不是很担心的。
总体上觉得drbd还是一个很不错的软件,尤其在和heartbeat集成方面也很不错。
题外话: 估计heartbeat在有朝一日商业化的时候,把drbd集成为一个组件是不错的选择。
家境小康, 积分 1360, 距离下一级还需 640 积分
论坛徽章:0
我就在用,性能有点打折,但是我目前的环境下是没有问题的
论坛徽章:0
原帖由 rainbow 于
10:10 发表
个人还是有些担心稳定性,性能到不是很担心的。
总体上觉得drbd还是一个很不错的软件,尤其在和heartbeat集成方面也很不错。
题外话: 估计heartbeat在有朝一日商业化的时候,把drbd集成为一个组件是不错 ...
你倒是反过来,DRBD一向稳定出名的,就是性能老是有很多人有疑问..呵呵呵.
家境小康, 积分 1864, 距离下一级还需 136 积分
论坛徽章:0
稳定就放心了,生产环境还是稳定压倒一切, 还好我对性能要求不是很高。
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 34, 距离下一级还需 166 积分
论坛徽章:0
本帖最后由 luckysammo_cu 于
09:57 编辑
& &&&DRBD + NFS 高可用
& &&&* 千兆交换机 + 千兆网卡
& &&&* CentOS release 5.4
& &&&* DRBD 8.3.8
& &&&* 分区使用ext3,大小1.2T
& &&&* mount /dev/drbd0 /data
& &&&* NFS共享/data目录
& &&&* nfs1 DRBD主节点
& &&&* nfs2 DRBD从节点
& &&&* client1 NFS客户端
配置文件(两台机配置相同):global {
&&usage-
}
common { syncer { al-extents 3389; rate 70M; } }
resource r0 {
&&protocol C;
&&startup {
& & wfc-timeout 0;
& & degr-wfc-timeout 120;
&&}
&&disk {
& & on-io-error& &
& &}
&&net {
& && &timeout 60;
& && &connect-int 10;
& && &ping-int 10;
& && &max-buffers 2048;
& && &max-epoch-size 2048;
& &}
on nfs1 {
& &device& & /dev/drbd0;
& &disk& && &/dev/cciss/c0d0p4;
& &address& &192.168.1.3:7789;
& &meta-
&&}
on nfs2 {
& &device& & /dev/drbd0;
& &disk& && &/dev/cciss/c0d0p4;
& &address& &192.168.1.2:7789;
& &meta-
&&}
}复制代码测试:
& &写入102MB的文件
& &1、本机/data目录测试(正常):[root@nfs1 data]# time dd if=/dev/zero of=sometestfile3 bs=1024 count=100000
records in
records out
bytes (102 MB) copied, 0.389642 seconds, 263 MB/s
real& & 0m0.398s
user& & 0m0.054s
sys& &&&0m0.320s复制代码每秒查看一次/proc/drbd:[root@nfs1 data]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: dfdbcc25b2d422321d build by mockbuild@builder10.centos.org,
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
& & ns:108772 nr:0 dw:108988 dr:713 al:31 bm:1 lo:8 pe:2049 ua:0 ap:2048 ep:1 wo:b oos:0
[root@nfs1 data]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: dfdbcc25b2d422321d build by mockbuild@builder10.centos.org,
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
& & ns:109416 nr:0 dw:109576 dr:713 al:31 bm:1 lo:2 pe:2050 ua:0 ap:2049 ep:1 wo:b oos:0复制代码PS: 查看dw时,1 秒钟也只同步了 109576 - 108988 = 588
2、NFS客户端测试(nfs1负载飙升):
& &&&mount -t nfs -o rsize=32768,wsize=32768,timeo=14,nfsvers=3,noatime,nolock 192.168.1.3:/data /mnt/test
& & 执行:[root@client1]# time dd if=/dev/zero of=sometestfile3 bs=1024 count=100000
records in
records out
bytes (102 MB) copied, 179.556 seconds, 570 kB/s
real& & 2m59.588s
user& & 0m0.043s
sys& &&&0m0.256s复制代码PS: 570 kB/s
& && & A、nfs1机器:load average从0升到10
& && & B、NFS客户端: 一直卡着,应该是等待从节点同步成功后,再结束。
& & 请大家帮忙看一下,非常感谢!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 87, 距离下一级还需 113 积分
论坛徽章:0
是什么硬盘? 是不是被硬盘传输速度卡住了?
关于LOAD,试下 前面放个 ionice -c 3 , 应该可以降下来,我们这个服务器跑了30多个虚拟机的时候,在只有io空闲的情况下,大概是1Mb/s左右 (硬盘是SAS,具体速度不记得了)
白手起家, 积分 34, 距离下一级还需 166 积分
论坛徽章:0
谢谢lingg2010的回复。
HP服务器,SAS硬盘,6颗硬盘RAID 5阵列。
我早上把主从DRBD切换了一下,发现写nfs2机器时,速度可以达到13M左右。
我待会测试一下你给的方法。
白手起家, 积分 34, 距离下一级还需 166 积分
论坛徽章:0
本帖最后由 luckysammo_cu 于
11:59 编辑
我测试了 ionice -c 3 ,负载还是很高。
我又做了一个测试了:
1、停止DRBD从机的同步:[root@nfs2 ~]# /etc/init.d/drbd stop
Stopping all DRBD resources: 复制代码2、在DRBD主机,写入文件:[root@nfs1 data]# time dd if=/dev/zero of=sometestfile5 bs=1024 count=100000复制代码3、开启DRBD从机的同步:[root@nfs2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: dfdbcc25b2d422321d build by mockbuild@builder10.centos.org,
0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r----
& & ns:0 nr:43780 dw:39300 dr:0 al:0 bm:2 lo:141 pe:3363 ua:140 ap:0 ep:1 wo:b oos:261224
& && &&&[=&..................] sync'ed: 14.9% (524)K queue_delay: 447.7 ms
& && &&&finish: 0:00:19 speed: 13,100 (13,100) want: 71,680 K/sec复制代码PS:同步速度,也有13M左右。不明白,为什么实时同步时,传输只有几百K。
白手起家, 积分 87, 距离下一级还需 113 积分
论坛徽章:0
drbdsetup /dev/drbd/by-res/xxxx syncer -r 2M
相关文档:
白手起家, 积分 34, 距离下一级还需 166 积分
论坛徽章:0
谢谢 lingg2010 的回复。
我动态修改过 syncer ,都没效果,后来使用sysbench测试后,发现磁盘性能比较差。
现在已经换成RAID0了,速度可以达到42M。
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处zuzhou 的BLOG
用户名:zuzhou
文章数:72
评论数:74
访问量:108323
注册日期:
阅读量:5863
阅读量:12276
阅读量:390487
阅读量:1081395
51CTO推荐博文
DRBD分布式复制块设备及DRBD高可用配置DRBD,顾名思义,全称为Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 DRBD Logo DRBD Logo 数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)主要目的是将两台主机的两个设备能够做成类似于RAID1对接硬盘的效果一样,但是可以跨越主机的 ,所以也被称为分布式的RAID&为什么使用DRBD以NFS服务为例,当前端都是高可用或冗余,但是后端只有NFS服务为其做共享存储,那么存储本身属于单点故障,如果其节点一旦故障,可导致整个架构的瘫痪,所以这时需要对所谓的NFS做高可用集群为了高可用的目的在两个NFS中提供共享存储,而后在NFS中输出出去由此在这基础上如果不使用NFS则可以直接提供一个共享存储那共享存储的方案无非有以下几种:?DAS&&&& ?NAS & &&?SAN?DLM:Distributed Lock M一般来讲编译的时候需要支持分布式锁管理器或者后期编译内核就算使用了分布式锁管理机制(DLM)使用一般文件系统,比如ext3/4 等亦然不可以,因为其并不支持这种锁机制,也就是说必须使用专用的文件系统&集群文件系统类型常见的集群文件系统类型有:?GFS : Global File System #在红帽4上流行的是GFS 红帽5上两者都支持 6上仅支持GFS2?OCFS2: Oracle Cluster File System&由此必须使用这种共享存储才可以&而一般来讲能够实现存储机制对象像DAS NAS SAN 代价都非常的高,对一些小型企业来讲可望不可即&那么这时,DRBD就派上用场了:配置DRBD前提,只要2个空间分区两个空间大小一样即可,而后能够实现在2个节点内核当中启动一个内核模块"DRBD"模块 这个模块能够监听在套接字上,这样之后在某个节点中的某个进程试图在drbd的分区中写入数据的时候,这个数据一定会流进内核DRBD模块之后内核会将数据复制一份并通过本地的tcp/ip协议栈发往另外一个节点的DRBD进程,其收到请求后将数据默默的存放在本地的DRBD的存储空间中 从而达到一致,所以当写入数据的时候首先会流进本地内核中的drbd模块,其会被分为2个数据流 一个继续往下存储一个则通过网络发送给另外的DRBD节点从而达成数据的冗余650) this.width=650;" title="11.png" alt="wKiom1OFcurjPtEfAAEtOJY2JQA246.jpg" src="/wyfs02/M02/2A/CB/wKiom1OFcurjPtEfAAEtOJY2JQA246.jpg" />&在drbd 主节点被称为 primary 备节点被称为secondary&DRBD主备之间的健康检查机制可以将其做成高可用服务资源,将其定义为主从类型,任何时候主节点挂掉,自动将备节点提升为primary如果不想让其称为primary的话可以将其demote降级为secondeary,而原来的secondeary则提升为primary这一切都需要依赖高可用集群服务来完成&DRBD是在内核中工作的,DRBD是内核模块,但磁盘上有N个分区,思考到底是哪个分区是DRBD的分区:需要依赖于用户空间的工具来完成drbdadmdrbdsetup对于drbd来讲数据是从一个节点从而复制到另外一个节点的,一般来说,当一个进程发起写请求的时候,会发起系统调用,为了提高用户的体验,内核通常在内核内存中完成了写操作会通知用户操作完成,需要过段时间才会从内核中同步至磁盘中去&那一旦在drbd中写数据的话,为了保证写入完整,有三种方式可以实现:通过tcp/ip协议栈封装成报文,并交给TCP/IP发送缓冲区,接着网卡通过DMA机制依次将报文发送出去?A模式:协议模型,当用户存放的报文已经被送到本地的协议缓冲区里,至于已经被网卡发送过的,则不会去管理& 意味着只要发往本地的发送缓冲则OK ,但并不保证数据准确无误的送往至对方节点中?B模式:半同步模式。首先将数据发送至本地的发送缓冲区,其次对方节点网卡收到报文,再次存入内核空间中,至于是否同步下来则不会考虑?C模式:默认模式,同步模式,考虑对方是否送达,考虑是否完全同步#A表示到达自己的发送缓冲#B表示到达对方的接受缓冲#C表示对方已经完全存放&如果不能接受数据有所损失则可以使用C模式 ,如果在性能或数据丢失一点也无所谓的话则使用A模式。一般默认的选项是C模式&dual primary node(双主模型)为了避免双方挂载同时间写入造成的冲突前提是只能是在高可用集群中使用RDBD并确定使用分布式文件锁因此 当一个节点进行写操作的话,持有锁信息,右节点会收到,因此右节点不会进行写,因此这种锁只有集群文件系统才可以支持&所以注意的前提是:?1 只有高可用环境中使用DRBD?2 要启用分布式文件锁功能?3 将DRBD格式化成集群系统&因此跟我们共享文件系统是一样的,而且是块文件系统,必须是文件系统,必须使用的是底层文件信息通道,必须格式化成集群文件系统才可以实现双主模型&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& DRBD工作图解650) this.width=650;" title="1.png" alt="wKiom1OFcvaAT62QAAGPRY_-bu0401.jpg" src="/wyfs02/M00/2A/CB/wKiom1OFcvaAT62QAAGPRY_-bu0401.jpg" />&?首先通过内核的系统调文件系统接口提交给文件系统(buffer cache)?buffer cache维持了缓冲区?缓存区交给磁盘调度器,调度器主要讲多个连续的写操作合并至一个,以提高磁盘性能,尤其对机械硬盘起到作用,但对ssd硬盘通常作用不大?而后由dis driver真正发起磁盘寻道等操作,真正将数据存储下来?而DRDB又工作在buffer cache 和scheduler之间,所以在实现合并之前,每一个在buffer cache中完成的写操作通过tcp/ip协议栈发往网卡的驱动程序由网卡驱动程序发往另一个网卡,网卡对其解码之后发给TCP/IP协议栈?对方TCP/IP协议栈发现是工作在DRDB内核模块中的报文,将数据转发给DRBD,DRBD写在本地 从而达到数据一致性如果DRBD工作正常的时候双方是同步的,万一备节点挂了,以后想让其重新上线那么主节点要比备节点数据“晚”很长时间,如果这时备节点上线了,需要将大量数据复制到其本地,而主节点还需要将数据从自己的磁盘中读取出来,完成同步,这时候网络带宽的负载是非常大的,服务性能也会非常的差&配置DRBD配置DRBD本身并不依赖于其他高可用服务,可以完全手动,只有想让其自动完成提供或降级才需要依赖高可用集群套件一般来讲DRBD可以与heartbeat 、cman 、crorsync等结合使用接下来不使用高可用集群,深入浅出的来配置DRBD&规划如下:服务器IP地址服务器角色10.0.10.61Node110.0.10.62Node2&配置时间同步[root@node1 ~]#ntpdate 安装DRBD要下载与内核版本完全匹配的软件包[root@node1 ~]#uname -aLinux node2 2.6.32可在rpmfind中找到对应的包名,如果内核升级相应的,drbd就要使用升级后对应内核的版本[root@node1 tools]#lsdrbd-8.4.3-33.el6.x86_64.rpmdrbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm#以上2个包基本没有任何依赖关系在本地安装即可[root@node1tools]#& rpm -ivh *.rpm要配置一个drbd设备要准备一个资源而资源所需的属性都有如下:?资源名称?块设备,分区并空间大小必须一致假如两边都创建2G的分区,不要太大,尤其是两个节点直接同步的时候,同步的时间会很长&重新建立分区以sdb为例,创建一新分区,大小为2G空间,双节点都执行以下操作[root@node2 ~]#fdisk /dev/sdb[root@node2 ~]#fdisk -l /dev/sdb#分区步骤略过Disk /dev/sdb: 2147MB,
bytes255 heads, 63sectors/track, 261 cylindersUnits = cylindersof 16065 * 512 = 8225280 bytesSector size(logical/physical): 512 bytes / 512 bytesI/O size(minimum/optimal): 512 bytes / 512 bytesDisk identifier:0xad6e184f&&& Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&&Id& System/dev/sdb1&&&&&&&&&&&&&& 1&&&&&&&& 261&&&&2096451&& 83& Linux&使分区[root@node1~]#& kpartx -a /dev/sdb&配置DRBD默认DRBD的安装路径是在/etc/drbd.d/下[root@node1 ~]# cd/etc/drbd.d/[root@node1 drbd.d]# lsglobal_common.conf主配置文件在/etc下,如下所示[root@node1drbd.d]# cat /etc/drbd.conf# You can find an example in& /usr/share/doc/drbd.../drbd.conf.exampleinclude "drbd.d/global_common.conf"; & & & &&&&&&&&&&&&&& &#调用global_common.conf文件include"drbd.d/*.res"; & & & & & & && & &&&&&&&& &#所有以.res结尾的文件所以我们不用管它继续我们的配置&配置global-common.conf[root@node1 ~]# cd/etc/drbd.d/[root@node1drbd.d]# cp global_common.conf global_common.conf.bak修改global-common.conf[root@node1drbd.d]# cat global_common.confglobal {&&&&&&& usage-&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& #统计drbd的使用&&&&&&& # minor-count dialog-refreshdisable-ip-verification}&common {&&&&&&& protocol C;&&&&&&&& handlers {#将前三个参数开启&&&&&&&&&&&&&&& pri-on-incon-degr"/usr/lib/drbd/notify-pri-on-incon-degr./usr/lib/drbd/notify-emergency-reboot. echo b & /proc/sysrq-reboot -f";&&&&&&&&&&&&&&& pri-lost-after-sb"/usr/lib/drbd/notify-pri-lost-after-sb./usr/lib/drbd/notify-emergency-reboot. echo b & /proc/sysrq-reboot -f";&&&&&&&&&&&&&&& local-io-error"/usr/lib/drbd/notify-io-error./usr/lib/drbd/notify-emergency-shutdown. echo o & /proc/sysrq-halt -f";&&&&&&&&&&&&&&& # fence-peer"/usr/lib/drbd/crm-fence-peer.sh";&&&&&&&&&&&&&&& # split-brain"/usr/lib/drbd/notify-split-brain.sh root";&&&&&&&&&&&&&&& # out-of-sync"/usr/lib/drbd/notify-out-of-sync.sh root";&&&&&&&&&&&&&&& # before-resync-target"/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";&&&&&&&&&&&&&&& # after-resync-target/usr/lib/drbd/unsnapshot-resync-target-lvm.&&&&&&& }&&& &&&&&startup {&&&&&&&&&&&&&&& #wfc-timeout 120;&&&&&&&&&&&&&&& #degr-wfc-timeout 120;&&&&&&& }&&&&&&&& disk {&&&&&&&&&&&&&&& on-io-&&&&&&&&&&&&&&& #fencing resource-&&&&&&& }&&&&&&&& net {&&&&&&&&&&&&&&& cram-hmac-alg "sha1";&&&&&&&&&&&&&&& shared-secret "mydrbdlab"; &&&&&&&&&&&&&&&&& #随机子字符串,认证需要&&&&&&&& }&&&&&&&& syncer {&&&&&&&&&&&&&&& rate 1000M;&&&&&&& }}紧接着定义第一个资源创建mydata.res,文件名任意,但后缀名必须要以res结尾,内容如下resource mydata {#以下为全局配置,默认都是使用的drbd0设备文件,以及sdb1分区&&& device&&&/dev/drbd0;disk&&&&&/dev/sdb1;&& on node1&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&#定义资源1&&& address&&10.0.10.61:7789;&&&&&&&&&& &#监听在网络地址的哪个端口上&&& meta-&&&&&&&&&&&&&&&&& &# DRBD是有元数据的,为了保证磁盘镜像是完整的它也需要镜像元数据,其元数据默认也是放在磁盘分区上的,存放在当前磁盘上的参数为internal&& }& on node2 {&&& address&&10.0.10.62:7789;&&& meta-& }}当资源定义完毕要将每个节点的镜像都进行同步但是两端的配置文件都要一致[root@node1drbd.d]#& scp * root@node2:/etc/drbd.d/global_common.conf&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&100% 1403&&&& 1.4KB/s&& 00:00&&&global_common.conf.bak&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&100% 1836&&&& 1.8KB/s &&00:00&&&mydata.res&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&100%& 215&&&& 0.2KB/s&&00:00&初始化资源配置完成,接下来该初始化资源了在双方节点分别执行 drbdadm create-md mydata命令进行初始化[root@node1drbd.d]# drbdadm create-md mydataWriting metadata...initializingactivity logNOT initializingbitmaplk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd)failed: No such file or directoryNew drbd meta datablock successfully created.lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd)failed: No such file or directory[root@node1drbd.d]# echo $?0警告信息可以忽略不计&双方都启动DRBD服务并观察[root@node1drbd.d]# /etc/init.d/drbd start查看运行状态[root@node1drbd.d]# /etc/init.d/drbd statusdrbd driver loadedOK; device status:version: 8.4.3(api:1/proto:86-101)GIT-hash:89aadb3ee85aee515 build by gardner@,
04:30:21m:res&&&& cs&&&&&&&&ro&&&&&&&&&&&&&&&&&& ds&&&&&&&&&&&&&&&& p& mounted&fstype0:mydata& Connected&Secondary/Secondary&Diskless/Diskless& C一旦启动了在proc目录中肯定会生成drbd文件的,如下所示[root@node1drbd.d]# ls /proc/drbd/proc/drbd我们来cat一下查看[root@node1 ~]# cat/proc/drbd version: 8.4.3(api:1/proto:86-101)GIT-hash:89aadb3ee85aee515 build by gardner@,
04:30:21&0: cs:Connected ro:Secondary/Secondaryds:Inconsistent/Inconsistent C r-----&&& ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0ua:0 ap:0 ep:1 wo:f oos:2104376发现双方都是从节点,我们需要手动将其中一节点提升为主节点Inconsistent 表示双方还没有同步数据我们需要将一节点升为主节点而后就可以自动同步更新数据了[root@node1drbd.d]# drbdadm primary --force mydata[root@node1 ~]#watch -n1 'cat /proc/drbd'version: 8.4.3(api:1/proto:86-101)GIT-hash:89aadb3ee85aee515 build by gardner@,
04:30:21&0: cs:SyncSource ro:Primary/Secondaryds:UpToDate/Inconsistent C r---n-&&&&&& &&&& #&&& ns:127728 nr:0 dw:0 dr:134816 al:0 bm:7lo:0 pe:2 ua:7 ap:0 ep:1 wo:f oos:1978424[&...................]sync'ed:& 6.1% (4376)Kfinish: 0:07:55speed: 4,140 (4,340) K/secPrimary/Secondary &&&&& 可以发现我们当前节点已经是主节点了UpToDate/Inconsistent &状态是本机正在更新,状态非一致的等数据一致之后便可以格式化DRBD分区了 [root@node1 ~]# cat/proc/drbd version: 8.4.3(api:1/proto:86-101)GIT-hash:89aadb3ee85aee515 build by gardner@,
04:30:21&0: cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDate C r-----&&& ns:2104376 nr:0 dw:0 dr:2105048 al:0 bm:129lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0数据已同步完成,于是我们只在主节点格式化分区[root@node1drbd.d]# mke2fs -t ext4&/dev/drbd0&挂载测试[root@node1 ~]#mount /dev/drbd0 /mnt/&[root@node1 ~]# df -hFilesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on/dev/sda3&&&&&&&&&&&&& 19G& 2.7G&&16G& 15% /tmpfs&&&&&&&&&&&&&&&& 499M&&&& 0&499M&& 0% /dev/shm/dev/sda1&&&&&&&&&&&& 291M&& 33M&243M& 12% /boot/dev/drbd0& &&&&&&&&&&2.0G&&68M& 1.9G&& 4% /mnt向其拷贝文件并查看分区是否可写[root@node1drbd.d]# cp /etc/passwd /mnt/[root@node1 drbd.d]# ls /mnt/lost+found& passwd&测试是否同步手动将其降级并查看注意的是如果升级或降级必须是主的一方先降级然后才能升级取消挂载[root@node1 ~]#umount /mnt/使其主节点降级为备节点[root@node1 ~]# drbdadmsecondary mydata使用drbd-overview命令查看其状态[root@node1 ~]#drbd-overview& 0:mydata/0&Connected Secondary/Secondary UpToDate/UpToDate C r-----切换至node2,并将node2提升为主节点&[root@node2 ~]# drbdadm primary mydata[root@node2 ~]#drbd-overview& 0:mydata/0&Connected Primary/Secondary UpToDate/UpToDate C r-----挂载目录并查看之前拷贝的文件是否存在[root@node2 ~]# ll/mnt/total 20drwx------. 2 rootroot 16384 May 26 16:37 lost+found-rw-r--r--. 1 rootroot& 1678 May 26 16:41 passwd可以看到,已经将其切换成功,并达到数据一致的效果,但是如果某节点出现故障我们只能手动去切换节点未免有点太麻烦了,这时可以将其部署为高可用集群为我们省去不少麻烦&基于Corosync+Packmaker+DRBD实现高可用集群想要实现自动的角色转换,要借助于高可用底层信息通道来实现以及高可用资源管理器来实现一般来讲DRBD通常来说是双节点,可以是一主一从 也可以是双主配置DRBD高可用将其都降级为从节点[root@node1 ~]#drbdadm secondary mydata确保无误[root@node1 ~]#drbd-overview& 0:mydata/0& Connected Secondary/Secondary UpToDate/UpToDate Cr-----&确保数据一致的,接下来停止drbd服务,因为如果定义成高可用集群 一定是不能提前开启的#定义高可用集群之前 首先需要搭建好drbd 并且在双节点上都需要手动升级或降级,确保无误才能继续[root@node1 ~]#/etc/init.d/drbd stop确保双节点的drbd都不会开机启动[root@node1 ~]#chkconfig drbd off配置corosync配置安装corosync请借鉴之前文章双方都同时启动corosync[root@node1 ~]#/etc/init.d/corosync start查看当前集群的配置信息,确保已经配置全局属性参数为两节点集群所适用:[root@node1 ~]# crm configure shownode node1 \&&&& attributesstandby=offnode node2 \&&&& attributesstandby=offproperty cib-bootstrap-options: \&&&& dc-version=1.1.10-14.el6_5.3-368c726\&&&& cluster-infrastructure="classicopenais (with plugin)" \&&&& expected-quorum-votes=2\&&&& stonith-enabled=false\&&&& last-lrm-refresh=\&&&& no-quorum-policy=ignore在如上输出的信息中,请确保有stonith-enabled和no-quorum-policy出现且其值与如上输出信息中相同。否则,可以分别使用如下命令进行配置:# crm configure property stonith-enabled=false# crm configure propertyno-quorum-policy=ignore&定义资源drbd需要同时运行在两个节点上,但只能有一个节点(primary/secondary模型)是Master,而另一个节点为Slave;因此,它是一种比较特殊的集群资源,其资源类型为多态(Multi-state)clone类型,即主机节点有Master和Slave之分,且要求服务刚启动时两个节点都处于slave状态[root@node1 ~]# crm crm(live)# configurecrm(live)configure# primitive mysql_drbdocf:linbit:drbd params drbd_resource=mydata op monitor role=Master interval=10timeout=20 op monitor role=Slave interval=20 timeout=20 op start timeout=240 opstop timeout=100crm(live)configure# verify参数说明:#primitive mysql_drbd&&&&&&&&&& #定义资源名称#op monitor role=Master &&&&&& #指明监控master#interval=50s & & & & & && #多长时间监控一次#timeout=30s & & & & & && #超时时间多少#op monitor role=Slave &&&&&&& #监控slave#interval=60s & & & & & && #监控时隔&&&& #timeout=30s & & & & & && #超时时间#检测时间最好定义为其默认值&定义主从资源crm(live)configure#& ms ms_mysql_drbd mysql_drbd meta master-max="1"master-node-max="1" clone-max="2"clone-node-max="1" notify="true"crm(live)configure# verify参数说明:#ms跟名称,明确说明将哪个资源作为主从资源 而后跟meta参数#将mysql_drbd做为主从资源#master-max="1 &&&&&&&&&&& &&& #主资源有1个#master-node-max="1" &&&&&& &&& #node节点有1个#clone-max="2 &&&&&&&&&&&& &&& #最多可克隆2个资源#clone-node-max="1" &&&&&& &&& #每个副本节点最多运行1个#notify="true"&&&&&&&&&&&&& &&& #当一个新的副本加入进来的时候是否通知其他副本&确认无误保存规则crm(live)configure# commit执行完成之后退出终端并查看其状态crm(live)# statusOnline: [ node1 node2 ]#如下所示,目前启动了2个副本,主为node1 从为node2&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node1 ]&&&&Slaves: [ node2 ]如果将node1更改为备节点,并查看其会发生什么[root@node1 ~]# pcs cluster standby node1[root@node1 ~]# crm status#中间略过#Node node1: standbyOnline: [ node2 ]Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&& Masters: [ node2 ]&&&& Stopped: [ node1 ]可用看到,主为node2 ,但从未stoped 关闭状态,因为备节点是不能运行资源的使用备节点重新上线,但处于unstandby模式[root@node2 ~]#&crm node unstandby&查看DRBD信息[root@node2 ~]# cat /proc/drbdversion: 8.4.3 (api:1/proto:86-101)GIT-hash:89aadb3ee85aee515 build by gardner@,
04:30:21&0:cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate 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:f oos:0&使其自动挂载文件系统文件系统挂载的节点必须要跟主从资源的主节点在一块并定义次序:先将drb的主节点提升为主,完成之后才能挂载首先需要有挂载的目录,这里我们是以mysql的路径为基准创建路径[root@node1 ~]# mkdir /mydata/定义文件系统资源定义文件系统资源之前首先来规划一下思路:(1)定义资源类型为filesystem(2)挂载的设备是drbd0(3)挂载点是/mydata(4)文件系统类型为ext4[root@node1 ~]# crm configurecrm(live)configure# primitive mystoreocf:heartbeat:Filesystem params device="/dev/drbd0"directory="/mydata" fstype="ext4" op monitor interval=40timeout=40 op start timeout=60 op stop timeout=60crm(live)configure# verify定义排列约束和顺序约束要先将主从资源的master 进行promote操作然后才能启动mystore的定义顺序约束:表示对方只有处于promote状态 其才能进行挂载crm(live)configure# order colocationmystore_with_ms_mysql_drbd_master inf: mystore ms_mysql_drbd:Mastercrm(live)configure# verifycrm(live)configure# commit#mystore_with_ms_mysql_drbd_master&mytore必须要跟ms_mysql_drbd的master在一块#inf &&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 表示无穷大#mystorems_mysql_drbd:Master &&&&& 表示mystore 跟 drbd的主资源在一起&定义次序要先将主从资源的master 进行promote操作然后才能启动mystore的定义顺序约束:#表示对方只有处于promote状态 其才能进行挂载crm(live)configure# orderms_mysql_drbd_before_mystore mandatory: ms_mysql_drbd:promote mystore:startcrm(live)configure# verifycrm(live)configure# commit&执行status查看crm(live)configure# cdcrm(live)# status&Online: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node2 ]&&&&Slaves: [ node1 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node2可见,mystore已然启动查看是否被挂载[root@node2 ~]# df -hFilesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on/dev/sda3&&&&&&&&&&&&& 20G& 1.6G&&17G&& 9% /tmpfs&&&&&&&&&&&&&&&& 499M&& 37M& 462M&& 8% /dev/shm/dev/sda1&&&&&&&&&&&& 194M&& 28M&156M& 16% /boot/dev/drbd0&&&&&&&&&&& 2.0G&& 68M&1.9G&& 4% /mydata将node2更改为备节点,并在node1上查看是否自动挂载&[root@node1 ~]# crm statusLast updated: Tue May 27 16:11:47 2014Last change: Tue May 27 16:11:44 2014 viacrm_attribute on node2Stack: classic openais (with plugin)Current DC: node2 - partition with quorumVersion: 1.1.10-14.el6_5.3-368c7262 Nodes configured, 2 expected votes3 Resources configured&Online: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node1 ]&&&&Slaves: [ node2 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node1查看node1是否被挂载目录&[root@node1 ~]# df -hFilesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on/dev/sda3&&&&&&&& &&&&&19G&2.7G&& 16G& 15% /tmpfs&&&&&&&&&&&&&&&& 499M&& 22M&477M&& 5% /dev/shm/dev/sda1&&&&&&&&&&&& 291M&& 33M&243M& 12% /boot/dev/drbd0&&&&&&&&&&& 2.0G&& 68M&1.9G&& 4% /mydata查看目录数据是否存在[root@node1 ~]# ll /mydata/total 24-rw-r--r--. 1 root root& &805May 27 13:17 fstabdrwx------. 2 root root 16384 May 26 16:37lost+found-rw-r--r--. 1 root root& 1678 May 26 16:41 passwd再次测试将node1更改为备节点,并在node2上查看资源是否被转移[root@node1 ~]# crm node standby[root@node1 ~]# crm node online [root@node1 ~]# crm status&Online: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node2 ]&&&&Slaves: [ node1 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node2切换至node2 查看数据是否存在[root@node2 ~]# df -hFilesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on/dev/sda3&&&&&&&&&&&&& 20G& 1.6G&&17G&& 9% /tmpfs&&&&&&&&&&&&&&&& 499M&& 37M&462M&& 8% /dev/shm/dev/sda1&&&&&&&&&&&& 194M&& 28M&156M& 16% /boot/dev/drbd0&&&&&&&&&&& 2.0G&& 68M&1.9G&& 4% /mydata[root@node2 ~]# ls /mydata/fstab&lost+found& passwd&实现高可用Mysql/MariaDB集群假设此时我们期望将当前节点定义为高可用mysql集群,那么依赖drbd就可以实现数据一致了那mysql应该运行在主节点而且还必须mystore启动之后mysql才可以启动而且mysql启动服务的时候还必须要向外提供独立IP地址&双方都安装并配置MariaDB[root@node1 ~]# tar xfmariadb-5.5.32-linux-x86_64.tar.gz& -C/usr/local/root@node2 ~]# cd /usr/local查看其状态[root@node1 ~]# crm statusLast updated: Tue May 27 21:56:33 2014&Online: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node1 ]&&&&Slaves: [ node2 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node1当前主节点是node1,所以要在node1上做操作,千万不要弄反了在双方节点都创建mysql用户一定要让两边节点的用户id号统一,不然访问同一文件系统上的块节点不一样,用户名对应的也不一样了root@node1 ~]#& useradd -r -u 306 mysql[root@node1 ~]# id mysqluid=306(mysql) gid=306(mysql)groups=306(mysql)切换至主节点创建数据存放的目录[root@node1 ~]#& mkdir /mydata/data[root@node1 ~]#& chown -R mysql.mysql /mydata/data/[root@node1 ~]#& ll -ld /mydata/data/drwxr-xr-x. 2 mysql mysql 4096 May 27 21:59/mydata/data/创建软链接,软链名称一定必须是mysql[root@node1 ~]# cd /usr/local/[root@node1 local]# ln -s mariadb-5.5.32-linux-x86_64mysql[root@node1 local]#& ll | grep mysqllrwxrwxrwx.&1 root root&& 27 May 27 22:02mysql -& mariadb-5.5.32-linux-x86_64授权目录[root@node1 local]#& chown -R root.mysql mysql/初始化数据[root@node1 mysql]# scripts/mysql_install_db--user=mysql --datadir=/mydata/data/验证是否存在问题[root@node1 mysql]# ll -lth /mydata/data/total 32K-rw-rw----. 1 mysql mysql& 16K May 27 22:04 aria_log.-rw-rw----. 1 mysql mysql&& 52 May 27 22:04 aria_log_controldrwx------. 2 mysql mysql 4.0K May 27 22:04performance_schemadrwx------. 2 mysql root& 4.0K May 27 22:04 mysqldrwx------. 2 mysql root& 4.0K May 27 22:04 test复制配置文件[root@node1 mysql]#& cp support-files/f& /f [root@node1 mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld[root@node1 mysql]# chmod +x/etc/init.d/mysqld修改配置文件[root@node1 mysql]# vim /f&#修改如下参数,如果没有则手动添加thread_concurrency = 2datadir = /mydata/datainnodb_file_per_table = 1启动测试[root@node1 mysql]# /etc/init.d/mysqld startStarting MySQL......... &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&[& OK& ]加入环境变量[root@node1 mysql]# echo 'exportPATH=$PATH:/usr/local/mysql/bin' &&/etc/profile&[root@node1 mysql]# source /etc/profile创建一远程用户方便之后的验证[root@node1 mysql]# mysqlMariaDB [(none)]&& grant all on *.* to 'test'@'%'IDENTIFIED& by 'test';Query OK, 0 rows affected (0.00 sec)&MariaDB [(none)]&Query OK, 0 rows affected (0.00 sec)接下来可以停止服务了而后将当前节点切换成备节点测试另外节点是否可以启动成功[root@node1 mysql]# /etc/init.d/mysqld stop切换至node2[root@node2 local]# ln -smariadb-5.5.32-linux-x86_64 mysql将node1的配置文件复制于node2[root@node1mysql]# scp /f node2:/etc/[root@node1 mysql]# scp /etc/init.d/mysqldnode2:/etc/init.d//mydata/下面是空目录 不用创建目录更不用初始化,因为之前在node1上已经初始化完成切换主备节点[root@node1 ~]# /etc/init.d/mysqld stop将node1下线并切换至备节点状态[root@node1 ~]# crm node standby[root@node1 ~]# crm node online[root@node1 ~]# crm status&Online: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node2 ]&&&&Slaves: [ node1 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node2在node2验证是否被挂载[root@node2 ~]# df -hFilesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on/dev/sda3&&&&&&&&&&&&& 20G& 2.6G&&16G& 15% /tmpfs&&&&&&&&&&&&&&&& 499M&& 22M&477M&& 5% /dev/shm/dev/sda1&&&&&&&&&&&&194M&& 28M&156M& 16% /boot/dev/drbd0&&&&&&&&&&& 2.0G&& 68M&1.9G&& 4% /mydata启动测试[root@node2 etc]# /etc/init.d/mysqld startStarting MySQL.... SUCCESS!&定义VIP地址定义之前,必须考虑几个问题:(1)mysql必须要跟drbd主节点在一起(2)定义vip,如果vip挂掉则自动重启crm(live)configure# primitive myipocf:heartbeat:IPaddr params ip="10.0.10.100" op monitor interval=20timeout=20 on-fail=restartcrm(live)configure# verifyIP应该与mysql服务在一起,mysql服务而又要与mystore在一起,而mystore之前已经定义过了&定义mysqld服务crm(live)configure# primitive myserverlsb:mysqld op monitor interval=20 timeout=20 on-fail=restartcrm(live)configure# verify&定义资源之间关系myserver一定要与mystore在一起,并且mystore启动之后myserver才可以启动myip还要与myserver在一起,而且myip启动后myserver才能启动crm(live)configure# colocationmyserver_with_mystore inf: myserver mystorecrm(live)configure# verify&定义启动次序crm(live)configure# ordermystore_before_myserver mandatory: mystore:start myserver:startcrm(live)configure# verify定义IP地址与myserver在一起crm(live)configure# ordermyip_before_myserver mandatory: myip myserver检查语法,确保无误则保存资源crm(live)configure# verifycrm(live)configure# commit&查看状态crm(live)configure# cd crm(live)# status&Online: [ node1 node2 ]&Online: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node2 ]&&&&Slaves: [ node1 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node2 &myip&&& (ocf::heartbeat:IPaddr):&&& &&&& Startednode1 &myserver(lsb:mysqld):Started node2&&连接测试尝试连接vip[root@node2 ~]# mysql -utest -ptest-h10.0.10.100Welcome to the MariaDB monitor.& C or \g.Your MariaDB connection id is 11Server version: 5.5.32-MariaDB-log MariaDBServer&Copyright (c) , Oracle, MontyProgram Ab and others.&Type '' or '\h' for help. Type '\c' toclear the current input statement.&MariaDB [(none)]&以上,已连接成功&使资源转移并测试[root@node2 ~]# crm node standby[root@node2 ~]# crm node online[root@node2 ~]# crm statusOnline: [ node1 node2 ]&&Master/Slave Set: ms_mysql_drbd [mysql_drbd]&&&&Masters: [ node1 ]&&&&Slaves: [ node2 ]&mystore(ocf::heartbeat:Filesystem):&&&& Started node1 &myserver(lsb:mysqld):Started node1 &myip&&& (ocf::heartbeat:IPaddr):&&& Started node1测试连接是否成功,如下所示[root@node2 ~]# mysql -utest -p -h10.0.10.100Enter password: Welcome to the MariaDB monitor.& C or \g.Your MariaDB connection id is 1Server version: 5.5.32-MariaDB-log MariaDBServer&Copyright (c) , Oracle, MontyProgram Ab and others.&Type '' or '\h' for help. Type '\c' toclear the current input statement.&MariaDB [(none)]&总结:?启动顺序依次为myip --&myserver --&mysqldrbd --&ms_mysql_drbd 并挂载mystore?在其5个资源中ms_mysql_drbd是核心,所有的一切都是围绕其工作的?可以将其定义为组的模式 这样剩下的就是启动顺序的问题了&脑裂的解决办法之前冷重启了一次,由于没正常关闭服务,而再次启动服务的时候导致数据不同步,经查看日志,断定是脑裂问题[root@node1 ~]# tail /var/log/messagesMay 28 12:38:18 node1 kernel: block drbd0: helper command: /sbin/drbdadminitial-split-brain minor-0 exit code 0 (0x0)May 28 12:38:18 node1 kernel: block drbd0: Split-Brain detected but unresolved,dropping connection!May 28 12:38:18 node1 kernel: block drbd0: helper command: /sbin/drbdadmsplit-brain minor-0May 28 12:38:18 node1 kernel: block drbd0: helper command: /sbin/drbdadmsplit-brain minor-0 exit code 0 (0x0)May 28 12:38:18 node1 kernel: d-con mydata: conn( NetworkFailure -&Disconnecting )May 28 12:38:18 node1 kernel: d-con mydata: error receiving ReportState, e: -5l: 0!May 28 12:38:18 node1 kernel: d-con mydata: Connection closedMay 28 12:38:18 node1 kernel: d-con mydata: conn( Disconnecting -&StandAlone )May 28 12:38:18 node1 kernel: d-con mydata: receiver terminatedMay 28 12:38:18 node1 kernel: d-con mydata: Terminating drbd_r_mydata首先要使得数据同步,必然要将高可用集群服务停止才可以进行下一步操作双方停止服务[root@node2 ~]# /etc/init.d/corosync stop将node2设置为从节点并丢弃资源数据[root@node2 ~]# drbd-overview& 0:mydata/0& StandAlone&Secondary/UnknownUpToDate/DUnknown&r-----[root@node2 ~]# drbdadm -- --discard-my-dataconnect mydata&切换至node1,设置其为主节点[root@node1 ~]#& drbdadm primary mydata[root@node1 ~]# mount /dev/drbd0 /mydata在Node1主节点上手动连接资源[root@node1 ~]#drbdadm connect mydata&最后查看各个节点状态,连接已恢复正常[root@node1 ~]# cat /proc/drbd &version: 8.4.3 (api:1/proto:86-101)GIT-hash: 89aadb3ee85aee515 build by gardner@, 04:30:210: cs:SyncSource ro:Primary/Secondary ds:UpToDate/InconsistentC r-----&&& ns:28700 nr:0 dw:48 dr:30145 al:2 bm:5 lo:0 pe:1 ua:0 ap:0ep:1 wo:f oos:1024&&&& [===================&] sync'ed:100.0% ()K&&&& finish: 0:00:00 speed: 6,916 (6,916) K/sec查看drbd当前状态[root@node1 ~]# drbd-overview& 0:mydata/0& Connected Primary/Secondary UpToDate/UpToDate C r-----/mydata ext4 2.0G 97M 1.8G 6%&同步完成,最后将双方drbd服务关闭启动corosync即可[root@node1 ~]# /etc/init.d/drbd stop[root@node1 ~]# /etc/init.d/corosync start本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 同步齿科体验卡有用吗 的文章

 

随机推荐