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

[经验分享] 双机热备heartbeat+drbd+mysql

[复制链接]

尚未签到

发表于 2019-1-7 09:31:00 | 显示全部楼层 |阅读模式
                       Heartbeat+drbd
双机热备+mysql
1.  heartbeat
用于搭建双机热备环境,可以通过专门的心跳线来连接双机,也可以通过普通的网线来连接。
下载地址http://www.linux-ha.org/
2.  drbd
通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。
下载地址http://www.drbd.org/

heartbeat可以独立完成双机热备功能
drbd用于镜像主备机之间的数据,不需要可不安装

Heartbeat安装
本文中使用yum服务自动安装heartbeat全部程序
版本为heartbeat-2.1.3-3.x86_64
注:所有节点都要安装,并且配置一样

一.安装heartbeat
  1.首先,我安装这个软件的时候用的搜狐的yum源;只需要执行以下两步,就会自动给你安

装一个可用的yum源
  # wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-7.noarch.rpm
  # rpm -ivh epel-release-6-7.noarch.rpm
   这时,在我们的/etc/yum.repos.d里面就会多出两个yum源
  2.安装好yum源,之后,我们就可以用yum安装heartbeat了,一键搞定的
   # yum install heartbeat* -y
  3.下面,我们就要找到heartbeat的配置文件,但是,我们的配置目录中是找不到它的配
置文件的,这时候,我们可以先进入配置文件目录
   # cd /etc/ha.d/
   这样进去之后,会发现README.config这个配置文件,我们进去看一下
   # vim README.config
   有一段内容如下:
   If you installed heartbeat using rpm packages then
this command will show you where they are on your system:
                rpm -q heartbeat -d
   这段是告诉我们要rpm -q heartbeat -d这个命令来找到配置文件
   # rpm -qd heartbeat
    执行完这个命令之后,我们可以看到如下内容:
/usr/share/doc/heartbeat-3.0.4/AUTHORS
/usr/share/doc/heartbeat-3.0.4/COPYING
/usr/share/doc/heartbeat-3.0.4/COPYING.LGPL
/usr/share/doc/heartbeat-3.0.4/ChangeLog
/usr/share/doc/heartbeat-3.0.4/README
/usr/share/doc/heartbeat-3.0.4/apphbd.cf
/usr/share/doc/heartbeat-3.0.4/authkeys
/usr/share/doc/heartbeat-3.0.4/ha.cf
/usr/share/doc/heartbeat-3.0.4/haresources
/usr/share/man/man1/cl_status.1.gz
/usr/share/man/man1/hb_addnode.1.gz
/usr/share/man/man1/hb_delnode.1.gz
/usr/share/man/man1/hb_standby.1.gz
/usr/share/man/man1/hb_takeover.1.gz
/usr/share/man/man5/authkeys.5.gz
/usr/share/man/man5/ha.cf.5.gz
/usr/share/man/man8/apphbd.8.gz
/usr/share/man/man8/heartbeat.8.gz
   这时候,我们只需要将 ha.cf, haresources,authkeys这三个配置文件cp到/etc/ha.d/

目录下就好了
   # cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/
   # cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/
   # cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/
   到此,所有的配置文件都全了,开始修改配置吧!

authkeys 双机互联验证配置文件
haresources 集群资源配置文件

ha.cf 主配置文件
#vi /etc/ha.d/ha.cf
logfile /var/log/ha-log #File to write other messages to
logfacility local0 #这个是设置heartbeat的日志,这里是用的系统日志

##设定心跳(监测)时间时间为2秒
keepalive 2 #多长时间检测一次
warntime 5 #连续多长时间联系不上后开始警告提示
deadtime 20 #连续多长时间联系不上后认为对方宕机(单位是妙)
initdead 120 #这里主要是给重启后预留的一段忽略时间段(比如:重启后启动网络等,如果在网络还没有通,keepalive检测肯定通不过,但这时候并不能切换)

#采用eth1的udp广播用来发送心跳信息(eth1为网卡名,可以在ifconfig看到)
#bcast eth1

