案例一

拓扑图

HA 高可用性群集_第1张图片

案例说明

实现基于HA高可用性的群集系统

实现LVA-DR直接路由模型模型

案例1.1

node1和node2群集服务器网卡配置

node1的RIP配置,Eth0选择hostonly连接

HA 高可用性群集_第2张图片

心跳网卡配置Eth1,选择vmnet2连接

HA 高可用性群集_第3张图片

重启node1网络服务

#service network restart

node2的RIP配置,Eth0选择hostonly连接

HA 高可用性群集_第4张图片

心跳网卡配置Eth1,选择vmnet2连接

HA 高可用性群集_第5张图片

重启node2网络服务

#service network restart

主机名配置

node1主机名配置

[root@localhost ~]# vim /etc/sysconfig/network

clip_image012

[root@localhost ~]# hostname node1.a.com #配置后需注销才能生效。

[root@localhost ~]# hostname #查看主机名

clip_image014

[root@localhost ~]# vim /etc/hosts

配置node1的本地DNS解析

clip_image016

node2主机名配置

[root@localhost ~]# vim /etc/sysconfig/network

clip_image018

[root@localhost ~]# hostname node2.a.com #配置后需注销才能生效。

[root@localhost ~]# hostname #查看主机名

clip_image020

[root@localhost ~]# vim /etc/hosts

clip_image021

yum配置

node1配置

