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

[经验分享] MYSQL+heratbeat+DRBD+LVS 数据库高可用群集

[复制链接]

尚未签到

发表于 2019-1-5 10:27:13 | 显示全部楼层 |阅读模式
  在企业数据库应用群集方案中MYSQL+heratbeat+DRBD+LVS已经很成熟了,通过heartbeat+DRBD实现MYSQL的主节点写操作的高可用性;通过MYSQL+LVS实现MYSQL读操作的负载均衡。
  DRBD简单工作流程:
       当数据写入到本地主节点时,这些数据会通过网络发送到另一台主节点上。本地主节点和远程主节点数据通过TCP/IP协议保持同步,主节点故障时,远程节点保存相同的数据,可以接替主节点继续提供数据。两个主节点之间使用heartbeat来监测对方是否存活。
  群集的简单架构图如下:
  
  
  DRBD部分:
  1、设置host
  192.168.0.229    mysql-drbd-1
  192.168.0.230    mysql-drbd-2
  
  
  
  2、磁盘的设置
  本地主节点的分区要跟远程主节点的分区大小一致。
  新添加的分区格式化后就放在那里等待以后的配置就可以。
  
  
  3、yum安装DRBD以及配置文件
  #yum install -y drbd83 kmod-drbd83 #yum安装
  #modprobe drbd    #加载模块
  
  
  [root@mysql-drbd-2 ~]# cat /etc/drbd.conf  #配置文件
  #
# please have a a look at the example configuration file in
# /usr/share/doc/drbd83/drbd.conf
#
#create by yw_cy at 2013-07-10

  global {
         # minor-count 64;
         # dialog-refresh 5; #5 seconds
         # disable-ip-verification;
         usage-count no;
}

  common {
  syncer { rate 200M; }
}

  resource r0 {
        protocol      C;
        handlers {
             pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
             pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
             local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
             fence-peer "/usr/lib64/heartbeat/drbd-peer-outdater -t 5";
             pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert' root";
             split-brain "/usr/lib/drbd/notify-split-brain.sh root";
             out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
}

   net {
        # timeout           60;
        # connect-int       10;
        # ping-int          10;
        # max-buffers     2048;
        # max-epoch-size  2048;
        cram-hmac-alg "sha1";
        shared-secret "MySQL-HA";
}

  disk {
        on-io-error detach;
        fencing resource-only;
}

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

  device       /dev/drbd0;
  on mysql-drbd-1 {
        disk        /dev/sdb1;
        address     192.168.0.229:7788;
         meta-disk   internal;
}

  on mysql-drbd-2 {
        disk        /dev/sdb1;
        address     192.168.0.230:7788;
        meta-disk   internal;
}

  }
  
  本地跟远程的一样就可以。
  
  
  
  4、DRBD的启动
       创建DRBD元数据库信息,命令为 #drbdadm  create-md  r0
  执行这个命令是有肯能会报错,这时需用dd命令覆盖文件系统中的块设备信息。
  dd if/dev/zero  of=/dev/sdb1  bs=1M  count=128
  然后在执行刚才那个创建元数据库信息的命令就会成功了,然后就可以启动了
  /etc/init.d/drbd  start
  启动有可能也会报错,一般是权限啊,所属组的问题,按照提示依次完成就可以了。然后在次启动,成功。
  
  
  
  5、将节点设置为primary节点
  #drbdadm primary r0   
  #drbdadm  --  --  overwrite-data-of-peer  primary all #如果上一步执行不成功,则执行此命令把此节点设置为primary,从头开始同步
  #mkfs.ext3  /dev/sdb1
  
  
  
  6、从新启动drbd
  记得上面的操作都是在两个节点同时操作。
   [root@mysql-drbd-1 ~]# /etc/init.d/drbd restart
Stopping all DRBD resources: .
Starting DRBD resources: [ d(r0) s(r0) n(r0) ].  

  
  
  
  7、查看数据同步情况
  [root@mysql-drbd-1 ~]# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by
mockbuild@builder10.centos.org, 2013-03-27 16:01:26
0: cs:Connected ro:Primary/Secondary 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:b oos:0

  具体意思不多说,主要看两个关键字,primary/secondary  表示两台节点的关系建立完成,一台主要,一台次要。
  update/update表示数据也同步了。到此DRBD部分配置完毕。
  
  
  8、DRBD的应用测试
  有些时候我们对于程序的原理或者运行流程我们不太懂,那就通过一个简单的方式,来告诉大家drbd的主要功能时什么。
  
  (1)先查看两台drbd的状态,由hostname区分
  [root@mysql-drbd-1 /]# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:331828 nr:36 dw:132696 dr:199493 al:49 bm:37 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

  ###############################################################################
  [root@mysql-drbd-2 /]# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:36 nr:331828 dw:331864 dr:93 al:1 bm:37 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

  由输出可知,目前两台都是从状态,而且完成同步。
  
  
  
  (2)现在我们将mysql-drbd-1 设置为主:r0是配置文件中对这个数据块起的名字,如果就建立了一个也可以用all
  [root@mysql-drbd-1 /]# drbdadm primary all
[root@mysql-drbd-1 /]# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:331828 nr:36 dw:132696 dr:199493 al:49 bm:37 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

  
  
  (3)然后在主机的根下建立个文件夹database,然后将drbd0(配置文件中设置的)挂载到database下。
  [root@mysql-drbd-1 /]# mount /dev/drbd0 /database
[root@mysql-drbd-1 /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      7.1G  3.1G  3.8G  45% /
/dev/sda1              99M   13M   81M  14% /boot
tmpfs                 143M     0  143M   0% /dev/shm
/dev/drbd0            4.0G   73M  3.7G   2% /database

  然后进入到/database中建立一个测试文件testdrbd.txt
  [root@mysql-drbd-1 database]# touch testdrbd.txt
[root@mysql-drbd-1 database]# ll
total 16
-rw-r--r-- 1 root root     0 Jul 16 13:55 create_test_drbd
drwx------ 2 root root 16384 Jul 16 13:54 lost+found。

-rw-r--r-- 1 root root     0 Jul 16 14:26 testdrbd.txt

  这样我们就模拟了前端将数据写入的drbd中。
  
  
  
  (4)切换drbd验证测试结果
  现在我们把mysql-drbd-1还原成初始状态,还原的步骤就是卸载,然后降级成secondary。然后再把mysql-drbd-2设置成主,然后在挂载上drbd0。
  [root@mysql-drbd-2 /]# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:36 nr:331904 dw:331940 dr:93 al:1 bm:37 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

  [root@mysql-drbd-2 /]# mount /dev/drbd0 /database
[root@mysql-drbd-2 /]# cd /database
[root@mysql-drbd-2 database]# ll
total 16
-rw-r--r-- 1 root root     0 Jul 16 13:55 create_test_drbd
drwx------ 2 root root 16384 Jul 16 13:54 lost+found
-rw-r--r-- 1 root root     0 Jul 16 14:26 testdrbd.txt

  这样,mysql-drbd-2的database目录下就也出现了testdrbd.txt文件,验证了drbd的写入高可用功能,测试成功。
  ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
  
  
  
  
  
  
  
  
  
  
  
  
  
  




运维网声明 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-659571-1-1.html 上篇帖子: LVS的DR模型的配置及扩展应用(一) 下篇帖子: LINUX虚拟服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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