Heartbeat + LVS + ldirectord构建可伸缩网络服务

Heartbeat + LVS + ldirectord构建可伸缩网络服务
网络环境:
机器数量:2
操作系统:Centos 5.0,Centos 5.2
机器名:centos50,centos52
机器IP:
Centos 5.0: 10.2.20.15
Centos 5.2: 10.2.20.88
虚拟IP: 10.2.20.17

需要的软件:
httpd:提供web服务
LVS:对web服务器按照一定的规则进行转发
Heartbeat:提供ip漂移服务,在主服务器宕机后,备份服务器接管虚拟ip
ldirectord:提供lvs控制,监控真实服务器,出现问题后,对轮循列表进行更新,去除出现问题的服务器

机器角色:
centos50:主负载均衡器+真实服务器
centos52:备份负载均衡器+真实服务器

实现功能:
两台服务器做为负载均衡器进行主从互备,并充当真实服务器功能,对外提供服务,当真实服务器出现问题后,主负载均衡器能够检测到,并从负载均衡轮循列表清除有问题的真实服务器。
当主负载均衡器出现问题后,备份负载均衡器能够接管负载均衡服务,使服务不受影响。

1.最小化安装操作系统;
2.在两台机器上配置机器名
在/etc/hosts文件中添加主机名记录,确保两台机器能够通过主机名相互ping通
3.安装httpd,heartbeat,ldirectord
centos 5.2内核已经包含lvs,不用安装,只安装httpd,heartbeat,ldirectord
yum install httpd,heartbeat,heartbeat-ldirector

4.配置lvs,在两台机器上进行如下操作
1).为回环接口配置虚拟ip
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
修改/etc/sysconfig/network-scripts/ifcfg-lo:0文件,内容如下:
DEVICE=lo:0
IPADDR=10.2.20.16       #虚拟ip地址
NETMASK=255.255.255.255
BROADCAST=255.255.255.255
ONBOOT=yes
NAME=loopback
启动lo:0接口
ifup lo:0

2).修改arp转发规则
修改/etc/sysctl.conf文件,添加如下内容:
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
运行sysctl -p命令,使用配置生效

3).编写lvs真实服务器启动脚本
在/etc/init.d目录下新建文件realserver,内容如下:
#!/bin/sh
#Create on 2007-11-21
#Description start lvs,disable arp response
VIP=10.2.20.17    #虚拟ip
#. /etc/rc.d/init.d/functions
case "$1" in
        start)
                echo "lvs start"
                /sbin/ifconfig lo:0 down
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
        stop)
                echo "lvs stop"
                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
                /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        ;;
        *)
                echo "Usage:$0 {start|stop}"
                exit
        ;;
esac
修改文件权限,使脚本有执行权限
chmod +x realserver

5.配置Heartbeat
1).在/etc/ha.d目录新建ha.cf文件,内容如下:
logfile    /var/log/ha-log    #heartbeat日志文件位置
logfacility    local0    #将heartbeat日志记录到系统日志中,可选
keepalive 2    #设定heartbeat之间的检测时间间隔为2秒
deadtime 30    #在无响应30秒后宣布节点死亡
warntime 10    #在日志中发出“late heartbeat“警告之前等待的时间,单位为秒
initdead 60    #在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的”deadtime”选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍。
udpport    694    #使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号
auto_failback on    #auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。
watchdog /dev/watchdog    #可以在检测到heartbeat不正常状态持续一分钟后自动重新启动系统
node    centos50    #集群中机器的主机名,与“uname �Cn”的输出相同,主结点
node    centos52    #同上,备份结点
ping 10.2.20.254    #用来为ipfail等模块检查网络连接情况的,这里不应是集群节点
respawn hacluster /usr/lib64/heartbeat/ipfail    #在heartbeat启动进运行的程序,ipfail插件的用途是检测网络故障,并作出合理的反应

2).在/etc/ha.d目录新建authkeys文件,内容如下
auth 1
1 crc

这个文件用来在集群机器间进行认证,如果您的Heartbeat运行于安全网络之上,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但您也希望降低CPU使用,则使用md5。最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。

3).在/etc/ha.d目录新建haresources文件,内容如下
centos50 realserver IPaddr::10.2.20.17 ldirectord
centos50:集群主节点,它应该与uname -n命令输出的内容相同
realserver,IPaddr,ldirectord:服务脚本,Heartbeat会在以下路径中寻找有相同名字的服务脚本:/etc/ha.d/resource.d ,/etc/init.d,所以我们的脚本应该在这两个目录下
::10.2.20.17:脚本参数,若要向教本传递参数,格式应该为: <scriptname>::<argument>
heartbeat 在启动会使用<scriptname> start形式运行脚本,启动顺序是先运行realserver脚本,再运行IPaddr脚本,最后运行ldirectord脚本,停止时会使用<scriptname> stop运行脚本,停止顺序是先停止ldirectord脚本,再停止IPaddr脚本,最后停止realserver脚本。

注意:realserver 脚本的作用比较特殊,我们这里两台机器充当的角色比较多,包括主从备份结点,负载均衡器,提供服务的真实服务器。为了实现真实服务器功能,我们需要在lo 接口绑定虚拟ip,并修改内核arp转发规则,使负载均衡功能正常。所以在操作系统启动时我们配置自动启动配置了虚拟ip的lo:0接口,并修改内核 arp转发规则。

主结点heartbeart启动时,如果不关闭lo:0接口,IPaddr脚本就会运行不正常,不能在真实网卡上绑定虚拟ip。所以在主节点启动时我们要将lo:0接口关闭,以使IPaddr脚本正常运行,将虚拟ip绑定到真实网卡;在主结点不正常时再通过 realserver脚本启动lo:0接口,实现真实服务器功能。

备份结点heartbeat启动时,会检测主结点状态,如果主结点状态正常,它只充当真实服务器角色,不会运行haresources里面的内容,这样lo:0接口不会关闭,备份结点的真实服务器功能就可以实现;在检测到主结点出现问题后,备份结点要先把lo:0接口关闭,然后在真实网卡绑定虚拟ip,并通过ldirectord配置lvs轮循列表,充当负载均衡器。

这段话比较��嗦,不知道我说明白没有!

4).在/etc/ha.d目录新建ldirectord.cf文件,内容如下
checktimeout=3
checkinterval=5
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes

virtual=10.2.20.17:80
    real=10.2.20.15:80 gate 5
    real=10.2.20.88:80 gate 5
    fallback=127.0.0.1:80 gate
    service=http
    request="test.html"
    receive="Test Page"
    scheduler=wlc
    checktype=negotiate

文件内容的含义,在网上找找,写不下去了
在web服务器根目录新建文件test.html,内容:Test Page
在web服务器根目录新建文件index.html,内容:This is server1
5).将以上文件全部复制到另一台机器
scp ha.cf authkeys haresources ldirectord.cf [email protected]:/etc/ha.d/
修改authkeys文件权限为600
在web服务器根目录新建文件test.html,内容:Test Page
在web服务器根目录新建文件index.html,内容:This is server2

6.在两台机器上启动heartbeat
service heartbeat start

7.测试服务器状态
通过ifconfig命令查看主结点是否在真实网卡上绑定了虚拟ip
通过ipvsadm -l 命令查看主结点lvs轮循列表是否正常
通过虚拟ip访问web服务,并刷新,看负载均衡功能是否正常
通过拔掉主结点网线,查看备份结点是否能够接管虚拟ip

你可能感兴趣的:(LVS,职场,休闲)