评论

收藏

[MySQL] DRBD+Heartbeat+MySQL高可用

数据库 数据库 发布于:2021-07-03 21:45 | 阅读数:566 | 评论:0

  一、规划

  系统              CentOS 64bit
  DRBD版本          9.0.0
  Heartbeat版本     3.0.6
  MySQL版本         5.6.27
  DRBD磁盘          /dev/sdb1
  主机名(IP)        node1(192.168.10.132)   
                    node2(192.168.10.133)                 
  注:已关闭SeLinux和Firewalld。
  

  二、安装

  Heartbeat安装:http://wangzhijian.blog.51cto.com/6427016/1708694
  DRBD安装:http://wangzhijian.blog.51cto.com/6427016/1710926
  MySQL安装:
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm   ##安装MySQL源
# yum -y install mysql-server  mysql-devel     ##安装MySQL
  

  三、配置互信
  
  HA-01:
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.133
  HA-02:
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.132
  

  四、配置
  

①配置DRBD


  

a.主配置文件drbd.conf
# 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";
  

  b.配置global_common.conf
# cat /etc/drbd.d/global_common.conf|grep -v "#" 
global {
usage-count no;     ##是否参加drbd的使用者统计,默认此选项为YES
}
common {
handlers {
}
startup {
}
options {
}
disk {
}
net {
}
}
  

  c.新建res资源配置文件
# vi /etc/drbd.d/drbd.res          ##新建一个名为drbd的res资源
resource r1 {                ##定义资源组名称为r1
     net {
         cram-hmac-alg sha1;       ##使用sha1加密
         shared-secret "123456";      ##生成共享密钥
     }
     volume 1 {              ##定义卷组
         device  /dev/drbd1;    ##逻辑设备路径(建立块设备)
         disk    /dev/sdb1;    ##物理设备路径(用于复制的分区)
         meta-disk internal;    ##meta data信息存放的方式,该处为内部存储,
                      即和真实数据放在一起存储
     } 
     on node1 {          ##on开头,后面是主机名称(需与uname -n相同)
         node-id  0;
         address  192.168.10.132:7000;    ##设置drbd监听地址和端口
      }
      on node2 {
         node-id  1;
         address  192.168.10.133:7000;
      }
      connection {
         host node1  port 7000;
         host node2  port 7000;
         net {
             protocol C;##使用drbd的第三种同步协议,表示收到对方主机写入确认后,则认为写入完成
         }
      }
}
  
d.挂载新磁盘

  
  # fdisk /dev/sdb
  -----> n
  -----> 1
  -----> 默认
  -----> +300M -----> w
  

  

  f.创建设备元数据并格式化磁盘
# dd if=/dev/zero of=/dev/sdb1 bs=1M count=10     ##用指定大小的块拷贝一个文件
# drbdadm -c /etc/drbd.conf create-md all       ##创建设备元数据
# mkfs.ext4 /dev/drbd1                ##格式化虚拟磁盘
# mkdir -pv /data/mysql 
# chown -R mysql.mysql /data/mysql/
# ln -s /etc/ha.d/resource.d/drbddisk /usr/local/heartbeat/etc/ha.d/resource.d/  ##建立drbddisk脚本至heartbeat的/etc/ha.d/resource.d/的软链接

②Heartbeat配置

     Heartbeat的配置主要涉及到ha.cf、haresources、authkeys这三个文件。其中ha.cf是主配置文件,haresource用来配置要让Heartbeat托管的服务,authkey是用来指定Heartbeat的认证方式。


a.配置ha.cf
# cat /usr/local/heartbeat/etc/ha.d/ha.cf  |grep ^[^#]        
logfile  /var/log/ha-log             ##日志文件记录
logfacility   local0
keepalive  2             ##设定心跳(监测)时间时间为2秒
deadtime  30      ##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源  warntime  10           ##指定心跳延迟的时间
initdead  120      ##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍    udpport  694             ##广播/单播通讯使用的Udp端口
ucast  eno16777736  192.168.10.133 ##采用网卡eno16777736的udp单播来组织心跳,后面为对端IP
auto_failback  on            ##定义当主节点恢复后,是否将服务自动切回
node  node1               ##节点名称,与uname -n显示一致
node  node2
ping  192.168.10.1
b.配置haresources
# cp resource-agents-3.9.6/heartbeat/mysql /usr/local/heartbeat/etc/ha.d/resource.d/   ##复制MySQL脚本至heartbeat的/etc/ha.d/resource.d/下
# cat /usr/local/heartbeat/etc/ha.d/haresources |grep ^[^#]
node1  IPaddr::192.168.10.222/24/eno16777736 drbddisk::r1 Filesystem::/dev/drbd1::/data::ext4  mysql
node1是HA集群的主节点,IPaddr为heartbeat自带的执行脚本,heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.10.222/24 start的操作,即虚拟一个子网掩码为255.255.255.0,IP为192.168.10.222的地址,此IP为heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口,接着,指定使用的DRBD的资源,然后,Heartbeat将执行共享磁盘分区的挂载操 作,"Filesystem::/dev/sdb1::/data::ext4"相当于在命令行下执行mount操作,即"mount -t ext4 /dev/sdb1 /data",最后依次启动MySQL服务。


c.配置authkeys
# grep -v "#" /usr/local/heartbeat/etc/ha.d/authkeys 
auth 2
2 sha1 HI!
auth 后面填写序号,可任意填写,但第二行开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义密钥



d.复制配置文件至node2
# scp /usr/local/heartbeat/etc/ha.d/* root@192.168.10.133:/usr/local/heartbeat/etc/ha.d/
注:需更改ha.cf的ucast中的IP为node1的IP(该处为192.168.10.132)。
  

  ③配置MySQL
# vi /etc/my.cnf
datadir=/data/mysql         ##修改MySQL的数据存储目录
  

  五、测试
  ①
# drbdadm up r1                  ##启用该资源
# drbd-overview 
 1:r1/1  Connected(2*) Secondary(2*) UpToDa/UpToDa 
# systemctl start mysql
# systemctl start heartbeat
   DSC0000.png

  已实现自动挂载
  

  ②故障切换测试
  node1:
# systemctl stop heartbeat
  node2:

DSC0001.png

DSC0002.png

  已实现正常切换
  


  
关注下面的标签,发现更多相似文章