HA专题: Corosync+Pacemaker+drbd完成MySQL高可用51CTO博客 - 凯时娱乐

HA专题: Corosync+Pacemaker+drbd完成MySQL高可用51CTO博客

2019年02月28日09时44分29秒 | 作者: 尔烟 | 标签: 装备,专题,试验 | 浏览: 2494

HA专题: Corosync+Pacemaker+drbd完结MySQL高可用


纲要

  • 前语

  • 试验拓扑

  • 试验环境

  • 试验进程

    • 装置前准备工作

    • 装备DRBD

    • 装备MySQL

    • 装备Corosync+Pacemaker

  • 测验

  • 我遇到的问题

  • 总结

前语

上篇文章咱们介绍了drbd的相关原理、编译装置、简略的完结. drbd尽管可以确保数据的可靠性可是咱们前次的完结还有许多的缺点,这次咱们将drbd界说为HA集群的一个资源,可以完结让多个节点主动切换drbd的主从形式并结合MySQL完结其数据的高可用

试验拓扑

试验环境


试验进程装置前准备工作

装备一个HA集群的条件需求装备时刻同步, 双机互信, 主机名解析 
由于咱们曾经的博文现已解说过怎么装备:可以查看HA装备准备工作

装备DRBD

进程不做阐明, 看我的上篇博客HA专题: 编译装置并装备DRBD

做成DRBD的设备为/dev/sdb1, 两个节点sdb1都为10G

这儿教咱们一个小技巧, 运用fdisk非交互分区
1. 创立一个分区文件如下, 输入交互式分区按次序的指令

   [root@node1 ~]# cat sdb
       n
       p
       1
       1
       10G
       w

2. 运用输入重定向, 如下即可完结

   [root@node1 ~]# fdisk /dev/sdb < sdb

[root@node1 ~]# yum groupinstall "Development Tools" "Server Platform Development" nogpgcheck -y
[root@node1 ~]# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz
[root@node1 ~]# tar xf drbd-8.4.4.tar.gz -C /usr/src/
[root@node1 ~]# cd /usr/src/drbd-8.4.4/
[root@node1 drbd-8.4.4]# ./configure prefix=/usr/local/drbd sysconf=/etc/ with-km
[root@node1 drbd-8.4.4]# make KDIR=/usr/src/kernels/2.6.32-573.el6.x86_64/
[root@node1 drbd-8.4.4]# make install
[root@node1 drbd-8.4.4]# cp drbd/drbd.ko /lib/modules/2.6.32-573.el6.x86_64/kernel/lib/
[root@node1 drbd-8.4.4]# depmod
[root@node1 drbd-8.4.4]# modprobe drbd



drbd装备文件如下, 仅供参考
[root@node1 drbd-8.4.4]# grep -v "[[:space:]]#" /etc/drbd.d/global_common.conf
global {
   usage-count yes;
}

common {
   handlers {

   }

   startup {
   }

   options {
   }

   disk {
       on-io-error detach;
   }

   net {
       cram-hmac-alg "sha1";
       shared-secret "anyisalin.com";
   }
   syncer {
       rate 1000M;
   }
}


资源装备文件如下
[root@node1 drbd-8.4.4]# cat /etc/drbd.d/data.res
resource data {
   device /dev/drbd0;
   disk /dev/sdb1;
   meta-disk internal;
   on node1.anyisalin.com {
       address 172.16.1.2:7789;
   }
   on node2.anyisalin.com {
       address 172.16.1.3:7789;
   }
}


node2将以上操作重复一遍后, 进行如下操作

[root@node1 drbd-8.4.4]# drbdadm create-md data   #node1上操作
[root@node2 drbd-8.4.4]# drbdadm create-md data   #node2上操作
[root@node1 drbd-8.4.4]# service drbd start       #node1上操作
[root@node2 drbd-8.4.4]# service drbd start       #node2上操作
[root@node1 drbd-8.4.4]# cat /proc/drbd  #查看进展, 等候同步完结
[root@node1 drbd-8.4.4]# drbdadm primary force data #node1设置为Primary
[root@node1 drbd-8.4.4]# mkfs.ext4 /dev/drbd0  #格局化文件体系为ext4
装备MySQL