[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

HA 高可用性群集_第6张图片

node2配置

这里我们从node1拷贝

[root@node2 ~]# scp node1.a.com:/etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/

httpd和lynx的安装

node1的安装
[root@node1 ~]# mkdir /mnt/cdrom

[root@node1 ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@node1 ~]# yum install -y httpd

[root@node1 ~]# cd /var/www/html/

[root@node1 html]# echo "node1.a.com">index.html

[root@node1 html]# yum install -y lynx

node2的安装

[root@node2 ~]# mkdir /mnt/cdrom

[root@node2 ~]# mount /dev/cdrom /mnt/cdrom/

[root@node2 ~]# yum install -y httpd

[root@node2 ~]# cd /var/www/html/

[root@node2 html]# echo "node2.a.com">index.html

[root@node2 html]# yum install -y lynx

测试

HA 高可用性群集_第7张图片

clip_image027

heartbeat的配置

node1的配置

使用yum安装heartbeat相应的软件包

[root@node1 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck

拷贝heartbeat的3个配置文件到etc下ha.d目录下

[root@node1 ~]# cd /usr/share/doc/heartbeat-2.1.4/

[root@node1 heartbeat-2.1.4]# cp ha.cf haresources authkeys /etc/ha.d/

[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/

编译心跳探测配置文件ha.cf

[root@node1 ha.d]# vim ha.cf

定义心跳网卡

clip_image029

声明群集的节点

clip_image031

[root@node1 ha.d]# dd if=/dev/random bs=512 count=1

clip_image033

[root@node1 ha.d]# dd if=/dev/random bs=512 count=1 |openssl md5

HA 高可用性群集_第8张图片

改变authkeys的权限

[root@node1 ha.d]# chmod 600 authkeys #需将此文件权限改为600

配置验证钥匙(为了实现双方身份验证)

[root@node1 ha.d]# vim authkeys

clip_image037

编辑heartbeat资源管理器:(用于管理Director上的服务,比如httpd的启动)

[root@node1 ha.d]# vim haresources

clip_image039

#192.168.10.101是vip,httpd是heartbeat控制的服务类资源

将httpd的控制脚本复制到heartbeat资源管理目录

[root@node1 ha.d]# cp /etc/init.d/httpd resource.d/

启动heartbeat服务

[root@node1 ha.d]# service heartbeat start

Node2的配置,这里我们从node1上拷贝。

[root@node2 html]# scp node1.a.com:/root/*.rpm ./

[root@node2 html]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm –nogpgcheck

[root@node2 html]# cd /etc/ha.d/

[root@node2 ha.d]# ll

总计 24

-rwxr-xr-x 1 root root 745 2009-07-25 harc

drwxr-xr-x 2 root root 4096 10-12 14:36 rc.d

-rw-r--r-- 1 root root 692 2009-07-25 README.config

drwxr-xr-x 2 root root 4096 10-12 14:36 resource.d

-rw-r--r-- 1 root root 7862 2009-07-25 shellfuncs

[root@node2 ha.d]# scp node1.a.com:/etc/ha.d/ha.cf /etc/ha.d/

[email protected]'s password:

ha.cf 100% 10KB 10.4KB/s 00:00

[root@node2 ha.d]# scp node1.a.com:/etc/ha.d/haresources /etc/ha.d/

[email protected]'s password:

haresources 100% 5961 5.8KB/s 00:00

[root@node2 ha.d]# scp node1.a.com:/etc/ha.d/authkeys /etc/ha.d/

[email protected]'s password:

authkeys 100% 691 0.7KB/s 00:00

[root@node2 ha.d]# scp node1.a.com:/etc/init.d/httpd /etc/ha.d/resource.d/

[email protected]'s password:

httpd 100% 3263 3.2KB/s 00:00

[root@node2 ha.d]# service heartbeat start

HA 高可用性群集_第9张图片

HA 高可用性群集_第10张图片

[root@node1 ha.d]# cd /usr/lib/heartbeat/

[root@node1 heartbeat]# ./hb_standby #成为备份

此时node1的网络地址如下(可以看出node1成为备份)

HA 高可用性群集_第11张图片

Node2的ip如下(可以看出node2成为主控)

HA 高可用性群集_第12张图片

此时网页

HA 高可用性群集_第13张图片

[root@node1 heartbeat]# ./hb_takeover #可以抢占回来

案例1.2

接下来,我们卸载httpd并安装ipvsadm,由于ipvsadm在cluster中,所以我们需要编辑本地yum

node1的yum配置及ipvsadm安装

[root@node1 ~]# service httpd stop

[root@node1 ~]# service heartbeat stop

[root@node1 ~]# yum remove -y httpd

[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

HA 高可用性群集_第14张图片

[root@node1 ~]# yum install -y ipvsadm

node2的yum配置及ipvsadm安装

[root@node2 ha.d]# service httpd stop

[root@node2 ha.d]# service heartbeat stop

[root@node2 ha.d]# yum remove -y httpd

[root@node2 ha.d]# scp node1.a.com:/etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/

[root@node2 ha.d]# yum install -y ipvsadm

Ipvsadm的配置

node1配置

编写ipvs转发表格

[root@node1 ~]# ipvsadm -A -t 192.168.10.101:80 -s rr

[root@node1 ~]# ipvsadm -a -t 192.168.10.101:80 -r 192.168.10.200 -g

[root@node1 ~]# ipvsadm -a -t 192.168.10.101:80 -r 192.168.10.201 -g

保存ipvs规则到 /etc/sysconfig/ipvsadm

[root@node1 ~]# service ipvsadm save

[root@node1 ~]# service ipvsadm stop

[root@node2 ha.d]# scp node1.a.com:/etc/sysconfig/ipvsadm /etc/sysconfig/

[root@node1 ~]# vim /etc/ha.d/haresources

clip_image053

将ipvsadm的控制脚本复制到heartbeat资源管理目录,为了使heartbeat能对ipvsadm进行控制

[root@node1 ~]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/

node2配置

[root@node1 ~]# scp /etc/ha.d/haresources node2.a.com:/etc/ha.d/

[root@node1 ~]# scp /etc/init.d/ipvsadm node2.a.com:/etc/ha.d/resource.d/

查看ipvsadm服务状态为停止

clip_image055

clip_image057

启动heartbeat服务

[root@node1 ~]# service heartbeat start

[root@node2 ha.d]# service heartbeat start

HA 高可用性群集_第15张图片

[root@node1 ~]# cd /usr/lib/heartbeat/

使node1成为备份状态

[root@node1 heartbeat]# ./hb_standby

查看node2的网络地址,可以看出此时node2为主控状态。

HA 高可用性群集_第16张图片

realserver1和realserver2配置

realserver1的eth0网卡配置RIP

HA 高可用性群集_第17张图片

realserver1的lo:0接口配置VIP

HA 高可用性群集_第18张图片

realserver2的eth0网卡配置RIP

HA 高可用性群集_第19张图片

realserver2的lo:0接口配置VIP

HA 高可用性群集_第20张图片

两个都需执行以下参数

#vim /etc/sysctl.conf

clip_image071

两个都需执行以下参数

#sysctl -a |grep arp先查看内核参数announced=2和ignore=1

clip_image071[1]

#Sysctl -p使配置的内核参数生效

# route add -host 192.168.10.101 dev lo:0 //添加路由。为了实现vip类对访问进行应答,需要使从realserver1到任何地址的数据包从lo:0的接口使用vip发送。

Realserver1 路由表

clip_image073

Realserver2路由表

clip_image075

#yum install -y httpd

#cat /var/www/html/index.html

# service httpd start

此时没有启用ipvsadm

测试,访问http://192.168.10.101

clip_image077

刷新后。

clip_image079

使node1成为备份

[root@node1 heartbeat]# ./hb_standby

此时只能看到web2

clip_image079[1]

群集可以正常使用。案例一完毕。

案例二:(此案例基于案例一)

拓扑图

HA 高可用性群集_第21张图片

案例说明

1实现基于HA高可用性的群集系统

2实现LVA-DR直接路由模型模型

3通过heartbeat的ldirectord服务实现动态ipvs规则表

配置步骤

在node1上配置

下载并上传heartbeat-ldirectord的rpm包到root下

HA 高可用性群集_第22张图片

安装ldirectord

[root@node1 ~]# rpm -ivh heartbeat-ldirectord-2.1.4-9.el5.i386.rpm

将ldirectord的配置文件拷贝到ha.d目录下

[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/

编辑ldirectord配置文件

[root@node1 ~]# vim /etc/ha.d/ldirectord.cf

HA 高可用性群集_第23张图片

编辑heartbeat的资源管理文件

[root@node1 ~]# vim /etc/ha.d/haresources

clip_image085

#资源1是:ip地址192.168.10.101

#资源2是:服务ldirectord,后跟上服务的对应配置脚本。

删除原来的ipvsadm规则条目

[root@node1 ~]# mv /etc/sysconfig/ipvsadm /etc/sysconfig/ipvsadm.old

将ldirectord的控制脚本拷贝到heartbeat资源控制目录中

node2的配置

[root@node1 ~]# scp /etc/ha.d/ldirectord.cf node2.a.com:/etc/ha.d/

启动heartbeat服务

[root@node1 ~]# service heartbeat start

[root@node2 ~]# service heartbeat start

realserver1和realserver2中创建测试页面

#cd/var/www/html

#echo “ok”>.test.html

测试

当realserver的httpd服务都正常运行时

[root@realserver1 ~]# service httpd start

[root@realserver2 ~]# service httpd start

查看主群集服务的网络地址

HA 高可用性群集_第24张图片

查看备份服务器的网络地址

HA 高可用性群集_第25张图片

查看主群集服务器的ipvs规则条目

clip_image091

clip_image093

clip_image095

当关闭realserver2的httpd服务后

[root@realserver2 ~]# service httpd stop

HA 高可用性群集_第26张图片

查看主群集服务器的ipvs规则条目

clip_image097

#只有realserver2的ipvs规则

接着关闭realserver1的httpd服务后

[root@realserver1 ~]# service httpd stop

HA 高可用性群集_第27张图片

查看主群集服务器的ipvs规则条目

clip_image101

#realserver1和realserver2的ipvs规则都消失了

HA

HA 高可用性群集_第28张图片

Node1和node2的eth0网卡选择hostonly,eth1网卡选择vmnet2连接。

Realserver1和realservere的eth0网卡选择hostonly,eth1网卡选择vmnet3连接。

Target的eth0网卡选择vmnet3连接。

[root@node1 ~]# setup

HA 高可用性群集_第29张图片

HA 高可用性群集_第30张图片

[root@node2 ~]# setup

HA 高可用性群集_第31张图片

HA 高可用性群集_第32张图片

[root@realserver1 ~]# setup

HA 高可用性群集_第33张图片

HA 高可用性群集_第34张图片

[root@realserver2 ~]# setup

HA 高可用性群集_第35张图片

HA 高可用性群集_第36张图片

[root@realserver1 ~]# route add -host 192.168.10.101 dev lo:0

[root@realserver2 ~]# route add -host 192.168.10.101 dev lo:0

[root@target ~]# setup

HA 高可用性群集_第37张图片

[root@realserver1 ~]# ssh 192.168.2.100

[root@target ~]# mkdir /mnt/cdrom/

[root@target ~]# mount /dev/cdrom /mnt/cdrom/

[root@target ~]# cd /mnt/cdrom/ClusterStorage/

[root@target ClusterStorage]# yum install -y scsi-target-utils-0.0-5.20080917snap.el5.i386.rpm

[root@target ClusterStorage]# service tgtd start

[root@target ClusterStorage]# chkconfig tgtd on

[root@target ClusterStorage]# fdisk –l

HA 高可用性群集_第38张图片

[root@target ClusterStorage]# fdisk /dev/sda

[root@target ClusterStorage]# tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iqn.2012-10.com.a.target:disk

[root@target ClusterStorage]# tgtadm --lld iscsi --op show --mode target

HA 高可用性群集_第39张图片

[root@target ClusterStorage]# tgtadm --lld iscsi --op new --mode=logicalunit --tid=1 --lun=1 --backing-store /dev/sda4

[root@target ClusterStorage]# tgtadm --lld iscsi --op show --mode target

HA 高可用性群集_第40张图片

[root@target ClusterStorage]# tgtadm --lld iscsi --op bind --mode=target --tid=1 --initiator-address=192.168.2.0/24

HA 高可用性群集_第41张图片

[root@target ClusterStorage]# vim /etc/tgt/targets.conf

HA 高可用性群集_第42张图片

[root@realserver1 ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@realserver1 ~]# cd /mnt/cdrom/Server/

[root@realserver1 Server]# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.i386.rpm

[root@realserver2 ~]# mount /dev/cdrom /mnt/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@realserver2 ~]# cd /mnt/cdrom/Server/

[root@realserver2 Server]# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.i386.rpm

此时磁盘信息显示、

HA 高可用性群集_第43张图片

[root@realserver1 Server]# vim /etc/iscsi/initiatorname.iscsi

clip_image030

[root@realserver1 Server]# service iscsi start

[root@realserver1 Server]# chkconfig iscsi on

[root@realserver1 Server]# iscsiadm --mode discovery --type sendtargets --portal 192.168.2.100

clip_image032

[root@realserver1 Server]# iscsiadm --mode node --targetname iqn.2012-10.com.atarget:disk --portal 192.168.2.100:3260 --login

clip_image034

[root@realserver1 Server]# fdisk –l

HA 高可用性群集_第44张图片

[root@target ~]# tgtadm --lld iscsi --op show --mode target

HA 高可用性群集_第45张图片

分区

[root@realserver1 Server]# fdisk /dev/sdb

HA 高可用性群集_第46张图片

HA 高可用性群集_第47张图片

格式化分区

[root@realserver1 Server]# mkfs -t ext3 /dev/sdb1

[root@realserver1 Server]# mkdir /mnt/1

[root@realserver1 Server]# mount /dev/sdb1 /mnt/1

[root@realserver1 Server]# mount

HA 高可用性群集_第48张图片

[root@realserver2 ~]# vim /etc/iscsi/initiatorname.iscsi

clip_image046

先启用再发现再登陆。

[root@realserver2 ~]# service iscsi start

[root@realserver2 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.2.100

clip_image048

[root@realserver2 ~]# iscsiadm --mode node --targetname iqn.2012-10.com.a.target:disk --portal 192.168.2.100:3260 --login

clip_image050

[root@realserver2 ~]# mkdir /mnt/1

[root@realserver2 ~]# mount /dev/sdb1 /mnt/1/

[root@realserver2 ~]# mount

[root@realserver1 1]# touch f1

[root@realserver2 1]# touch f2

HA 高可用性群集_第49张图片

clip_image054

[root@realserver1 ~]# umount /mnt/1

[root@realserver1 ~]# iscsiadm --mode node --targetname iqn.2012-10.com.a.target:disk --portal 192.168.2.100:3260 --logout

[root@realserver1 ~]# iscsiadm --mode node --targetname iqn.2012-10.com.a.target:disk --portal 192.168.2.100:3260 --login

[root@realserver1 ~]# mount /dev/sdb1 /var/www/html/

[root@realserver1 ~]# cd /var/www/html/

[root@realserver1 html]# vim index.html

web

[root@realserver1 html]# vim .test.html

ok

[root@realserver2 ~]# umount /mnt/1

[root@realserver2 ~]# iscsiadm --mode node --targetname iqn.2012-10.com.a.target:disk --portal 192.168.2.100:3260 --logout

[root@realserver2 ~]# iscsiadm --mode node --targetname iqn.2012-10.com.a.target:disk --portal 192.168.2.100:3260 --login

[root@realserver2 ~]# mount /dev/sdb1 /var/www/html/

[root@realserver2 ~]# cd /var/www/html/

HA 高可用性群集_第50张图片

HA 高可用性群集_第51张图片

HA 高可用性群集_第52张图片

[root@realserver1 html]# service httpd start

[root@realserver2 html]# service httpd start

[root@node1 ~]# service heartbeat start

[root@node2 ~]# service heartbeat start

HA 高可用性群集_第53张图片

[root@realserver1 html]# service httpd stop

HA 高可用性群集_第54张图片

HA 高可用性群集_第55张图片