DB1 & DB2: /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.56.101 db1
192.168.56.102 db2
DB1:/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=db1
DB2:/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=db2
DB1:/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=08:00:27:bb:7d:71
IPADDR=192.168.56.101
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
DB2:/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=08:00:27:bb:7d:71
IPADDR=192.168.56.102
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
安装DRBD以及HEARTBEAT
DB1 & DB2:
yum install -y drbd83 kmod-drbd83
yum install -y heartbeat heartbeat-ldirectord heartbeat-pils heartbeat-stonith
配置DRBD
DB1 & DB2: 修改/etc/drbd.conf
主要是配置两个node
on db1{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.56.101:7788;
meta-disk internal;
}
on db2{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.56.102:7788;
meta-disk internal;
}
DB1 & DB2:
在/dev/sdb上建立分区 /dev/sdb1/, 并创建文件系统
/etc/init.d/drbd restart
drbdadm create-md all
/etc/init.d/drbd restart
DB1:
drbdsetup /dev/drbd0 primary -o
mkfs.ext3 /dev/drbd0
mkdir /data
mount /dev/drbd0 /data/
drbdadm primary all
DB2:
mkdir /data
检查DRBD切换:
DB1:
umount /data
drbdadm secondary all
DB2:
drbdadm primary all
mount /dev/drbd0 /data
在DB1 & DB2上安装mysql, 放在/data下面
配置HEARTBEAT, 主要编辑3个文件:
DB1 & DB2:
/etc/ha.d/authkeys
auth 3
3 md5 HelloDRBD
/etc/ha.d/haresources, 这里可以都设置成db1, 表示db1为主node, 也可以各自设子自己的db name, 这样就没有主从了, 哪个先获得资源就以哪个为主
db1 IPaddr::192.168.56.100/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 mysql
不过这样配置后虚拟IP只能在本网段内被访问, 如果需要被其他网段访问, 还必须在网络配置中手动加上网关:
vi /etc/network/interfaces
auto em1:0
iface em1:0 inet static
address 192.168.56.100
netmask 255.255.255.0
gateway 192.168.56.1
不过这样配置后虚拟IP只能在本网段内被访问, 如果需要被其他网段访问, 还必须在网络配置中手动加上网关:
vi /etc/network/interfaces
auto em1:0
iface em1:0 inet static
address 192.168.56.100
netmask 255.255.255.0
gateway 192.168.56.1
DB1:
/etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
baud 19200
ucast eth1 192.168.56.102 (对方的心跳地址)
auto_failback on
node db1
node db2
DB2:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
baud 19200
ucast eth1 192.168.56.101(对方的心跳地址)
auto_failback on
node db1
node db2
DB1 & DB2:
service heartbeat restart
查看当前哪个server为主, 然后将该server的heartbeat服务停掉或者关机或者eth1 down, 观察另外一台是否能够切换为主server.