环境需求:rhel6以上,iptablssselinx disabled

新虚拟机(未进行其他集群操作的)server1server2为两节点

Instructor为服务机(M端)。


 

集群管理之Heartbeat


Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。

 

两节点上安装hearbeat-3.0.4-2.e16.x86_64 heartbeat-llibs-3.0.4-2.e16.x86_64 heartbeat-devel-3.0.4-e16.x86_64 ldirectord-3.9.5-3.1.x86_64mysql-server

srever1上,

#vim /etc/ha.d/ha.cf

 logfile /var/log/ha-log #日志文件 

keepalive 2             #心跳时间 

deadtime 30             #无响应时间 

warntime 10       #警告时间

 initdead 60             #守护进程启动后主机启动资源需要等待的时间 

udpport 694             #端口

cast   eth0             #使用物理网卡eth0传输心跳消息

auto_failback on        #设置当主机修复后服务是否回返到主机

node    server2.example.com node    server3.example.com #设置节点,主机在上副机在下

ping 172.25.254.55      #判断主副机的网络状况

respawn hacluster /usr/lib64/heartbeat/ipfailapiauth ipfail gid=haclient uid=hacluster #指定用户和用户组

添加2node,后面接节点的hostname

#vim /etc/ha.d/haresource

在最后添加server1.example.com IPaddr::172.25.0.100/24/eth0 Filesystem::/dev/sda1::/var/lib/mysql::ext4 mysqld 

Server1.example.com: 主节点

IPaddr::172.25.254.100/24/eth0: 虚拟IP

Filesystem::/dev/sda1::/var/lib/mysql::ext4 : 文件系统

Mysql: 服务

#vim authkeys ,取消auth 1 1 crc的注释  //crc为明文(不加密)。

#chmod 600 authkeys. 

server的远端存储分区并格式化为ext4,分区由heartbeat同步到server2中。

将这三个文件复制给server2。两节点都启动heartbeat服务。

#mount /dev/sda1/ /mnt

#cp -rp /var/lib/mysql/* /mnt

#chown mysql.mysql /mnt

#umount /mnt

server1mysqld或者heartbeat停止,则server2mysql启动,vip加在server2上,这就是集群的高可用性。



集群管理之DRBD


DRBD(Distributed Replicated Block Device分布式复制块设备),DRBD 号称是 网络 RAID”,开源软件,

LINBIT 公司开发。DRBD实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之

中。他有内核模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络

RAID-1的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络

中的另外一台主机之上,并以完全相同的形式记录在文件系统中。本地节点与远程节点的数据可以保证

实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一

份完全相同的数据,可以继续使用,以达到高可用的目的

 

安装

首先关闭两节点的iscsi,并本地添加4g的存储。

在节点1上,解压drbd-8.4.3

#./configure --enable-spec  --with-km

#yum install flex rpm-build  kernel-devel//解决依赖性

#cp drbd-8.4.3.tar.gz rpmbuild/SOURCES

#rpmbuild -bb drbd.spec drbd-km.spec //创建rpm

#rpm -ivh /root/rpmbuild/RPMS/x86_64/*

复制这些rpmserver2上安装。

 

server1上,/etc/drbd.d/drbd.conf, 可以看到drbd包含drbd.d/下所有以.res结尾的文件。因此可以在/etc/drbd.d下创建example.res文件,对当前集群进行配置

resource sqldata {    //源为sqldata

meta-disk internal;    //磁盘为内部的

device /dev/drbd1;     //设备为/dev/drbd1

syncer {

verify-alg sha1;         //同步方式

}

on server1.example.com {     //节点1的设置

disk /dev/vdb;

address 172.25.0.1:7789;

}

on server2.example.com {    //节点2的设置

disk /dev/vdb;

address 172.25.0.2:7789;

}

}

将该文件复制到节点2.两节点都对drbd进行初始化:

#drbdadm create-md sqldata 

 

节点启动drbd服务。

在节点1

#cat /proc/drbd 可以看到drbd块信息。显示 secondary/secondary表示server1(第一个secondary)为从设备,server2(第二个secondary)为从设备。

#drbdadm primary sqldata --force  //强制将server1设为主设备,集群服务只会在主设备上运行

在节点2上,

#cat /proc/drbd  显示secondary/primary表示本机为从设备,server1为主设备。

#mkfs.ext4 /dev/drbd1

#mount /dev/drbd1 /mnt

#cp -rp /var/lib/mysql/* /mnt   

#chown mysql.mysql /mnt

#umount /mnt 

数据会同步写入到节点2/dev/drbd1上。

#drbdadm secondary sqldata  // 将节点1设为从设备

 

在节点2

#mount /dev/drbd1 /mnt

#drbdadm primary sqldata  //将本节点设为主设备

#ls /mnt  会看到mysql文件

 

注意:两台主机上的/dev/drbd1 不能同时挂载,只有状态为 primary ,才能被挂载使

,而此时另一方的状态为 secondary

 

Heartbeat集成drbd

 

在节点1/etc/ha.d/haresource,修改最后一行为

server1.example.com IPaddr::172.25.0.100/24/eth0 drbddisk::sqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld

并将该文件复制到节点2中。

两节点都启动heartbeat

节点1上,由于drbdprimary,可以看到drbd1以被挂载到/var/lib/mysql上,eth0添加了vip。这些都是heartbeat自动完成的

节点2上,则没挂载没加vip

 

附注:接着上篇博客利用远端存储通过HA使用mysql服务

M端启用lucitgtd  

两节点启用ricciiscsi并安装mysql-server,停用mysql服务

 

web上禁用apache服务组并不勾选独立运行。

添加回错域(failover domainnamesqldb,其他与webfail相同。

添加resource->ip address 设置虚拟ip172.25.0.101

                  -> script     name=mysqld   path/etc/init.d/mysqld

 Server1

卸载之前的添加的逻辑卷、卷组、物理卷

#service clvmd restart //重启clvmd服务

#cat /proc/partitions  //查看块设备信息

重新远端存储重新分为2个区

server2 上, 运行partprobe然后查看/proc/partitions能看到sda1sda2两个分区。。

挂载sda1mnt。 在mnt下创建index.html,内容为www.redhat.org.然后卸载,数据写入sda1中。再挂载sda2,将/var/lib/mysql下的所有复制到mnt

#chown mysql.mysql /mnt

卸载mntmysql写入sda2中。

 

web

修改resource中的webdatadevice/dev/sda1

添加resourcename=dbdata  文件系统名为ext4,挂载点为/var/www/html,设备为/dev/sda2,勾选force unmountuse quick status checks ,reboot host node if unmount fails.

添加服务组。Namemysql,勾选自动启动,回错域为sqldb,然后点添加resource to service

依次添加新的vip等服务,虚拟ip172.25.0.101)就和mysql绑定。启用apache服务组。

这时若server2apache服务被破坏,如network disabled,集群会自动从server1上启动apache

哪个节点上开启了mysql,那么它会ip会增加vip