免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2648 | 回复: 3
打印 上一主题 下一主题

Heartbeat + LVS + ldirectord构建可伸缩网络服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-12 16:30 |只看该作者 |倒序浏览
网络环境:
机器数量: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 "Usage0 {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 –n”的输出相同,主结点
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 root@xxx.xxx.xxx.xxx:/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

[ 本帖最后由 lnycm 于 2009-2-12 16:33 编辑 ]

评分

参与人数 1可用积分 +30 收起 理由
kns1024wh + 30 鼓励发布文档

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-02-12 21:16 |只看该作者

回复 #1 lnycm 的帖子

提醒一下要保持主从调度服务器之间的状态信息的同步

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
3 [报告]
发表于 2009-02-12 21:28 |只看该作者
谢谢楼主分享心得,收藏先

论坛徽章:
0
4 [报告]
发表于 2009-02-16 11:04 |只看该作者
原帖由 kns1024wh 于 2009-2-12 21:16 发表
提醒一下要保持主从调度服务器之间的状态信息的同步



在ldirectord的结构中,好像没有看到状态信息同步的机制, 在keepalied中好像有这个机制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP