免费注册 查看新帖 |

Chinaunix

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

LVS Heartbeat Ldirectord在Centos 4.6上的实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-11 19:17 |只看该作者 |倒序浏览
LVS Heartbeat Ldirectord在Centos 4.6上的实现
一。我实验室中服务ip地址规划如下:
lvs director(及lvs服务器):DIP-192.168.5.238  vip-192.168.5.236
网关:192.168.5.1
两台lvs real server ip分别为:192.168.5.45,192.168.5.216
网关:192.168.5.1
二。所需软件列表如下:
heartbeat-2.1.3-1.fc7.i386.rpm
(requires pils and stonith RPMs)
heartbeat-debuginfo-2.1.3-1.fc7.i386.rpm

heartbeat-devel-2.1.3-1.fc7.i386.rpm

heartbeat-gui-2.1.3-1.fc7.i386.rpm

heartbeat-ldirectord-2.1.3-1.fc7.i386.rpm
(needed for integration with LVS)
pils-2.1.3-1.fc7.i386.rpm

stonith-2.1.3-1.fc7.i386.rpm
软件官方下载地址:http://linux-ha.org/download/index.html#2.1.3
三。检查内核是否支持ipvs功能
modprobe -l|grep ipvs,下面是我本机输出的列表,你的有可能与不同,但只要有下列类似ip_vs输出,证明你的内核巳支持ipvs,否则你还必须下载内核原代码重新译内核。
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.9-67.0.22.EL/kernel/net/ipv4/ipvs/ip_vs.ko
四。安装第二步下载的heartbeat软件及配置heartbeat与ldirectord
a)录找配置实例文件
rpm -qd heartbeat|grep ha.cf
rpm -qd heartbeat|grep haresources
rpm -qd heartbeat-ldirectord|grep ldirectord.cf

我本机中ha.cf 与
haresources安装好后在/usr/share/doc/heartbeat-2.1.3/目录下,而ldirector.cf配置文件是在
/usr/share/doc/heartbeat-ldirectord-2.1.3/下。找到后将ha.cf与haresources挎至
/etc/ha.d与/etc/ha.d/conf目录下,而ldirectord.cf挎至/etc/ha.d/conf目录下。
b)修改配置文件.
1.以下是我/etc/ha.d/ha.cf中我注释掉的内容:
debugfile /var/log/ha-debug---heartbeat debbug日志文件路径
logfile    /var/log/ha-log----heartbeat 日志文件路径
keepalive 2 心跳检测时间间隔
deadtime 30 多久没有检测到心跳时宣布死亡
warntime 10
initdead 120 heartbeat第一次启动时启动其所控资源的时间
udpport    694 heartbeat监听端口
bcast    eth0        # Linux心跳路径,最好不要与正常生产网络中的设备混在一起
watchdog /dev/watchdog 启动内核看门狗功能
node    zhanghy    主节点主机名称(必须同uname -n返回的主机名相同)
node    host188        备份主机名称(同上)
ping    192.168.5.1    ping我内部网关地址,主要是利用ipfail功能检测主服务器网络是否正常
ping     192.168.5.2  同上
respawn hacluster /usr/lib/heartbeat/ipfail heartbeat的一插件
apiauth ipfail gid=haclient uid=hacluster
2.下面是我在haresources中修改的项
zhanghy 192.168.5.236/24/eth0/192.168.5.255 ldirectord::ldirectord.cf LVSSyncDaemonSwap::master
haresources中语法格式如下:
lvs director主机服务器名称 vip地址/掩码/监听网卡/广播地址 资源脚本(注:资料脚本必须位于/etc/init.d/或/etc/ha.d/resource.d下,且不能随机一启动)
3.ldirectord.cf的配置文件如下
# Global Directives
checktimeout=3 超时时间
checkinterval=1 检测真实服务器的间隔
#fallback=127.0.0.1:80
autoreload=yes 表示修改ldirectord.cf配置文件ldirectord自动加载
logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="zhanghuiyun0978@gmail.com"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=yes 如果真实服务器失败,ldirectord所采取的动作,注意如果主里设为yes,则必须在内核中修改下列文件:
echo "1" >/proc/sys/net/ipv4/vs/expire_quiescent_template
echo "1" >/proc/sys/net/ipv4/vs/expire_nodest_conn
# Sample for an http virtual service
virtual=192.168.5.236:80 增加一台ip地址为192.168.5.236虚拟服务器
    real=192.168.5.45:80 gate  对虚拟服务器80端口的访问重定向ip地址为192.168.5.45的真实服务器的80端上
    real=192.168.5.216:80 gate  意义同上
#    real=192.168.5.238:80 gate
     fallback=127.0.0.1:80 gate 如果两台真实服务器都无效,则定向本机的lo地址
    service=http 指定服务类型
    request="testpage" ldirectord检查真实服务器时用到的页面
    receive="test page" ldirectord所请求页面内的内容
#    virtualhost=some.domain.com.au
    scheduler=rr lvs-dr调度方法,rr表示循环调用
    persistent=600 tcp连接时间
    netmask=255.255.255.255 掩码
    protocol=tcp 协议类型
      checktype=negotiate ldirectord检测真实服务器的方式
#      checkport=80
     request="testpage" 同上可不用
     receive="test page"同上可不用
#     virtualhost=www.x.y.z
ldirectord工作原理:
ldirectord
需要你在真实服务器内启用apache服务器,并在每台真实服务器web服务器的根目录下建立你在配置文件所指定的文件与内容,然后ldirectord
通过循环检查此文件来确定真实服务器是否存活,如果不存活,则自动将其权重设为0,以确保后面客户的连接不会再导向失效的真实服务器,如果真实服务修复上
线后,则其又将它的权重设为以使它能够继续为客端连接提供服务。
               
               
               
               
               
               
               
               
                ldirectord主要是通过调用ipvsadm来创建ipvs虚拟服务器表。ipvsadm的使用在前期的转载文章中描述的表较详细,所以这里不阐述,有兴趣的朋友请参考前面的文章。
五。在真实服务器上打开arp广播忽略及在真实服务器上回环设备上增加vip地址,直接将下面脚本放在你的真实服务器上运行并确定能随机启动。
#!/bin/bash
#ignore arp script
VIP1=192.168.5.236
#*************************************************************
case $1 in
start)
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
#Add ip alias for lo
/sbin/ifconfig lo:0 $VIP1 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev lo:0
;;
stop)
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
/sbin/ifconfig lo:0 $VIP1 netmask 255.255.255.255 down
/sbin/route del -host $VIP1
;;
status)
iothere=`/sbin/ifconfig lo:0|grep $VIP1`
iorthere=`/bin/netstat -rn|grep $VIP1`
if [ ! "$iothere" -o ! "$iorthere" ];then
    echo "LVS Real Server is STOP"
    else
    echo "LVS Real Server is ALIVE"
fi
;;
*)
echo "Usage:$0 start|stop|status"
;;
esac
六。在lvs director服务器输入watch ipvsadm -L -n检查你的ipvs表,并在其它电脑上输入http://192.168.5.236检查lvs服务器是否会自动循环真实服务器ip地址。
后面我将陆续增加一些关于集群服务性能监控方面的文章,也希望朋友能提供集群方面的相关知识,共同时进步。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/82873/showart_1405656.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP