1.heartbeat服务

首先关掉之前所做的所有集群服务

Server4 && server5 端:

iscsiadm -m node -u

Iscsiadm -m node -o delete

/etc/init.d/rici stop

Chkconfig ricci off

/etc/init.d/iscsi stop

Chkconfig iscsi off

/etc/init.d/clvmd stop

Chkconfig clvmd off

/etcinit.d/modcluster stop

Chkconfig modcluster off

/etc/init.d/cman stop

Chkconfig camn off##若关不掉cman,先执行此命令,再重启虚拟机

Server6操作:

/etc/init.d/luci stop

Chkconfig luci off

如果还有其他集群服务没有关闭,请执行netstat -antlpe命令 以及ps -ax命令查看,并用合适命令将其关闭

先将网页的服务remove掉,然后将之前建立的server4server5删掉

之后操作server4 && server5

下载如图软件包并安装

集群(2)_网页

Yum install * -y

命令查看heartbeat服务所在路径:

Rpm -q heartbeat -d

集群(2)_网页_02

authkeys,ha.cf,haresources复制到/etc/ha.d/目录

Cd /etc/ha.d/

cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} .

编辑ha.cf配置文件:

集群(2)_虚拟机_03

集群(2)_网页_04

集群(2)_网页_05

集群(2)_网页_06

编辑vim authkeys文件

集群(2)_网页_07

Vim haresources

集群(2)_虚拟机_08

将这三个文件scpserver5虚拟机上

集群(2)_虚拟机_09

Server4 && server5启动httpd && hearbeat服务

/etcinit.d/httpd start

/etc/init.d/heartbeat start

 

 

 

测试1

真机测试172.25.15.100虚拟网络:

集群(2)_网页_10

当断开server4服务时:

/etc/init.d/heartbeat stop

Server5虚拟机会接管业务:

集群(2)_虚拟机_11

同时虚拟ip也会转移到server5上来:

集群(2)_网页_12

测试2

server4上关闭httpd服务时,服务会监测不到网络,所以server5不会接管业务

/etc/init.d/httpd stop

集群(2)_网页_13

同时你也可以根据arp -an|grep 172.25.15.100命令查看虚拟ip所在的虚拟机

集群(2)_虚拟机_14

集群(2)_虚拟机_15

会发现过滤出来的UUID就是server4

 

 

测试3

当破坏掉server4内核时:

 echo c >/proc/sysrq-trigger

Server5会接管业务:

集群(2)_虚拟机_16

一旦重启server4,业务又会重新转移到server4上,因为配置ha.cf文件时,设置的

auto_failback on

server4恢复正常时,会抢回业务

集群(2)_网页_17

 

测试4

server4端的网卡关掉后:

Ip link set down eth0

Server5会认为server4坏掉,进而将服务抢到,

所以服务会自动转移到server5

当两边同时关掉网卡后,server4 &&server5会同时都认为对方坏掉而发生资源服务争抢从而导致服务崩掉!!!

 

 

 

 

 

 

2.Drbd服务

首先在两个虚拟机上安装两块4G虚拟硬盘

集群(2)_网页_18

下载drbd-8.4.2.tar.gztar

集群(2)_虚拟机_19

Server4命令操作:

Tar zxf drbd-8.4.2.tar.gz

Cd drbd-8.4.2

./configure

Yum install gcc flex rpm-build kernel-devel -y #解决软件依赖性

Cd ~

Cp /mnt/drbd-8.4.2.tar.gz rpmbuild/SOURCES/

cd /mnt/drbd-8.4.2

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

Rpmbuild -bb drbd.spec #编译生成 drbd rpm

rpmbuild -bb drbd-km.spec #编译 drbd 内核模块

使其生成如下两个文件就说明操作无误:

 

集群(2)_虚拟机_20

集群(2)_网页_21


cd ~/rpmbuild/RPMS/x86_64

rpm -ivh *

集群(2)_网页_22

拷贝生成的 rpm 包到另一主机,并安装软件包:

集群(2)_网页_23

 

 

server4 && server5上编辑配置文件(该配置文件需自己创建,并且只要以.res结尾即可):

Cd /etc/drbe.d/

Vim test.res

集群(2)_网页_24

并传给server5

scp test.res 172.25.15.5:/etc/drbd.d/

配置文件编辑完成后,server4 && server5就执行如下命令:

drbdadm create-md example

/etc/init.d/drbd start#注意,server4启动后会等待server5启动,双方确认后才能启动成功

 

server4设置为primary节点,并同步数据:

drbdsetup /dev/drbd1 primary --force

 

在两台虚拟机上查看同步状态:

watch cat /proc/drbd

集群(2)_虚拟机_25

集群(2)_虚拟机_26

 

数据同步结束后创建文件系统,格式化为ext4

mkfs.ext4 /dev/drbd1

 

 

 

测试:

Server4操作:

Server4挂载文件系统:

mount /dev/drbd1 /mnt/

编辑文件index.html

Echo server4.example.com  >  index.html

卸载/dev/drbd1/

Umount /mnt/

server4设置为secondary节点:

Drbdadm secondary example

 

Server5操作:

先将server5设置为primary节点:

drbdadm primary example

挂载:

mount /dev/drbd1 /mnt/

集群(2)_虚拟机_27

会发现server4上创建的index.html已经同步到server5上了

 

 

 

 

3.添加mysql服务:

Server4端:

先安装mysql软件包

yum install -y mysql-server

启动mysql服务

/etc/init.d/mysqld start

先将 /dev/drbd1 中所有内容删除:

集群(2)_虚拟机_28

再停掉mysql服务

/etc/init.d/mysqld stop

再将/var/lib/mysql/目录中所有内容复制到/dev/drbd1中:

集群(2)_虚拟机_29

卸载后并挂载到/var/lib/mysql上并修改权限:

集群(2)_虚拟机_30

关闭mysql服务后并卸载

/etc/init.d/mysqld stop

umount /var/lib/mysql/

 

Server5端操作:

Yum install -y mysql-server

进入mysql确认正常后退出并关闭mysql并卸载后设置为secondary节点:

mount /dev/drbd1 /var/lib/mysql/

/etc/init.d/mysqld start

Mysql

/etc/init.d/mysqld stop

umount /var/lib/mysql/

drbdadm secondary example

 

 

 

server4端配置haresources文件:

cd /etc/ha.d/

vim haresources

集群(2)_虚拟机_31

将该文件传给server5虚拟机:

scp haresources 172.25.15.5:/etc/ha.d/

 

两边虚拟机启动heartbeat

/etc/init.d/heartbeat start

 

 

测试:

两边启动hearbeat后,会自动挂载到/var/lib/mysql:

集群(2)_虚拟机_32

 

server4heartbeat服务关闭后 ,会自动挂载到server5

Server4端:

/etc/init.d/heartbeat stop

查看server5端效果:

集群(2)_虚拟机_33

heartbeat又重新启动后,server5端会自动卸载并重新挂载到server4

 

 

####注:只存在drbd服务时,两台主机上的/dev/drbd1 不能同时挂载,只有状态为 primary ,才能被挂载使用,而此时另一方的状态为 secondary。而加入heartbeat服务后,两边虚拟机都可以设成secondary也可以进行自动挂载!