要求:在上次drbd的基础上,创建/web/mydata作为MySQl的数据目录,把/dev/drbd0,MySQl和挂载做成一个资源让它们在同一个节点上,万一主节点出现故障是将资源转移到另一个从节点上上,从节点也能实现成为主节点并挂载/web,即实现了高可用。
1、安装配置drbd,参照之前的drbd文档,所有操作还按照之前的规划。node2现在为主节点。
2、为两个节点创建一样的mysql用户和组,一样的id号
mkdir /web/mydata/data -pv
groupadd -r -g 306 mysql
tail /etc/group查看
useradd -g mysql -r -s /sbin/nologin -M -u 306 mysql
id mysql查看用户mysql
[root@node2 ~]# chown -R mysql:mysql /web/mydata
3、改变主从节点,注意:先卸载把主节点降为Secondary,再把从节点升为Primary
[root@node2 ~]# umount /web
[root@node2 ~]# drbdadm secondary web
[root@node1 ~]# drbdadm primary web
[root@node1 ~]# mount /dev/drbd0 /web
[root@node1 ~]# drbdadm role web查看主从
[root@node1 ~]# ll /web查看是否映射过来
现在主节点是node1,后面若还有改变主从节点,则参照此不再给出步骤。
4、在主节点node1安装mysql
下载软件包mysql-5.5.19-linux2.6-i686.tar.gz
tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
cd /usr/local/
ln -sv mysql-5.5.19-linux2.6-i686 mysql
cd mysql
chown -R mysql:mysql .
script/mysql_install_db --user=mysql --datadir=/web/mydata/data/
chown -R root .
cd support-files/
cp my-large.cnf /etc/my.cnf
vim /etc/my.cnf
[mysqld]
datadir = /web/mydata/data
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
. !$
service mysqld start验证mysql是否成功
service mysqld stop
5、在从节点上node2配置MySQl
把配置文件从node1复制到nde2上
/etc/my.cnf
/etc/init.d/mysqld
把node2变成主节点,验证mysql是否启动
vim /etc/profile为让客户端连接
PATH=$PATH:/usr/local/mysql/bin
. !$
6、安装配置coro
两个节点都要安装软件包:
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
corosynclib-1.2.7-1.1.el5.i386.rpm
graphviz
heartbeat-3.0.3-2.3.el5.i386.rpm
heartbeat-libs-3.0.3-2.3.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm
openaislib-1.1.3-1.6.el5.i386.rpm
pacemaker-1.0.11-1.2.el5.i386.rpm
pacemaker-libs-1.0.11-1.2.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm
yum localinstall --nogpgcheck -y *.rpm
简单的配置node2
cd /etc/corosync/
cp corosync.conf.example corosync.conf
vim corosync.conf
secauth: on开启认证
bindnetaddr: 172.16.0.0
添加下面的
service {
ver: 0
name: pacemaker
}
aisexec {
user: root
group: root
}
创建密钥
corosync-keygen
创建日志目录
mkdir /var/log/cluster
把配置文件和密钥文件复制到node1上
/etc/corosync/authkey
/etc/corosync/corosync.conf
mkdir /var/log/cluster
在两个节点上分别查看是否有错误信息
grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log
grep ERROR: /var/log/cluster/corosync.log | grep -v unpack_resou
grep pcmk_startup /var/log/cluster/corosync.log
grep TOTEM /var/log/cluster/corosync.log
在两个节点上分别启动服务
service corosync start
crm status查看状态
7、查看集群信息并配置全局参数
[root@node2 ~]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled="false"
crm(live)configure# verify
crm(live)configure# property no-quorum-policy="ignore"
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# rsc_defaults resource-stickiness="100"
crm(live)configure# verify验证
crm(live)configure# commit提交
crm(live)configure# show查看定义的参数是否有
crm(live)configure# exit
8、定义主从,定义drbd为资源
在两个节点上都关闭drbd,不能成为开机自动启动,在主节点上还要卸载/web即umount /web
service mysqld stop
chkconfig mysqld off
service drbd stop
chkconfig drbd off
crm(live)configure# primitive webdrbd ocf:linbit:drbd params drbd_resource="web"
crm(live)configure# verify
crm(live)configure# master ms_webdrbd webdrbd meta master-max="1" master-nodes-max="1" clone-max="2" clone-nodes-max="1" notify="true
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# cd
crm(live)# status 查看状态
手动切换主从:现在node2为主节点
[root@node2 ~]# crm node standby
[root@node1 ~]# crm status
[root@node2 ~]# crm node online
crm(live)configure# primitive webfs ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/web"
crm(live)configure# colocation webfs_on_ms_webdrbd inf: webfs ms_webdrbd:Master
crm(live)configure# order webfs_after_ms_webdrbd inf: ms_webdrbd:promote webfs:start
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# show查看是否与下面信息一致
node node1.magedu.com \
attributes standby="off"
node node2.magedu.com \
attributes standby="off"
primitive webdrbd ocf:linbit:drbd \
params drbd_resource="web"
primitive webfs ocf:heartbeat:Filesystem \
params device="/dev/drbd0" directory="/web" fstype="ext3"
ms ms_webdrbd webdrbd \
meta master-max="1" master-nodes-max="1" clone-max="2" clone-nodes-max="1" notify="true
colocation webfs_on_ms_webdrbd inf: webfs ms_webdrbd:Master
order webfs_after_ms_webdrbd inf: ms_webdrbd:promote webfs:start
property $id="cib-bootstrap-options" \
dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
crm(live)# status查看webfs是否启动
9、定义MySQl资源
crm(live)configure# primitive webmysqld lsb:mysqld
crm(live)configure# colocation mysqld_on_webfs inf: webmysqld webfs
crm(live)configure# order mysqld_after_webfs inf: webfs:start webmysqld:start
crm(live)configure# verify
crm(live)configure# commit
crm(live)# status查看webfs和webmysqld是否都启动起来了
10、让node2节点故障,看定义的资源可否正确转移至node1
[root@node2 ~]# crm node standby
[root@node1 ~]# crm node online
crm(live)# status