3)定义一个资源/etc/drbd.d/web.res,内容如下:
resource web { //web为资源名可以和文件名不一致
on node1.magedu.com { device /dev/drbd0; disk /dev/sda5; address 172.16.21.11:7789; meta-disk internal; } on node2.magedu.com { device /dev/drbd0; disk /dev/sda5; address 172.16.21.12:7789; meta-disk internal; } }
以上的文件在两个节点上必须相同,因此,可以使用scp命令同步到另一个节点中
在两个节点上初始化已定义的资源并启动服务:
1)初始化资源,在node1和node2分别执行:
#drbdadm create-md web 这里的web对应.res文件中的resource名称
2)启动服务 在node2和node2分别执行
#servivce drbd start
3) 指定一个为Primary节点(在node1上执行)
#drbdadm -- --overwirte-data-of-peer primary web
4) drdb-overview 数据同步过程已经开始 需要一段时间 结果会显示为
0:web Connected Primary/Secondary UpToDate/UpToDate C r----
创建文件系统
#mke2fs 0j /dev/drbd0
#mount /dev/drbd0 /mydata
[root@node2 MySQL]# drbd-overview
0:web Connected Primary/Secondary UpToDate/UpToDate C r---- /mydata ext3 1.9G 66M 1.7G 4%
测试:
在node1的/mydata 目录中touch一个文件
然后
#umount /mydata
#drbdadm secondary web
在node2中
#drbdadm primary web
#mount /dev/drbd0
#ls /mydata 即可查看到刚才touch到的文件
至此DRBD建立成功
在此基础上实现mysql数据库的基于DRBD,需要利用Corosync+Pacemaker高可用集群,使得mysql在一个节点出现故障时,立即转移到另一节点
而当故障节点恢复后又能重新上线提供服务,并且保证了mysql数据库的数据能同步。
这种方案实现起来较iSCASC 的方式廉价,但却能提供接近99.5%的高可用性
依然利用上面已经建立的DRBD节点中添加Corosync和Pacemaker来提供HA
一、node1和node2能互相解析对方的主机名称 可临时在hosts中添加
二、 双节点需要建立互信认证:
建立双机互信机制:
node1: ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@172.16.21.22 node2: ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@172.16.21.21
三、HA搭建:
安装:
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 pacemaker-1.0.11-1.2.el5.i386.rpm
corosynclib-1.2.7-1.1.el5.i386.rpm pacemaker-libs-1.0.11-1.2.el5.i386.rpm
heartbeat-3.0.3-2.3.el5.i386.rpm perl-TimeDate-1.16-5.el5.noarch.rpm
heartbeat-libs-3.0.3-2.3.el5.i386.rpm resource-agents-1.0.4-1.1.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
yum localinstall --nogpgcheck *.rpm //使用yum解决依赖关系 安装以上的软件包 ,node1和node2中都要安装
四、 配置样例:corosync.conf:
cd /detc/corosync cp /etc/corosnc/corosync.conf.example corosync.conf totem { version: 2 secauth: on threads: 0 interface { ringnumber: 0 bindnetaddr: 172.16.0.0 mcastaddr: 226.94.2.1 mcastport: 5405 } } logging { fileline: off to_stderr: no to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: off # Please read the corosync.conf.5 manual page compatibility: whitetank totem { version: 2 secauth: on threads: 0 interface { ringnumber: 0 bindnetaddr: 172.16.0.0 mcastaddr: 226.94.2.1 mcastport: 5405 } } logging { fileline: off to_stderr: no to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: AMF debug: off } } amf { mode: disabled } service { ver: 0 name: pacemaker use_mgmtd: yes } aisexec { user: root group: root }
上述配置文件在两个节点中都要一样
#service corosync start