DRBD+Corosync+Pacemaker實現MySQL高可用性羣集
一、實驗環境
Vmware-Redhat enterprise 5.4
在node1與node2上操作
1、修改主機名
#vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.a.com /HOSTNAME=node2.a.com
2、hosts文件
# echo "192.168.3.1 node1.a.com node1" >> /etc/hosts
# echo "192.168.3.2 node2.a.com node2" >> /etc/hosts
3、同步時間
#hwclock -s
4、yum源配置
[cdrom-server]
name=cdrom-server
baseurl=file:///media/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#羣集
[cdrom-Cluster]
name=cdrom-cluster
baseurl=file:///media/cdrom/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#羣集存儲
[cdrom-ClusterStorage]
name=cdrom-cluster
baseurl=file:///media/cdrom/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
5、corosync羣集節點要求無障礙通信
node1
[root@node1 ~]# ssh-keygen -t rsa 產生一個rsa的非對稱的私鑰對
[root@node1 ~]# cd .ssh/
[root@node1 .ssh]# ssh-copy-id -i id_rsa.pub node2 拷貝到node2節點
node2
[root@node2 ~]# ssh-keygen -t rsa 產生一個rsa的非對稱的私鑰對
[root@node2 ~]# cd .ssh/
[root@node2 .ssh]# ssh-copy-id -i id_rsa.pub node1 拷貝到node1節點
所需軟件包
並將軟件包上傳到root主目錄下
#由於drbd內核模塊代碼只在linux內核2.6.3.33以後的版本中才有,所以我們要同時安裝
#內核模塊和管理工具
drbd83-8.3.8-1.el5.CentOS.i386.rpm drbd的管理包
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm drbd的內核模塊
cluster-glue-1.0.6-1.6.el5.i386.rpm 爲了在羣集中增加對更多節點的支持
cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
corosync-1.2.7-1.1.el5.i386.rpm corosync的主配置文件
corosynclib-1.2.7-1.1.el5.i386.rpm corosync的庫文件
heartbeat-3.0.3-2.3.el5.i386.rpm 我們的heartbeat在這裏是做四層的資源代理用的
heartbeat-libs-3.0.3-2.3.el5.i386.rpm heartbeat的庫文件
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm做豐富pacemake的內容使用
openaislib-1.1.3-1.6.el5.i386.rpm openais 的庫文件
pacemaker-1.1.5-1.1.el5.i386.rpm pacemake的主配置文檔
pacemaker-libs-1.1.5-1.1.el5.i386.rpm pacemaker的庫文件
pacemaker-cts-1.1.5-1.1.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm 開啓資源代理用的
二、drbd配置
注:兩節點均做如下配置
1、添加磁盤/dev/sdb1
2、安裝drbd
#rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
# modprobe drbd //加載drbd模塊
# lsmod |grep drbd //查看模塊加載情況
3、修改配置文件
#vim /etc/drbd.conf
# You can find an example in /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
~ :r /usr/share/doc/drbd83-8.3.8/drbd.conf //末行模式下執行讀命令來加載
#cp /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.bak
# vim /etc/drbd.d/global_common.conf (替換掉原來的內容)
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C;
startup { //啓動延時配置
wfc-timeout 120; //等待連接的超時時間
degr-wfc-timeout 120; //等待降級的節點連接的超時時間
}
disk {
on-io-error detach; //當出現I/O錯誤,節點要拆掉drbd設備
fencing resource-only;
}
net {
cram-hmac-alg "sha1"; //使用sha1加密算法實現節點認證
shared-secret "mydrbdlab"; //認證碼,兩個節點內容要相同
}
syncer {
rate 100M; //定義同步數據時的速率
}
}
# vim /etc/drbd.d/mysql.res //定義資源
resource mysql { //資源名稱
on node1.a.com {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.3.1:7789;
meta-disk internal;
}
on node2.a.com {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.3.2:7789;
meta-disk internal;
}
}
3、初始化,啓動服務
#drbdadm create-md mysql
# service drbd start &&chkconfig drbd on //並設爲開機啓動
4、指定主節點 node1
#drbdadm -- --overwrite-data-of-peer primary mysql
#node1查看狀態
[root@node11~]# drbd-overview
0:mysql Connected Primary/Secondary UpToDate/UpToDate C r----
#node2查看狀態
[root@node12~]# drbd-overview
0:mysql Connected Secondary/Primary UpToDate/UpToDate C r----
5、僅在主節點上操作(node1)
#格式化爲ext3文件系統
# mkfs.ext3 /dev/drbd0
#掛載
# mount /dev/drbd0 /mysql/
#進入目錄,創建mysql存放的目錄
# cd /mysql/
# mkdir data
6、使node2變爲主節點
node1操作
#先卸載
# umount /mysql/
#變爲備份節點
# drbdadm secondary mysql
node2操作
#變爲主節點,實現掛載
# drbdadm -- --overwrite-data-of-peer primary mysql
# mkdir /mysql
# mount /dev/drbd0 /mysql
#不用再格式化了
# cd /mysql
[root@node2 mysql]# ll
總計 20
drwxr-xr-x 2 root root 4096 01-22 22:04 data
drwx------ 2 root root 16384 01-22 22:03 lost+found
#卸載
# umount /mysql
#並設爲備份節點
# drbdadm secondary mysql
drbd測試成功,drbd已經安裝完成
三、mysql配置
1、安裝mysql(node1、node2)
# yum install mysql mysql-server
node1操作
1)、由於主設備才能讀寫,掛載,故我們還要設置node1爲主設備,node2爲從設備:
# drbdadm primary mysql
[root@node1 ~]# drbd-overview
0:mysql Connected Primary/Secondary UpToDate/UpToDate C r----
2)、掛載drbd0設備
# mount /dev/drbd0 /mysql
3)、data目錄爲mysql的數據存放目錄,故改變其屬主屬組:
# chown -R mysql.mysql /mysql/data/
4)、mysql配置文件
# vim /etc/my.cnf
datadir = /mysqldata/data //數據存放路徑
5)、啓動服務測試
# service mysqld start
#查看啓動數據目錄文件
[root@node1 data]# pwd
/mysql/data
[root@node1 data]# ls
ibdata1 ib_logfile0 ib_logfile1 mysql test
6)、關閉mysqld服務,並保證開機不自動啓動
# service mysqld stop && chkconfig mysqld off
7)、卸載設備,並將節點設爲備份節點
# umount /mysql
# drbdadm secondary mysql
node2操作
1)、拷貝node1上mysql的配置文件
# scp node1:/etc/my.cnf /etc/
2)、設爲主節點,並掛載
# drbdadm primary mysql
# mount /dev/drbd0 /mysql
3)、啓動服務測試
# service mysqld start
[root@node2 ~]# ls /mysql/data/
ibdata1 ib_logfile0 ib_logfile1 mysql test
4)、測試正常,卸載設備,關閉mysql服務,並保證開機不自動啓動
# umount /dev/drbd0
#service mysqld stop && chkconfig mysqld off
接下一篇……