Mysql+Heartbeat+DRBDLinux(适用操作系统:CentOS5)————————————————————————完成人员:李凯翔完成日期:2011-06-30Qq;17501444LinuxtoneID:SharkShowGoogletalk:Net.SharkShow@gmail.com————————————————————————黑色加粗字体为命令.淡蓝加粗是显示内容红色是注释一.实验要求Mysql+heartbeat+DRBD高可用性(主.备).Mysql=数据库DRBD=类似网络RAID-1功能写入本地的文件会通过网络以相同方式写在另一文件系统Heartbeat=状态监控平滑冗余二.实验拓扑三.系统环境操作系统:CentOs5.5(关闭selinux及iptables)相关软件:Mysql、heartbeat、drbd83、kmod-drbd83.网络要求:所有服务器位于同一VLan机器无特殊要求。四.地址规划名称角色IP地址db_a主mysqlVIP:192.168.1.88/24Eth0:192.168.1.10/24Eth1:8.8.8.1/24db_b备mysqlEth0:192.168.1.20/24Eth1:8.8.8.2/24五.安装软件1.更新yum源(将yum源替换成中国科大的yum源或mirrors的源)#cd/etc/yum.repos.d'#进入yum源目录#mvCentOS-Base.repo{,.bak}#修改默认网络源的名字使其不生效#wget下载中科大源#wget下载mirrors-163源#wget下载mirrors-sohu源注意:三个源任选一个就好.我是使用163的2.Yum安装mysql/heartbeat/drbd/kmod-drbd###############Yum##############yum–yinstallmysql#安装mysql–y安装时自动确认#yum–yinstallheartbeat*#安装heartbeat所有的–y安装时自动确认#yum–yinstalldrbd83#安装drbd83.–y安装时自动确认#yum–yinstallkmod-drbd83#安装kmod-drbd83–y安装时自动确认3.安装heartbeatyum安装heartbeat会出现这个错误:useradd:userhaclusterexistserror:%pre(heartbeat-2.1.3-3.el5.centos.i386)scriptletfailed,exitstatus9error:install:%prescriptletfailed(2),skippingheartbeat-2.1.3-3.el5.centos不用理他,在用yum安装一次就处理好了4.两台机器查看heartbeat是否安装全#rpm-qa|grepheartbeat#查看安装包是否完整.应该是6个5.网络配置cat/etc/hostsSharkShow192.168.1.10db_a#添加db_a的解析192.168.1.20db_b#添加db_b的解析SharkShow一.配置DRBD1.修改drbd配置文件vim/etc/drbd.confglobal{usage-countyes;#是否参加DRBD使用者统计.默认是yes}common{syncer{rate100M;}#设置主设备节点同步时的网络速率最大值.drbd83支持最大900M}resourcer1{#这里定义的是名字.接下来创建DRBD设备时需要指定r1.protocolC;#使用协议C.表示收到远程主机的写入确认后,则认为写入完成.startup{}disk{on-io-errordetach;#当磁盘有错误时,不连接}net{cram-hmac-algsha1;#设置主备设备之间通信使用的信息算法.shared-secret“SharkShow”;}ondb_a{#每个主机的说明以”on”开头,后面是主机名在{}内的是配置.device/dev/drbd1;#今后生成使用的设备名;不用和实际分区号一样.不过最好规范disk/dev/sdb1;#该节点上用于存放数据的分区号address192.168.1.10:7898;#该节点的IP地址meta-diskinternal;#metadata信息存放方式“网络”}ondb_b{#每个主机的说明以”on”开头,后面是主机名在{}内的是配置device/dev/drbd1;#今后生成使用的设备名;不用和实际分区号一样.不过最好规范disk/dev/sdb1;#该节点上用于存放数据的分区号address192.168.1.20:7898;#该节点的IP地址meta-diskinternal;#metadata信息存放方式“网络”}}2.配置完毕后使用scp传到备服务器上.文件必须完全一直否则DRBD服务无法启动scp/etc/drbd.confroot@192.168.1.20:/etc/#提示信息输yes;然后输入密码3.在创建DRBD设备之前先执行mkfs.ext3实际分区;mkfs.ext3/dev/sdb1#创建文件系统并格式化.drbd支持ext2/ext3/XFS/JFS/reiserFS4.为了防止创建DRBD出错对实际分区执行如下命令ddif=/dev/zerobs=1Mcount=1of=/dev/sdb1;sync5.在两台服务器上都执行如下命令创建DRBD设备drbdadmcreate-mdr1#“r1是我们在drbd.conf里定义Writingmetadata...initializingactivitylogNOTinitializedbitmapNewdrbdmetadatablocksuccessfullycreated.6.开启两台服务器上都开启DRBD服务/etc/init.d/drbdstart7.在两台服务器上查看是否创建了DRBD设备ls–lhd/dev/drbd1brw-r-----1rootdisk147,1Jul104:07/dev/drbd18.查看DRBD状态cat/proc/drbdversion:8.3.8(api:88/proto:86-94)GIT-hash:d78846e52224fd00562f7c225bcc25b2d422321dbuildbymockbuild@builder10.centos.org,2010-06-0408:04:091:cs:Connectedro:Secondary/Secondaryds:Inconsistent/InconsistentCr----ns:0nr:0dw:0dr:0al:0bm:0lo:0pe:0ua:0ap:0ep:1wo:boos:20964116/proc/drbd/中显示了DRBD当前的状态.ro:显示两台主机的状态.都是“备机/备机”.ds:是磁盘状态.都是“不一致/不一致”9.在db_a上执行下命令升为主机的命令drbdadmprimaryallversion:8.3.8(api:88/proto:86-94)GIT-hash:d78846e52224fd00562f7c225bcc25b2d422321dbuildbymockbuild@builder10.centos.org,2010-06-0408:04:091:cs:SyncSourcero:Primary/Secondaryds:UpToDate/InconsistentCr----ns:65252nr:0dw:0dr:73056al:0bm:3lo:1pe:13ua:244ap:0ep:1wo:boos:20899252[....................]sync'ed:0.4%(20408/20472)Mdelay_probe:5finish:0:10:41speed:32,432(32,432)K/secro:显示两台主机的状态.”主机/备机”ds:是磁盘状态.都是“upTodate/不一致”可以看出[....................]sync'ed:正在同步了已经进度0.4%二.配置heartbeat(主要就是配置三个文件:ha.cf、haresources和authkeys)1.配置ha.cf#vim/etc/ha.d/ha.cf配置选项如下debugfile/var/log/ha-debug#指定heartbeat调试日志文件存放的位置logfile/var/log/ha-log#指定heartbeat运行系统日志存放的位置logfacilitylocal0#日志记录等级keepalive2#指定多久检测一次心跳heartbeat本实验2秒warntime5#连续多长时间联系不上开始警告提示本实验5秒deadtime30#等待声明主机死机的时间.30秒内没有心跳信号.切换服务initdead#指定heartbeat首次启动时deadtime应该为多久.预留忽略时间#bcastbond0#只有两台机器的时候可以使用广播.udpport694#使用upd694检测心跳服务#baud19200#串口通讯的波特率,本实验环境不需要,注释掉#serial/dev/ttyS0#主从如果是串口链接,需将此注释取消ucasteth18.8.8.2#这里指定db_b的地址.在db_b上配置时需要改成db_a地址auto_failbackon#恢复正常后是否需要切换回来nodedb_a#指定heartbeat使用那些主机.主机名于uname-n一致nodedb_b#备用节点名称ping192.168.1.254#只是用于检测节点的连通性,并不作为节点切换的真正依据watchdog/dev/watchdog#看门狗。如果本节点1分钟后还没有发出心跳.那么本节点自动重启respawnhacluster/usr/lib/heartbeat/ipfail#配置ip绑定和切换功能apiauthipfailgid=haclientuid=hacluster#控制ip切换时所使用的用户2.配置authkeys#vim/etc/ha.d/authkeys配置项如下.表示使用md5作为数字签名算法对心跳数据包加密保存退出后必须调整此文件的权限为600只有root用户有权限否则启动失败日志提示.权限安全问题auth33md5sharkshow#chmod600/etc/ha.d/authkeys#更改文件权限3.创建文件系统切换脚本vim/etc/ha.d/resource.d/mysql_qiehuan#注意这个路径下面会说#!/bin/bashunsetLC_ALL;exportLC_ALLunsetLANGUAGE;exportLANGUAGEprefix=/usrexec_prefix=/usr./etc/ha.d/shellfuncscase“$1”instart)#/sbin/drbdadm----do—what-I-sayprimaryallservicemysqlstart/sbin/drbdadmprimaryall#提升为primary#drbdsetup/dev/drbd1primary–o/bin/mount/dev/drbd1/linuxtone#挂载;;stop)servicemysqlstop/bin/umount/linuxtone#注意释放权限的时候必须先卸载/sbin/drbdadmsecondaryall#降为