#采用网卡eth1的udp单播来通知心跳,IP为对方IP,建议采用单播。当一个网段有多台这样cluster话,则一定要采用单播,否则每组cluster都会看到对方的节点,从而报错。(eth1为网卡名,可以在ifconfig看到)
ucast eth1 192.168.1.231

##使用udp端口694 进行心跳监测
udpport 694
auto_failback off #恢复正常后是否需要再自动切换回来,一般都设为off。
##节点1,必须要与 uname -n 指令得到的结果一致。(填写机器名,可能需要在/etc/hosts中设置)
node alsme_probe3
##节点2(填写机器名,可能需要在/etc/hosts中设置)
node alssme_probe4

# #默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况。
# #所以当网络中断时,并不会进行Load BalancerBackup之间的切换。
# #可以通过ipfail插件,设置'ping nodes'来解决这一问题。详细说明参考hearbeat文档。
##通过ping 网关来监测心跳是否正常
ping 192.168.1.1
hopfudge 1
deadping 5
#指定和heartbeat一起启动、关闭的进程
respawn hacluster /usr/local/lib64/heartbeat/ipfail
#系统权限设置(可以不改)
#apiauth ipfail gid=haclient uid=hacluster

authkeys 双机互联验证配置文件
#可以根据实际需要更改,配置文件中有详细说明
#vi / etc/ha.d/authkeys
auth 1
1 crc
#注意authkeys的权限一定要是600.
#chmod 600 / etc/ha.d/authkeys

haresources集群资源配置文件
#vi /etc/ha.d/haresources
server1 IPaddr::192.168.10.3/24/eth1   #这里的ip是我们再ha.cf里定义的主节点ip
在这里,我这里写的比较简单,下面会讲的比较详细的
server1:是我的主服务器上的hostname显示的主机名字
IPaddr::192.168.10.3/24/eth1   #设置虚拟IP

启动和关闭heartbeat的方法
#将heartbeat配置成系统服务
#chkconfig --add heartbeat
#启动
#service heartbeat start
#关闭
#service heartbeat stop

查看heartbeat状态
#service heartbeat status
heartbeat OK [pid 13763 et al] is running on alsme_probe3 [alsme_probe3]...


二.drbd安装
本文中使用yum服务自动安装drbd全部程序
版本为drbd83-8.3.8-1.x86_64
注:所有节点都要安装,并且配置一样

  1.安装yum源
    # wget http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
    # rpm -ivh elrepo-release-6-4.el6.elrepo.noarch.rpm

    修改yum源的配置文件
    # vi /etc/yum.repos.d/elrepo.repo
    将第8行的enable=1改成enable=0
[elrepo]
name=ELRepo.org Community Enterprise Linux Repository - el6
baseurl=http://elrepo.org/linux/elrepo/el6/$basearch/
mirrorlist=http://elrepo.org/mirrors-elrepo.el6
enabled=0         --->就是修改这个地方
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0
    到这里,安装drbd的yum源已经安装好了,可以一键安装了

2.开始安装drbd及依赖的软件
# yum --enablerepo=elrepo install drbd83-utils kmod-drbd83 -y
到这里drbd就安装完了

3.drbd.conf主配置文件
#vi /etc/drbd.conf

global {
usage-count yes;                  #参加DRBD使用者统计,默认为yes
}
common {
syncer { rate 100M; }      #设备主备节点同步时的网络速度最大值,我这里是100M网
startup {
    degr-wfc-timeout 120;      #同步超时时间
    wfc-timeout 120;
}
}
#资源配置
resource db {
protocol C;      #使用协议c,表示收到远程主机的写入确认后,则认为写入完成
disk {
on-io-error detach;
#size 1G; #两台服务器硬盘大小不同,才需要设置drbd的大小
}

net {
cram-hmac-alg sha1; #设置主备机之间通信使用的信息算法。
shared-secret "FooFunFactory";
}

#节点1
on server1 {
device /dev/drbd0;        #将使用的分区,该分区映射到 /dev/sdb5
#块文件
disk /dev/sda5;
address 192.168.5.200:7791;        #指定IP地址和端口号
meta-disk internal;               #网络通信属性
}
#节点2
on server2 {
device /dev/drbd0;
#块文件
disk /dev/sda5;
address 192.168.5.199:7791;
meta-disk internal;
}
}

