为了账号安全,请及时绑定邮箱和手机立即绑定

DRBD+Heartbeat+MySQL高可用

标签:
MySQL


一、规划

系统              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.0IP为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

wKioL1ZAJ1XATr0tAABnJGHoKAU755.png

已实现自动挂载

②故障切换测试

node1:

# systemctl stop heartbeat

node2:

wKioL1ZALsCDQab5AABJUoscj8o546.png

wKiom1ZAL8KxJ5P9AAAv2BPV6ho492.png

已实现正常切换

©著作权归作者所有来自51CTO博客作者心远何方的原创作品如需转载请注明出处否则将追究法律责任

DRBD Heartbeat Linux高可用服务


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消