高可用版本下载网站: linux-ha.org respan ~ [判断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 [ping,检测主机是否网通,若不同则启动策略转移] 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 正确信息就会出现在本机 和 主节点机上