实现集群的高可用和负载均衡(基于LVS-DR模型)

1837阅读 0评论2011-09-11 hanlenry
分类:LINUX

 

实验拓扑图:

 

原理:在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,都需要在node1node2上安装。安装过程都是一样的,我这里就不指定在谁上安装了,你需要在node1node2上安装。

所需要的安装包:

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) 验证。我把node1node2heartbeat都启动。由于上面我们做测试的时候,将node1停掉了,此时我们只需要把node1启动就可以了。我们来看一下结果。

              #/etc/init.d/heartbeat start

:查看是否有流动ipVIP


 

查看node2

查看node1的集群服务:

查看node2的集群服务:

 

好,现在我将node1停掉,模拟node1当机。我们再来看一下结果。

 

查看node1

 

 

查看node2

 

 

(8) 配置realserver

Rip配置在接口(eth0)上,Vip配置在lo的别名上;

server1server2上都得配置,配置如下:

1.定义内核参数,禁止响应对VipARP广播请求;

#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)node1node2都关闭。

2)将node1和node2都开启。

3)将node1关闭。

分别看看效果。这步操作就交给各位自己实践一下了。

上一篇:高可用集群(HA)的简单架设
下一篇:检测Realserver的脚本