【HA】开源版HeartBeat + DRBD(分布式存储)+MySql
高可用版本下载网站: linux-ha.orgrespan ~ [判断ping的短网切换]
drbd 分布式复制块设备
***********************************************
***********HA(高可用集群)[开源版]***************
***********************************************
一.安装相应的软件及其简介
目前版本(RH6.5),安装 heartbeat-3.0.4-2.el6.x86_64.rpm,
heartbeat-devel-3.0.4-2.el6.x86_64.rpm,
heartbeat-libs-3.0.4-2.el6.x86_64.rpm,
ldirectord-3.9.5-3.1.x86_64.rpm
主要文件(显示路径):/etc/ha.d/README.config[可用 rpm -q heartbeat-d 查看下面所示文件绝对路径]
They are:
ha.cf Main configuration file
haresources Resource configuration file
authkeys Authentication information
二.依次更改/usr/share/doc/heartbeat-3.0.4/~下的上述文件,并且完成后cp到/etc/ha.d/ 下
(1)vim /usr/share/doc/heartbeat-3.0.4/ha.cf [基本类]
[行标]
48 keepalive 2 [心跳互传等待时间:2S]
56 deadtime 30 [死亡确认时间:30S]
61 warntime 10 [警告时间:10]
71 initdead 60 [资源初始化:60]【一个节点机死亡,另一个节点机接管资源并开启的时间】
76 udpport 1060 [设定节点:1060]【每个节点机这个必须不同】
91 bcast eth0 [单波传播方式,设备eth0]
211 node server1.example.com [写入所用节点机的主机名,必须是主机名,而且谁先谁主,其次为辅]
212 node server2.example.com
220 ping 172.25.254.250
253 respawn hacluster/usr/lib64/heartbeat/ipfail [所使用64版本]
259 apiauth ipfail gid=haclientuid=hacluster [开启hacluster用户]
(2)vim/usr/share/doc/heartbeat-3.0.4/haresources [策略加载类]
150 server1.example.comIPaddr::172.25.254.168/24/eth0 httpd
[主机名,加载IPaddr 文件,VIP(虚拟IP设置),服务(httpd)]【IPaddr可执行文件在/etc/ha.d/resource.d/】
(3)/usr/share/doc/heartbeat-3.0.4/authkeys [认证类]
1.首先 chmod 600authkets,所小权限
2.其次vim
[行标]
23 auth1 [开启明文认证]
24 crc
(4)测试,开启heartbeat(两个都开启) 服务,看httpd服务是否能正确运行(在虚拟机上可能比较慢,需要等待),curl 172.25.254.168 的显示内容;并且关闭heartbeat 服务,看其是否能自动切换节点。
三.添加 drbd(分布式复制块设备存储)
(1)所用软件下载
drbd-8.4.2.tar.gz(tar -zxf 解压);
yum install -y gcc
(2)执行./configure --enable-spec 和 ./configure --enbale-spec--with-km,
(a)按照提示(所需) 依次下载软件(flex,rpm-build,等)
生成drbd.spec,drbd-km.spec,drbd-kernel.spec 等文件,用来制作rpm包
(3)rpmbuild -bb drbd.spec 和 rpmbuild -bbdrbd-km.spec 按照提示将压缩包放到相应位置,在进行rpmbuild操作。
cp drbd-8.4.2.tar.gz ~/rpmbuild/SOURCES/
执行完上述操作之后会在 ~/rpmbuild/RPMS/x86_64 下生成8个drbd-*包,安装(rpm -ivh *)它们,且发送给其它节点机并安装。
(4)**在/etc/brdb.d/ 中编辑自定义文件,此文件非常重要,即drbd服务所加载的服务机及其向关信息。
(a)在配置文件之前,向每个虚拟机添加两块4G的虚拟网卡
(b) vim/etc/brdb.d/example.res
resource example {
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
on server1.example.com {
disk /dev/vdb;
address 172.25.254.161:7789;
}
on server2.example.com {
disk /dev/vdb;
address 172.25.254.162:7789;
}
(c)scp example.com -->172.25.254.162
(d)每一个节点机都要进行drbd服务添加,drbdadm create-md example,并且开启drbd服务
(e)设置主/备机,并且进行强行同步存储内容
drbdadm primary/secondary example --force[那个机子操作此命令那个为主/辅,并且强行同步信息]
watch cat /proc/drbd [可以查看同步内容的进程]
(f)同步好了之后制作文件系统并且挂载(mkxfs.ext4),这样/dev/drbd 设备的内容就可以同步了。
在挂载设备时,首先要设置当前机为主,再进行mount 操作
drbdadm primary/secondary example
四.添加 mysql数据库(存储),并完成节点服务异常时,自动转移服务到另一个节点。
(1)完善挂载mysql点
a.在主节点中下载mysql-server
首先开启mysql /etc/init.d/mysqld start
挂载mnt,并且删除/mnt 下的所有内容
关闭mysql(防止产生.sock文件 防止正常开启),并且将/var/lib/mysql/ 中的内同考到/mnt 下
挂载 mount /dev/drbd1/var/lib/mysql/,进入/var/lib/mysql,将其主组都该为 mysql(chown mysql.mysql ~ -R)
b.此时,切换主辅 挂载 /dev/drbd1/ 到 /var/lib/mysql 开启mysqld,就可以达成mysql 数据库数据共享了。
(2)设置服务自动挂载,并且基于heartbeat 的服务转移的策略
配置/etc/ha.d/haresources
[行标]
150 server1.example.comIPaddr::172.25.254.168/24/eth0 drbddisk::exampleFilesystem::/dev/drbd1::/var/lib/mysql::ext4
mysqld
【主机名,VIP,加载drbd example文件,挂载文件系统/dev/drbd1 到 /var/lib/mysql ext4本地文件系统,mysql服务】
(3)测试
前提,关闭两台主机的mysql服务,将两个主机的都设为辅助机(cat /proc/drbd),关闭两个主机的heartbeat 服务。
a.开启两台节点机的heatbeat 服务,节点1可以进入mysql服务,并且节点1为主机。
b.主机1关闭heartbeat 服务,节点2接管mysql服务,并且节点2改变为主机。
c.开启节点1,服务回到节点1上,并且节点1转为主机,节点2转为辅机
d.关闭节点机1,节点机2接管服务,开启后,服务回到主机1。反之亦然
e.当服务在节点机1上运行时,使得节点机1网卡down,节点1 mysql 能登入,在 cat /proc/drbd 信息中会显示对方为DUnknown
这时,节点2上的heartbeat会将服务在节点2上启动,但是会因为接受不到主节点机的drbd 和 mysql 信息 其动不了drbd mysql服务,
cat /proc/drbd 中会显示对方为 DUnknown
[因为,节点机1网络故障。节点机2 找不到节点机1 节点机2的 heartbeat 就会启动节点2,若你重新启动节点2上的 heatbeat ,
那么节点机2会一至卡住不动,请求主节点的drbd 和 mysql 策略资源,直到主节点修复好网络,但是由于回转模式,当主机网络修复好时,策略资源
会重新回到主节点机上(节点机1)]
(4)小拓展,当网络出现问题cat /proc/drbd 时,若两台机子都 Unkown 对方 除了重新制作新的drbd 并同步 这种毁灭性的方法,其时还可以恢复并同步数据。
在辅机 执行drbdadm disconnect example[使辅机不连接 example]
drbdadm ----discard-my-data connect example[丢掉为的drbd数据,连接 example]
稍等片刻cat /proc/drbd 正确信息就会出现在本机 和 主节点机上
页:
[1]