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

[经验分享] DRBD+Heartbeat+MySQL高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-17 09:18:38 | 显示全部楼层 |阅读模式
一、规划

系统              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://www.iyunv.com/thread-134366-1-1.html
DRBD安装:http://www.iyunv.com/thread-137400-1-1.html
MySQL安装:
1
2
3
# 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:
1
2
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.133



HA-02:
1
2
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
1
2
3
4
# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cat /etc/drbd.d/global_common.conf|grep -v "#"
global {
usage-count no;       ##是否参加drbd的使用者统计,默认此选项为YES
}
common {
handlers {
}
startup {
}
options {
}
disk {
}
net {
}
}




c.新建res资源配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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.创建设备元数据并格式化磁盘
1
2
3
4
5
6
# 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
1
2
3
4
5
6
7
8
9
10
11
# 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
1
2
3
# 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
1
2
3
# grep -v "#" /usr/local/heartbeat/etc/ha.d/authkeys
auth 2
2 sha1 HI!



auth 后面填写序号,可任意填写,但第二行开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义密钥

d.复制配置文件至node2
1
# 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
1
2
# vi /etc/my.cnf
datadir=/data/mysql                 ##修改MySQL的数据存储目录




五、测试

1
2
3
4
5
# drbdadm up r1                                    ##启用该资源
# drbd-overview
1:r1/1  Connected(2*) Secondary(2*) UpToDa/UpToDa
# systemctl start mysql
# systemctl start heartbeat



wKioL1ZAJ1XATr0tAABnJGHoKAU755.jpg

已实现自动挂载

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



node2:

wKioL1ZALsCDQab5AABJUoscj8o546.jpg
wKiom1ZAL8KxJ5P9AAAv2BPV6ho492.jpg
已实现正常切换



运维网声明 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-140169-1-1.html 上篇帖子: percona xtrabackup 2.3.2 MySQL5.6 备份恢复 下篇帖子: 使用XtraBackup备份MariaDB
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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