这儿经过通用二进制格局进行装置

[root@node1 ~]# service drbd start
[root@node1 ~]# mount /dev/drbd0 /data/  #挂载dbrd设备到/data下
[root@node1 ~]# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz  -C /usr/local/
[root@node1 local]# ln -sv mysql-5.5.33-linux2.6-x86_64/ mysql
[root@node1 local]# groupadd -r -g 3306 mysql
[root@node1 local]# useradd -g mysql -u 3306 -r mysql
[root@node1 local]# cd mysql
[root@node1 mysql]# ./scripts/mysql_install_db datadir=/data/ user=mysql
[root@node1 mysql~]# chown mysql:mysql /data/
[root@node1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf  

[root@node1 mysql]# vim /etc/my.cnf   #修改装备文件, 增加下列字段
datadir = /data
skip_name_resolve = on
innodb_file_per_table = on


测验发动
[root@node1 ~]# service mysqld start
Starting MySQL..                                           [  OK  ]

[root@node1 ~]# /usr/local/mysql/bin/mysql

mysql> GRANT ALL  ON *.*  TO anyisalin@% IDENTIFIED BY passwd;  #创立用户
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES ;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE TESTDB; #创立测验数据库
Query OK, 1 row affected (0.00 sec)



为node2装备

[root@node1 ~]# service mysqld stop  #中止MySQL
Shutting down MySQL.                                       [  OK  ]

[root@node1 ~]# umount /data/  
[root@node1 ~]# drbdadm secondary data   #将drbd设置为从形式

同步MySQL的文件到node2上
[root@node1 local]# rsync -av mysql node2.anyisalin.com:/usr/local/
[root@node1 local]# rsync -av mysql-5.5.33-linux2.6-x86_64 node2.anyisalin.com:/usr/local/
[root@node1 local]# scp /etc/rc.d/init.d/mysqld node2.anyisalin.com:/etc/rc.d/init.d/
[root@node1 local]# scp /etc/my.cnf node2.anyisalin.com:/etc/

留意: 以下操作在node2履行
[root@node2 ~]# drbdadm primary data   #将drbd设置为主形式
[root@node2 ~]# mkdir /data
[root@node2 ~]# mount /dev/drbd0 /data  #挂载
[root@node2 ~]# groupadd -g 3306 -r mysql  #创立MySQL用户
[root@node2 ~]# useradd -u 3306 -g mysql -r mysql  #创立MySQL用户

[root@node2 ~]# service mysqld start  #发动MySQL
Starting MySQL..                                           [  OK  ]

[root@node2 ~]# mysql -uanyisalin -ppasswd  #运用咱们方才创立的用户登录

mysql> SHOW DATABASES;  #刚创立的数据库还在
+-+
| Database            |
+-+
| information_schema  |
| TESTDB              |
| #mysql50#lost+found |
| mysql               |
| performance_schema  |
+-+
5 rows in set (0.00 sec)

以上操作完结后需求封闭MySQL并卸载挂载的文件体系, 并将每个节点的drbd设置为从形式

装备Corosync+Pacemaker

装置及装备进程不做阐明, 可以看我曾经的文章 AnyISalIn的文章, crmsh可去SUSE官方站点下载SUSE Centos HA

[root@node1 ~]# yum install corosync pacemaker crmsh -y nogpgcheck 
[root@node1 ~]# cd /etc/corosync/
[root@node1 corosync]# corosync-keygen
[root@node1 corosync]# chmod 600 authkey

装备文件如下: /etc/corosync/corosync.conf

[root@node1 corosync]# grep -v "[[:space:]]*#" /etc/corosync/corosync.conf
compatibility: whitetank

totem {
   version: 2

   secauth: on

   threads: 0

   interface {
       ringnumber: 0
       bindnetaddr: 172.16.1.0
       mcastaddr: 239.255.1.1
       mcastport: 5405
       ttl: 1
   }
}

logging {
   fileline: off
   to_stderr: no
   to_logfile: yes
   logfile: /var/log/cluster/corosync.log
   to_syslog: no
   debug: off
   timestamp: on
   logger_subsys {
       subsys: AMF
       debug: off
   }
}


service {
  ver: 0
  name: pacemaker
}

aisexec {
 user: root
 group: root
}


[root@node2 ~]# yum install corosync pacemaker crmsh -y nogpgcheck
[root@node2 ~]# scp -p node1.anyisalin.com:/etc/corosync/{authkey,corosync.conf} /etc/corosync/


在两个节点上发动corosync
[root@node1 ~]# service corosync start
[root@node1 ~]# ssh node2.anyisalin.com /etc/init.d/corosync start

[root@node1 ~]# crm status  #查看节点状况

Last updated: Wed Apr 13 15:07:52 2016
Last change: Wed Apr 13 15:07:22 2016
Stack: classic openais (with plugin)
Current DC: node2.anyisalin.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
0 Resources configured


Online: [ node1.anyisalin.com node2.anyisalin.com ]

Full list of resources:


装备资源


crm(live)# configure
crm(live)configure# edit    #装备如下, 仅供参考

node node1.anyisalin.com \
       attributes standby=on
node node2.anyisalin.com \
       attributes standby=off
primitive data_drbd ocf:linbit:drbd \
       params drbd_resource=data \
       op monitor role=Master interval=10s timoue=20s \
       op monitor role=Slave interval=20s timeout=20s \
       op start interval=0 timeout=240 \
       op stop interval=0 timeout=120
primitive myip IPaddr \
       params ip=172.16.1.8
primitive mysql service:mysqld
primitive mysqldatafs Filesystem \
       params device="/dev/drbd0" directory="/data" fstype=ext4 \
       op start interval=0 timeout=60 \
       op stop interval=0 timeout=60
ms MS_data_drbd data_drbd \
       meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
colocation myip_with_mysql inf: myip mysql
order mysql_after_mysqldatafs inf: mysqldatafs mysql
colocation mysql_with_mysqldatafs inf: mysql mysqldatafs
order mysqldatafs_afer_MS_data_drbd inf: MS_data_drbd:promote mysqldatafs:start
colocation mysqldatafs_with_MS_data_drbd inf: mysqldatafs MS_data_drbd:Master
property cib-bootstrap-options: \
       dc-version=1.1.11-97629de \
       cluster-infrastructure="classic openais (with plugin)" \
       expected-quorum-votes=2 \
       stonith-enabled=false \
       last-lrm-refresh=1460541144 \
       no-quorum-policy=ignore

测验

现在node1是Master




衔接数据库进行测验



咱们先将node1 standby



再次衔接数据进行测验



查看drbd的状况



我遇到的问题

这个试验我做了好久, 遇到了许多的问题, 大部分经过自己的排查和Google都处理了, 所以特定写下来期望可以协助咱们排查过错

  • 在CentOS6.X的体系中很可能呈现衔接不到CIB的问题, 过错提示信息could not establish cib_ro connection: connection refused (111)

    处理方法: 扫除是自己的问题之后, 运用互联网上的各种软件库房之一对pacemaker更新后并重启corosync即可处理

  • 在手动装备DRBD资源前必定装备好DBRD, 假如DRBD的装备有问题会影响全体作用

    我在这儿说一下我的问题, 做DRBD的之前我在node2创立分区, 分完后忘掉partx -a /dev/sdb,可是很奇怪的是, DRBD居然装备成功了,而且两个节点都能手动切换主从和挂载, 数据也没问题!!!!, 到了最终做两个节点主动切换资源的时分, 资源总是默许倾向于node1节点而且不能切换到node2, 最终才排查出来并处理

总结

这个试验真心累, 做了挨近20个小时, 都快没耐性了, 还好昨夜调整好了心态, 可是今日也做了十二个小时左右, 最终得知自己由于这种小过错才失利的时分真是…. 唉咱们做试验必定要好好查看过错, 真实不可就重做吧, 也不知道哪里挖了坑. HA专题应该还有两篇左右, 敬请期待

作者水平很低, 假如有过错及时指出, 假如你觉得本文写的好请点一波赞~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感谢: MageEdu


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章