实验拓扑图:
原理:在LVS-DR(负载均衡)模型基础上,将director节点制作成HA(高可用集群)。以实现高可用和负载均衡。当director1当掉后,director2来替代director1工作,以保证服务的可用性,
(1)配置网络环境
1)在director1上,配置ip和主机名。
配置ip
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:BOOTPROTO=static
添加:IPADDR=192.168.0.111
NETMASK=255.255.255.0
#vim /etc/sysconfig/network-scripts/ifcfg-eth1
修改:BOOTPROTO=static
添加:IPADDR=10.0.11.11
NETMASK=255.255.0.0
配置主机名
#vim /etc/sysconfig/network
修改:HOSTNAME=node1.hanlenry.com
#hostname node1.hanlenry.com
添加地址解析条目
#vim /etc/hosts
添加:192.168.0.111 node1.hanlenry.com node1
192.168.0.112 node2.hanlenry.com node2
为了方便我们在两个节点之间相互拷贝文件时,不用输密码就可以直接拷贝。我们需要做一些配置,在node1上生成私钥,并把node1(director1)上的公钥拷贝到node2(director2)上。
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node2
#ssh node2 -- 'ifconfig'
2)在director2上,配置ip和主机名
配置ip
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:BOOTPROTO=static
添加:IPADDR=192.168.0.112
NETMASK=255.255.255.0
#vim /etc/sysconfig/network-scripts/ifcfg-eth1
修改:BOOTPROTO=static
添加:IPADDR=10.0.11.12
NETMASK=255.255.0.0
配置主机名
#vim /etc/sysconfig/network
修改:HOSTNAME=node2.hanlenry.com
#hostname node2.hanlenry.com
添加地址解析条目
#vim /etc/hosts
添加:192.168.0.111 node1.hanlenry.com node1
192.168.0.112 node2.hanlenry.com node2
为了方便我们在两个节点之间相互拷贝文件时,不用输密码就可以直接拷贝。和在node1上的配置一样,如下:
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node1
#ssh node1 -- 'ifconfig'
(2)安装heartbeat,都需要在node1和node2上安装。安装过程都是一样的,我这里就不指定在谁上安装了,你需要在node1和node2上安装。
所需要的安装包:
heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-devel-2.1.4-9.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm
heartbeat-gui-2.1.4-9.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
#yum localistall *.rpm -y --nogpgcheck
(3) 对heartbeat的配置文件做相应的配置。
在node1上
#cd /usr/share/doc/heartbeat-2.1.4/
#cp ha.cf haresources authkeys /etc/ha.d
#cd /etc/ha.d
------------------------------------
#vim ha.cf
添加:bcast eth1
node node1.a.org
node node2.a.org
--------------------------
#vim authkeys
添加: auth 2
2 sha1 hanlenry #sha1后面的内容是可以随便输入。
补充:( 生成随机数:#dd if=/dev/urandom bs=512 count1 |md5sum)
修改权限:
#chmod 400 authkeys
-----------------------
#vim haresources
添加:
node1.a.org 192.168.0.12/32/eth0/192.168.0.12
主节点 流动地址 指定广播地址
注意:主节点说明开始node1工作着,只有当node1挂掉后,node2 才能代替node1开始工作。
--------------------------
将配置文件复制到node2上。
# scp ha.cf haresources authkeys node2:/etc/ha.d/
(4) 启动hearbeat。
在node1上
启动node1上的hearbeat。
#/etc/init.d/heartbeat start
启动node2上的heartbeat。
#ssh node2 -- '/etc/init.d/heartbeat start'
(5) 测试,将node1上的hearbeat停掉之后,看流动ip(VIP)是否会在node2上出现。
#/etc/init.d/heartbeat stop
#ssh node2 – ‘ifconfig’
(6) 如果出现了,则进行接下来的工作
编写脚本:当node1节点当掉后,node2会自动执行此脚本,配置路由和定义集群服务,执行ipvsadm命令。把此脚本做成服务,添加到/etc/init.d/。
#cd
#vim director.sh
-------------------------
#!/bin/bash
VIP=192.168.0.12
RIP1=192.168.0.123
RIP2=192.168.0.124
case "$1" in
start)
route add -host $VIP dev eth0:0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -Z
ipvsadm -C
ipvsadm -A -t $VIP:80 -s wlc
ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 5
ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 3
touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
ipvsadm -C
ifconfig eth0:0 down
route del $VIP
rm -f /var/lock/subsys/ipvsadm
echo "ipvsadm is stopped..."
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ]; then
echo "ipvsadm is stopped ..."
else
echo "ipvsadm is running ..."
ipvsadm -L -n
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
;;
esac
------------------------------
编写完脚本之后,修改权限
#chmod a+x director.sh
把此脚本放到/etc/init.d/
#cd /etc/init.d
#ln –sv /root/director.sh director
我们需要修改一下/etc/ha.d/haresources文件。需要在原有的基础上添加上服务。
#vim /etc/ha.d/haresources
修改:node1.a.org 192.168.0.12/32/eth0/192.168.0.12 director
说明:当哪个节点eth0上有VIP时,启动停止heartbeat时,就会执行director服务。当node1节点当掉时,VIP会流动到node2节点上,此时就会执行此脚本。就会配置一条主机路由,并添加集群服务的配置。
给node2复制一份
#scp /root/director.sh node2:/root
#scp /etc/ha.d/haresources node2:/etc/ha.d
在node2上
#cd /etc/init.d
#ln –sv /root/director.sh director
----------------------------------------------
(7) 验证。我把node1和node2的heartbeat都启动。由于上面我们做测试的时候,将node1停掉了,此时我们只需要把node1启动就可以了。我们来看一下结果。
#/etc/init.d/heartbeat start
:查看是否有流动ip(VIP)
查看node2:
查看node1的集群服务:
查看node2的集群服务:
好,现在我将node1停掉,模拟node1当机。我们再来看一下结果。
查看node1:
查看node2:
(8) 配置realserver
Rip配置在接口(eth0)上,Vip配置在lo的别名上;
在server1和server2上都得配置,配置如下:
1.定义内核参数,禁止响应对Vip的ARP广播请求;
#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2.配置Vip
#ifconfig lo:0 192.168.0.12 broadcast 192.168.0.12 netmask 255.255.255.255 up
添加主机路由:
#route add -host 192.168.0.12 dev lo:0
3.安装apache
#yum install httpd
#vim /var/www/html/index.html
添加:This is the test page
From Web1
,为了方便验证,你可以将server2上的web页面的内容改一改。
#service httpd start
4.在浏览器的地址栏中输入:192.168.0.12
(9) 整个架构都配置完成了,你可以将采取下列方法进行测试:
1)node1和node2都关闭。
2)将node1和node2都开启。
3)将node1关闭。
分别看看效果。这步操作就交给各位自己实践一下了。