注:配置中同一资源在各个节点块文件(例如disk /dev/sda5)大小需要完全一样。

# mkfs.ext4 /dev/sdb5 #使用ext4格式分区格式化/dev/sdb5
# dd if=/dev/zero of=/dev/sdb5 bs=1M count=1;sync
# drbdadm create-md db #初始化drbd的metadata,db是前面定义的resource。
# /etc/init.d/drbd start #启动Master上的drbd时,就去启动backup的drbd,否则Master无法启动。
# ps -aux|grep drbd
注:drbd设备有三个进程:drbd0_worker是drbd0的主进程,drbd0_asender是primary上drbd0的数据发送进程,drbd0_receiver是secondary上drbd0的数据接收进程。
# cat /proc/drbd #查看drbd状态,此时结果应为st:Secondary/Secondary,ds:Inconsistent/Inconsistent。
======================仅主机执行=============================================
# drbdsetup /dev/drbd0 primary -o #设置主节点,仅第一次使用drbdsetup,以后则用drbdadm。
# cat /proc/drbd #查看drbd状态,此时结果应为st:Primary/Secondary ds:UpToDate/Inconsistent。
# mkfs.ext3 /dev/drbd0
# mount /dev/drbd0 /data
# watch -n 1 cat /proc/drbd
=============================================================================
注:/proc/drbd中显示了drbd当前的状态,第一行的st表示两台主机的状态,主机表示为Primary,备机表示为Secondary。
ds是磁盘状态,实时表示为UpToDate,不一致表示为Inconsistent状态。



启动和关闭drbd的方法
#将drbd配置成系统服务
#chkconfig --add drbd
#启动服务
#service drbd start
#关闭服务
#service drbd stop
#节点设置为primary
#drbdadm primary all        #这个命令每次重启drbd的时候,都要执行的
#节点设置为secondary
#drbdadm secondary all

启动之后可以挂载drbd分区(例如device /dev/drbd0)
第一次启动需要格式化drbd分区,使用命令
mkfs.ext3 /dev/drbd0
使用mount命令挂载
该分区可以用于存放数据库的数据文件或其他需要同步文件。

split brain的处理
split brain实际上是指在某种情况下,造成drbd的两个节点断开了连接,都以primary的身份来运行。当drbd某primary节点连接对方节点准备发送信息的时候如果发现对方也是primary状态,那么会会立刻自行断开连接,并认定当前已经发生split brain了,这时候他会在系统日志中记录以下信息:“Split-Brain detected,dropping connection!”当发生split brain之后,如果查看连接状态,其中至少会有一个是StandAlone状态,另外一个可能也是StandAlone(如果是同时发现split brain状态),也有可能是WFConnection的状态。这种情况会造成各个节点中的数据不一致,恢复正常状态需要节点中选出主机,其他节点从主机重新更新数据。

从机上执行
drbdadm secondary resource db
drbdadm -- --discard-my-data connect resource db
主机执行
drbdadm connect resource db
注:这里的主机是要保留数据的节点,从机是不需要保留数据的节点。

三.整合heartbeat和drbd
1.为了让heartbeat启动mysql,需要如下的做法:
# ln -s /etc/init.d/mysql /etc/ha.d/resource.d/mysqld
这一步就是让mysql的启动脚本放到heartbeat调用的脚本目录中

2.整合,其实就是修改haresources集群资源配置文件,主要修改我上面加的那句
server1 IPaddr::192.168.10.3/24/eth1 drbddisk::db Filesystem::/dev/drbd0::/data::ext4 mysqld

解释:
server1:是我的主服务器上的hostname显示的主机名字
IPaddr::192.168.10.3/24/eth1   #设置虚拟IP
drbddisk::db #告诉heartbeat要管理DRBD的资源db。
Filesystem::/dev/drbd0::/data::ext3 #设定需要挂载的drbd设备采用的文件系统,即执行mount与unmout操作。
mysqld #设定要随heartbeat启动的服务。




运维网声明 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.iyunv.com/thread-660209-1-1.html 上篇帖子: HeartBeat v2实现高可用LAMP 下篇帖子: V 8 nfs+drbd+heartbeat 高可用部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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