设为首页 收藏本站
查看: 941|回复: 0

[经验分享] heartbeat+drbd+mysql 高可用方案~

[复制链接]

尚未签到

发表于 2019-1-7 10:04:23 | 显示全部楼层 |阅读模式
  DRBD的英文全称为Distributed Replicated Block Device(分布式块设备复制),是linux内核的存储层中的一个分布式存储系统,可利用DRBD在两台linux服务器之前共享块设备、文件系统和数据,类似于一个网络RAID1的功能。
  同步过程如下:
  1)、在NODE1上写操作被提交,然后通过内核传给DRBD模块。
  2)、DRBD发送写操作到NODE2。
  3)、在NODE2上的DRBD发送写操作给本地磁盘。
  4)、在NODE2上的DRBD向NODE1发送确认消息,确认已经接收到写操作并发送给本地磁盘。
  5)、在NODE1上的DRBD发送写操作给本地磁盘。
  6)、NODE1的内核回应写操作完成。
  此同步过程还依赖于DRBD的3种同步协议:
  protocol A,写I/O到达本地磁盘和本地的TCP发送缓存区之后,返回操作成功。
  protocol B,写I/O到达本地磁盘和远程节点的缓存区之后,返回操作成功。
  protocol C, 写I/O到达本地磁盘和远程节点的磁盘之后,返回操作成功。
  heartbeat+DRBD方案中IP信息:
  192.168.0.223(drbd1)
  192.168.0.224(drbd2)
  heartbeat使用的VIP:
  192.168.0.222
  配置之前的准备
  1.设置hostname及解析
  hostname drbd1
  hostname drbd2
  2.编辑/etc/hosts文件,添加如下内容:
  192.168.0.223 drbd1
  192.168.0.224 drbd2
  保证两台主机的hostname 能分别解析到两台机器内网IP。
  DRBD的部署
  从官方网站下载源码包来编译或者直接yum来安装,这以Centos为例:
  通过yum安装DRBD服务:
  yum -y install drbd83 kmod-drbd83(2.6.33及以上的内核不需要安装此模块包了)
  检查DRBD是否安装成功:
  [root@drbd1 ~]# modprobe -l |grep -i drbd
  /lib/modules/2.6.18-194.el5/weak-updates/drbd83/drbd.ko
  [root@drbd1 ~]# lsmod |grep drbd
  drbd                  300440  4
  安装成功之后,在/sbin下面有drbdadmin drbdmeta drbdsetup 以及/etc/init.d/drbd 启动本。
  DRBD的配置
  drbd使用的分区最好一样,也可以使用LVM进行分区。
  这里给两台机器添加一个10G的分区给数据库使用。(添加分区简单,这里就不贴出来了!)
  [root@drbd1 ~]# cp /usr/share/doc/drbd83-8.3.13/drbd.conf /etc/drbd.conf
  [root@drbd1 ~]# cat /etc/drbd.conf
  # You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
  include "drbd.d/global_common.conf";
  include "drbd.d/*.res";
  [root@drbd1 ~]# cat /etc/drbd.d/global_common.conf |grep -v "#"
  global {
  usage-count no; #是否参加DRBD使用者统计,默认yes
  }
  common {
  protocol C;#使用DRBD的第三种协议。
  handlers {
  pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
  pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
  local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
  }
  startup {
  wfc-timeout 120;
  degr-wfc-timeout 120;
  }
  disk {
  on-io-error detach;
  fencing resource-only;
  }
  net {
  cram-hmac-alg "sha1";
  shared-secret "1111";
  #DRBD同步使用的验证方式和密码信息。
  }
  syncer {
  rate 200M;#同步时网络速率最大值,单位是字节。
  }
  }
  [root@drbd1 ~]# cat /etc/drbd.d/ha.res
  resource r0 {
  on drbd1 {
  device /dev/drbd0;#挂载的设备名为drbd0
  disk /dev/sda5;#使用的磁盘分区为/dev/sda5
  address 192.168.0.223:7788;#设置DRBD的监听端口,用于与另一台机器通信。
  meta-disk internal; #DRBD的元数据存放方式
  }
  on drbd2 {
  device /dev/drbd0;
  disk /dev/sda5;
  address 192.168.0.224:7788;
  meta-disk internal;
  }
  }
  上面的的文件分别放在drbd1和drbd2上。drbd.conf的配置参数很多,可以man drbd.conf来查看说  明。
  DRBD的启动
  在启动DRBD服务之前,要在两台机器上/dev/sha5上创建DRBD元数据库信息。
  [root@drbd1 ~]# drbdadm create-md r0
  分别在两台机器上执行,成功了会打印出successfully created.
  出现不成功时,需要使用如下命令覆盖文件系统中的设备块信息,操作时确认此分区数据已经备  份。
  dd if=/dev/zero of=/dev/sda5 bs=1M count=128
  执行完后,再次执行drbdadm create-md r0
  两台机器同时启动服务: [root@drbd1 ~]# /etc/init.d/drbd start
  设置primary节点 :[root@drbd1 ~]# drbdadm primary r0
  如果上一步不成功 则执行此命令把此节点设置为primary节点,从头开始同步:
  drbdadm -- --overwrite-date-of-peef primary r0
  此时DRBD完成,查看/proc/drbd
  [root@drbd1 ~]# cat /proc/drbd
  version: 8.3.13 (api:88/proto:86-96)
  GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by  mockbuild@builder10.centos.org, 2012-05-07 11:56:36
  0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
  ns:1744 nr:880 dw:2624 dr:39882 al:13 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
  从输出信息可知,磁盘状态都是UpToDate,表示数据同步完成。
  HA有时间在弄上来!




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660235-1-1.html 上篇帖子: Linux 集群 检测 HeartBeat实战 下篇帖子: heartbeat v3版之mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表