主机名 | 角色 |
IP地址 |
db-master |
主MySQL | |
db-backup | 备MySQL | |
VIP | 192.168.0.100/24 |
1
2
3
4
|
[root@db-master ~]
# yum install -y mysql mysql-server #两个节点简单安装,仅做测试用
[root@db-master ~]
# vi /etc/my.cnf
datadir=
/data
#修改后的数据库存放目录
[root@db-master ~]
# /etc/init.d/mysqld start
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@db-master ~]
# yum install -y gcc gcc-c++ make perl kernel-devel kernel-headers flex #安装依赖包
[root@db-master ~]
# rpm -vih drbd84-utils-8.4.4-2.el6.elrepo.x86_64.rpm kmod-drbd84-8.4.4-1.el6.elrepo.x86_64.rpm
[root@db-master ~]
# tar zxvf drbd-8.4.4.tar.gz
[root@db-master ~]
# cd drbd-8.4.4
[root@db-master drbd-8.4.4]
# ./configure --prefix=/usr/local/drbd --with-km #--with-km,启用内核模块
[root@db-master drbd-8.4.4]
# make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定内核源码路径,根据自己系统来
[root@db-master drbd-8.4.4]
# make install
[root@db-master drbd-8.4.4]
# chkconfig --add drbd
[root@db-master drbd-8.4.4]
# chkconfig drbd on
[root@db-master drbd-8.4.4]
# cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #加载DRBD模块到内核中
[root@db-master ~]
# modprobe drbd
[root@db-master ~]
# lsmod | grep drbd #由此查看drbd模块已经加载
drbd 333755 0
libcrc32c 1246 1 drbd
|
1
2
3
4
|
[root@db-master drbd-8.4.4]
# cd /usr/local/drbd/
[root@db-master drbd]
# cat etc/drbd.conf #主配置是加载全局配置文件和资源配置文件
include
"drbd.d/global_common.conf"
;
include
"drbd.d/*.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
|
[root@db-master drbd]
# vi etc/drbd.d/global_common.conf #全局配置文件
global {
usage-count
yes
;
#参加DRBD使用者统计
}
common {
protocol C;
#使用同步协议C,收到写入确认就认为完成了写入操作
disk {
on-io-error detach;
#当磁盘错误时,不连接
}
syncer
{
rate 100M;
#设置主设备节点同步时的网络速率最大值,默认最大1G
}
}
resource mysql {
#mysql定义资源的名字
on db-master {
#on开头,后面是主机名称
device
/dev/drbd0
;
#drbd设备名称
disk
/dev/sdb1
;
#drbd0使用的磁盘分区为sdb1
address 192.168.0.10:7789;
#设置drbd监听地址与端口
meta-disk internal;
}
on db-backup {
#on开头,后面是主机名称
device
/dev/drbd0
;
#drbd设备名称
disk
/dev/sdb1
;
#drbd0使用的磁盘分区为sdb1
address 192.168.0.20:7789;
#设置drbd监听地址与端口
meta-disk internal;
}
}
|
1
2
3
4
5
6
|
[root@db-master ~]
# drbdadm create-md mysql
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
success
|
1
|
[root@db-backup ~]
# drbdadm create-md mysql
|
1
2
3
4
5
|
[root@db-master~]
# mkdir -p /usr/local/drbd/var/run/drbd #创建资源目录
[root@db-master drbd]
# service drbd start
[root@db-master drbd]
# netstat -tuplna | grep 7789 #查看已经启动drbd
tcp 0 0 192.168.0.10:7789 192.168.0.203:33216 ESTABLISHED -
tcp 0 0 192.168.0.10:7789 192.168.0.203:44977
|
1
2
3
4
|
[root@db-master drbd]
# cat /proc/drbd #查看drbd状态,显示两个节点默认都处于Secondary状态
version: 8.4.4 (api:1
/proto
:86-101)
GIT-
hash
: 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
0: cs:Connected ro:Secondary
/Secondary
ds:Inconsistent
/Inconsistent
C
|
1
2
3
4
|
[root@db-master drbd]
# drbdadm primary mysql #指定本机为主节点
/dev/drbd0
: State change failed: (-2) Need access to UpToDate data
#报错,执行下条命令
[root@db-master drbd]
# drbdadm -- --overwrite-data-of-peer primary all
[root@db-backup ~]
# drbdadm secondary mysql #本机设置从节点
|
1
2
|
[root@masternfs ~]
# drbd-overview
0:mysql
/0
Connected Primary
/Secondary
UpToDate
/UpToDate
C r-----
|
1
2
3
|
[root@db-master drbd]
# mkfs.ext3 /dev/drbd0
[root@db-master drbd]
# mkdir /data
[root@db-master drbd]
# mount /dev/drbd0 /data/
|
1
|
yum
install
-y gcc gcc-c++ autoconf libtool pkgconfig glib2-devel libxslt-devel libxml2-devel
bzip2
-devel libtool-ltdl-devel libuuid-devel docbook-style-xsl
|
1
2
|
groupadd haclient
useradd
-g haclient -s
/sbin/nologin-Mhacluster
|
1
2
3
4
5
|
tar
zxvf Reusable-Cluster-Components-glue--glue-1.0.9.
tar
.bz2
cd
Reusable-Cluster-Components-glue--glue-1.0.9
.
/autogen
.sh
.
/configure
make
&&
make
install
|
1
2
3
4
|
tar
jxvf Heartbeat-3-0-7e3a82377fa8.
tar
.bz2
cd
Heartbeat-3-0-7e3a82377fa8
.
/ConfigureMeconfigure
make
&&
make
install
|
1
2
3
4
5
|
tar
jxvf ClusterLabs-resource-agents-v3.9.2-0-ge261943.
tar
.gz
cd
ClusterLabs-resource-agents-b735277
.
/autogen
.sh
.
/configure
make
&&
make
install
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@db-master ~]# vi /etc/ha.d/ha.cf
logfile /
var
/log/ha-log
logfacility local0 #如果未定义上述日志,默认写入/
var
/log/message
keepalive
2
#心跳间隔
deadtime
30
#死亡阀值
warntime
10
#警告时间
initdead
120
#首次启动heartbeat,等待多久才启动主服务资源
udpport
694
#连接端口
ucast eth1
172.0
.
0.2
#对方IP,采用网卡的eth1组织心跳,后跟接口IP
auto_failback on #当主节点故障恢复后,自动获取资源并取代从节点
node master #主节点主机名
node slave #备份节点主机名
ping
192.168
.
0.1
#选择ping节点,ping的越好对HA集群越稳定,建议使用网关
|
1
2
3
|
[root@db-master ~]# vi /etc/ha.d/authkeys
auth
2
2
sha1 HI!
|
1
2
|
[root@db-master ~]# vi /etc/ha.d/haresources
db-master IPaddr::
192.168
.
0.100
/
24
/eth0:
0
drbddisk::mysql Filesystem::/dev/drbd0::/data::ext4 mysqld
|
1
2
3
|
[root@db-master ~]
# umount /data
[root@db-master ~]
# mkdir /data/test #创建一个测试文件
[root@db-master ~]
# drbdadm secondary r0
|
1
2
3
|
[root@db-master ~]
# drbdadm primary r0
[root@db-master ~]
# mount /dev/drbd0 /data
[root@db-master ~]
# ls /data #查看test目录存在
|