环境需求:rhel6以上,iptablss与selinx disabled,
新虚拟机(未进行其他集群操作的)server1与server2为两节点
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_64、mysql-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 #指定用户和用户组
添加2个node,后面接节点的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
若server1的mysqld或者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/*
复制这些rpm到server2上安装。
在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上,由于drbd为primary,可以看到drbd1以被挂载到/var/lib/mysql上,eth0添加了vip。这些都是heartbeat自动完成的
节点2上,则没挂载没加vip。
附注:接着上篇博客利用远端存储通过HA使用mysql服务
M端启用luci、tgtd
两节点启用ricci、iscsi并安装mysql-server,停用mysql服务
在web上禁用apache服务组并不勾选独立运行。
添加回错域(failover domain)name为sqldb,其他与webfail相同。
添加resource->ip address 设置虚拟ip为172.25.0.101;
-> script name=mysqld path为/etc/init.d/mysqld
Server1上
卸载之前的添加的逻辑卷、卷组、物理卷
#service clvmd restart //重启clvmd服务
#cat /proc/partitions //查看块设备信息
重新远端存储重新分为2个区
在server2 上, 运行partprobe然后查看/proc/partitions能看到sda1和sda2两个分区。。
挂载sda1到mnt。 在mnt下创建index.html,内容为www.redhat.org.然后卸载,数据写入sda1中。再挂载sda2,将/var/lib/mysql下的所有复制到mnt。
#chown mysql.mysql /mnt
卸载mnt,mysql写入sda2中。
在web上
修改resource中的webdata的device为/dev/sda1
添加resource,name=dbdata 文件系统名为ext4,挂载点为/var/www/html,设备为/dev/sda2,勾选force unmount,use quick status checks ,reboot host node if unmount fails.
添加服务组。Name为mysql,勾选自动启动,回错域为sqldb,然后点添加resource to service
依次添加新的vip等服务,虚拟ip(172.25.0.101)就和mysql绑定。启用apache服务组。
这时若server2apache服务被破坏,如network disabled,集群会自动从server1上启动apache。
哪个节点上开启了mysql,那么它会ip会增加vip。