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

[经验分享] HeartBeat+MySQL+DRBD

[复制链接]

尚未签到

发表于 2019-1-7 06:07:50 | 显示全部楼层 |阅读模式
  先卸载两边节点原来磁盘设备所对应的挂载目录,并在fstab里注释掉相关行,防止系统启动时自动挂载
  
  

  
  yum install heartbeat.x86_64 heartbeat-libs.x86_64 -y
  
  1.两边节点的mysql的uid和gid要一致
  
  2.附件内heartbeat的配置文件都放在/etc/ha.d/下
  
  3.DRBD和Heartbeat的通信采用网线直连方式,以防干扰,避免交换机单点故障.
  4.Service需要如下设置,两边节点需一致
  mysqld开机不启动,
  drbd开机启动
  heartbeart开机启动
  

  

  

  
  加上静态路由直走该网卡通信,em2为DRBD直连网卡,放入
  
  HB1(10.0.1.11)
  
  route add -host 10.0.1.12 dev em2
  
  HB2(10.0.1.12)
  
  route add -host 10.0.1.11 dev em2
  
  

  
  加上静态路由直走该网卡通信,eth2为Heartbeat直连网卡
  
  DRBD1(10.0.0.11)
  
  route add -host 10.0.0.12 dev eth2
  
  DRBD2(10.0.0.11)
  
  route add -host 10.0.0.11 dev eth2
  
  

  
  ha.cf
  
  

  
  该文件2边配置文件都保持一致,但是如果心跳采用单播模式,记得两边配置文件对应行需要修改成对方节点IP
  
  ===============================================================================
  
  debugfile /var/log/ha-debug
  
  logfile /var/log/ha-log
logfacility local1
#options configure
keepalive 2
deadtime 30
warntime 10
initdead 120
#心跳网卡上的组播
#mcast eth2 225.0.0.7 694 1 0    //多节点采用组播方式,不过双节点也可以
ucast eth2 192.168.0.82       //双节点可以考虑采用单播方式,IP填写对方节点即可
#node configure
#不要自动failback
auto_failback off          //主节点宕机恢复后,不会自动接管资源,数据库没事别切来切去.
node    cluster1          //主机名,使用uname -n查看
node    cluster2
crm no

  
  ===============================================================================
  

  
  haresources
  
  

  
  该文件2边配置文件都保持一致
  
  1.IPaddr,drbddisk,Filesystem,mysqld都是存在于/etc/ha.d/resource.d或者/etc/init.d下的文件,heartbeat会自动去这2个目录下寻找对应的命令
  
  2.IPaddr::192.168.1.151/24/eth1,表示VIP的地址/掩码/以及VIP绑定在哪块网卡上.
  
  3.drbddisk::r0,这里的r0是drbd的resource name,在drbd.conf可以查看
  
  ===============================================================================
  
  cluster1 IPaddr::192.168.1.151/24/eth1 drbddisk::r0 Filesystem::/dev/drbd0::/var/lib/mysql::ext4 mysqld
  
  ===============================================================================
  
  

  
  authkeys
  
  

  
  该文件2边配置文件都保持一致
  该文件权限属性必须是600  
  
  ===============================================================================
  
  auth 1
  
  1 sha1 47e9336850f1db6fa58bc470bc9b7810eb397f04
  
  ===============================================================================
  

  
  drbd.conf
  
  ===============================================================================
  
  #
# please have a a look at the example configuration file in
# /usr/share/doc/drbd83/drbd.conf
#
global {
     # minor-count 64;
     # dialog-refresh 5; # 5 seconds
     # disable-ip-verification;
     usage-count no;
}

common {
     syncer { rate 100M; }
}

resource r0 {
     protocol C;
     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";
          fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
          after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
}

net {
     # timeout               60;
     # connect-int          10;
     # ping-int               10;
     # max-buffers          2048;
     # max-epoch-size     2048;
    after-sb-0pri disconnect;
    after-sb-1pri disconnect;
    after-sb-2pri disconnect;
    rr-conflict disconnect;
     cram-hmac-alg     "sha1";
     shared-secret     "FDD123456";
    # 使用dopd (drbd outdate-peer daemon) 功能保证在数据不同步时不进行切换(Heartbeat)

}

disk {
     on-io-error     detach;
#     fencing          resource-only;
     # 使用dopd (drbd outdate-peer daemon) 功能保证在数据不同步时不进行切换
}

startup {
     wfc-timeout 120;
     degr-wfc-timeout 120;
}

#on之后必须是主机名,使用uname -n得到
on cluster1 {
     device     /dev/drbd0;
     disk     /dev/sdb1;
     address     192.168.0.81:7788;
     meta-disk     internal;
}

on cluster2 {
     device     /dev/drbd0;
     disk     /dev/sdb1;
     address     192.168.0.82:7788;
     meta-disk     internal;
}

}

  
  ===============================================================================
  
  

  
  chk_mysql.sh
  
  

  
  这个文件的作用是检查MySQL的进程是否存在,如果不存在则杀死heartbeat,触发备节点接管业务.
  
  该文件加上可执行权限后放在/usr/bin下,然后放在/etc/init.d/mysql的start段的末尾:
  
  case "$1" in
  start)
    start
    bash /usr/bin/chk_mysql.sh  &
    ;;

  
  这样就能随mysql启动而启动了
  
  ==============================================================================
  
  #!/bin/bash
#filename:chk_mysql.sh
CHK_MYSQL=$(ps -C chk_mysql.sh --no-header|wc -l)
if [[ "$CHK_MYSQL" -gt 0 ]]
        then

  
           echo "chk_mysql.sh is started"
  
                  exit 0
else
while test 1 = 1
do
DRBD=$(drbd-overview |awk '{print $3}'|awk -F\/ '{print $1}')
if [[ "$DRBD" = "Primary" ]]
        then
                echo "DRBD is Primary,it's going to check MySQL status"
                MYSQL=$(ps -C mysqld --no-header|wc -l)
                if [[ "$MYSQL" -eq 0 ]]
                        then
                                echo "MySQL is not running,pkill heartheart"
                 $(killall heartbeat) && sleep 60 && break
             else
                                echo "MySQL is runing,do nothing"
                                sleep 60
                fi
        else
                echo "DRBD is not Primary,do nothing"
                sleep 60
fi
done

  
  fi
  
  ===========================================================
  
  

  
  

  
  
  
  





运维网声明 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-660068-1-1.html 上篇帖子: heartbeat+drbd监控脚本(自动发现问题,并邮件通知) 下篇帖子: mysql+heartbeat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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