环境:Centos 6.6 64位
服务器:
Master节点: GuoletaoTest01 IP地址:192.168.2.25
Slave节点:GuoletaoTest02 Ip地址: 192.168.2.26
VIP地址:192.168.2.30
- 一 DRBD 环境搭建:
1) 添加附加库:
官方网站:http://elrepo.org/tiki/tiki-index.php
以下测试针对Centos 6.6 版本:
1)import public key:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2)安装库:
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
2) 安装 DRBD:
DRBD官方网站:http://drbd.linbit.com/docs/install/
yum install drbd kmod-drbd
3)两台服务器上的分区/dev/sdb1作为drbd的网络mirror分区;
格式化分区 fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
4)开始配置drbd
[[email protected] bin]# drbdsetup /dev/drbd1 primary -o
[[email protected] bin]# drbdadm primary mysql_data
编辑drbd文件:
[[email protected] drbd.d]# cat /etc/drbd.d/mysql.res
#设定资源名称为: mysql_data
resource mysql_data {
protocol C;
net {
cram-hmac-alg sha1;
shared-secret "abc";
}
on GuoletaoTest01 {
device /dev/drbd1;
disk /dev/sdb1; #挂载drbd对应的系统分区;
address 192.168.2.25:7898;
meta-disk internal;
}
on GuoletaoTest02 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.2.26:7898;
meta-disk internal;
}
}
两边启动drbd服务:
/etc/init.d/drbd start
查看drbd的状态:
/etc/init.d/drbd status
[[email protected] resource.d]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by [email protected], 2014-11-24 14:51:37
m:res cs ro ds p mounted fstype
1:mysql_data Connected Primary/Secondary UpToDate/UpToDate C /data ext4
如果heartbeat没有安装或者启动,测试时可以手动指定主drbd,命令如下:
指定 drbd的本地为master节点:drbdadm primary mysql_data
挂载drbd分区到本地:mount /dev/drbd1 /data
- 二 Heartbeat安装:
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install heartbeat*
配置要点:
HA有三个配置文件:
密钥文件:authkeys
配置主文件:ha.cf
HA主管的资源配置文件:haresources
PS:
自写的资源启动脚本存放目录:/etc/ha.d/resource.d
HA配置主目录:/etc/ha.d/
1)认证文件配置:
cat authkeys
auth 1
1 crc
2)ha.cf配置:
master上的配置文件:
cat ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
#bcast em1
#设置单播地址,对方ip
ucast eth0 192.168.2.26
auto_failback off
node GuoletaoTest01
node GuoletaoTest02
ping 192.168.2.1 #填写网络中网关的地址
hopfudge 1
deadping 5
respawn hacluster /usr/lib64/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster2
slave节点上的配置文件:
[[email protected] ha.d]# cat ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
#bcast em1
ucast eth0 192.168.2.25
auto_failback off
node GuoletaoTest01
node GuoletaoTest02
ping 192.168.2.1
hopfudge 1
deadping 5
respawn hacluster /usr/lib64/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster2
3)资源配置文件:
cat haresources
GuoletaoTest01 IPaddr::192.168.2.30/32/eth0 drbd_primary
说明:
GuoletaoTest01 为主节点的主机名
IPaddr::192.168.2.30/32/eth0 network用于设定集群的IP地址、子网掩码和网络设备标识 等。需要注意的是,这里指定的IP地址就是集群对外服务的IP地址
drbd_primary resource-group用来指定需要Heartbeat托管的服务,也就是这些 服务可以由Heartbeat来启动和关闭。如果要托管这些服务,就必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到/etc /init.d/或者/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc /ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。
4)资源切换脚本:
本脚本复制drbd的切换,已经mysql,redis服务的启动和关闭:
[[email protected] resource.d]# cat drbd_primary
#!/bin/bash
case "$1" in
start)
drbdadm primary mysql_data
mount /dev/drbd1 /data
service mysql55 start
service redis start
;;
stop)
service mysql55 stop
service redis stop
umount /dev/drbd1
drbdadm secondary mysql_data
;;
esac
exit 0
- 三 mysql和redis数据库data存放目录的修改与调整:
1)mysql数据库data存放目 录修改到/data/mysql55/var/
具体做法如下(在drbd主节点启动后,并且mount成功后执行即可,从节点不需要操作,因为会通过drbd的机制同步过去!):
mkdir -p /data/mysql55/var/
chown -R mysql:mysql /data/mysql55
2)修改mysql配置文件:
[[email protected] etc]# cat my.cnf
[client]
port=33066
socket="/var/lib/mysql/mysql.sock"
[mysql]
default-character-set=utf8
[mysqld]
port=33066
basedir="/webser/mysql55"
#datadir="/webser/mysql55/var"
datadir="/data/mysql55/var"
socket="/var/lib/mysql/mysql.sock"
然后执行以下命令:
/webser/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql55/var/ --basedir=/webser/mysql55/
最后在drbd的主节点上启动mysql即可。
然后创建相关目录:
mkdir -p data/redis/
然后在drbd节点上启动redis服务即可!
以上测试都没有问题了。就可以关闭mysql,drbd服务;
启动整个集群顺序:
依次主从,然后启动drbd,再heartbeat服务;
/etc/init.d/drbd start
/etc/init.d/heartbeat start
注意设置成开机自启动;
关闭集群的顺序:
先从后主:
先关闭heartbeat,然后关闭drbd服务!
/etc/init.d/heartbeat stop
/etc/init.d/drbd stop