免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: suran007
打印 上一主题 下一主题

lvs dr with squid问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-07-15 11:29 |只看该作者
试了很多遍,还是不行,最后没办法只能放弃piranha,改用ipvsadm+keepalived,终于搞定了

论坛徽章:
0
12 [报告]
发表于 2007-07-21 20:16 |只看该作者
原帖由 suran007 于 2007-7-15 11:29 发表
试了很多遍,还是不行,最后没办法只能放弃piranha,改用ipvsadm+keepalived,终于搞定了

我也是放弃了piranha,还是自己来组合,这样可以达到自己想要的目的呀,suran, 有空可以交流一下吗?我的QQ:114046548

论坛徽章:
0
13 [报告]
发表于 2007-12-28 14:25 |只看该作者
原帖由 suran007 于 2007-6-11 16:04 发表
大家好,我的系统是redhat as4 update 3 ,内核版本是2.6.9-34.EL,ipvsadm-1.24-6,piranha-0.8.2-1 ,整个lvs集群架构是
                           lvs director
                               |  
   ...

这个问题我使用lvs/dr ->squid ->apache 已经解决了.

论坛徽章:
0
14 [报告]
发表于 2007-12-29 13:40 |只看该作者
以前做的一些东西,也不知道你用得上用不上.内部资料,所以不是很详细.但配置是一定可以成功的.try it ~~MSN:jason_wangxu@hotmail.com,多多交流.

Lvs+heartbeat

Load Balancer是整个集群系统的前端,负责把客户请求转发到Real Server上。

Backup是备份Load Balancer,当Load Balancer不可用时接替它,成为实际的Load Balancer。
Load Balancer通过Ldirectord监测各Real Server的健康状况。在Real Server不可用时把它从群中剔除,恢复时重新加入。

IPVS是LVS集群系统的核心软件,它的主要作用是:

安装在Load Balancer上,把发往Virtual IP的请求转发到Real Server上。  



IPVS安装主要包括几个方面:

在Load Banlancer上安装IPVS内核补丁 (2.6内核以上已经包括)

在Real Server上安装ARP hidden内核补丁 (2.6内核以上已经包括)

在Load Banlancer上安装IPVS管理软件ipvsadm-1.24.tar.gz

安装heatbeat前必须先安装libnet包,libnet提供了一些高层的api(就是应用程序编程接口)   

下载地址:http://www.packetfactory.net/libnet/  稳定版本是:1.1.2.1

e2fsprogs是一个磁盘管理工具,这里说需要安装但不知道有什么用(知道的提个醒)

heartbeat 心跳监测

如果机器不够用,可以考虑充分利用资源可以将上面的备机也做为一个realserver的服务器,但如果有则就不需要这样做了.



二 各种模式详解:

1.Virtual server via NAT(VS-NAT缓存在前调度在后)radware

  Virtual Server via NAT方法的最大优点是集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。这种实现方法的最大的缺点是扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。

2.Virtual server via IP tunneling(VS-TUN)

基于IP隧道模式Lvs集群,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议,我仅在Linux系统上实现了这个。

3.Virtual Server via Direct Routing(VS-DR调度在前缓存在后)LVS

就象VS-TUN一下,在VS-DR方式下,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。这种方式能够大大提高Virtual Server的可扩展性。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,但它要求负载均衡器的网卡必须与物理网卡在一个物理段上。



我们这里使用DR模式+HA模式

配置基于DR模式Lvs集群

环境描述:本文在配置LVS时使用5台linux,一台做Directorserver(192.168.0.25) ,3台做realserver(192.168.0.127 192.168.0.128,192.168.0.129),在配置lvs+heartbeat时又添加了一台(192.168.0.126)做为备份主节点,虚拟VIP:192.168.0.100



可以编译也可以用novell 公司的集群套件rpm包.

heartbeat-2.0.4-1.el4.i386.rpm

heartbeat-ldirectord-2.0.4-1.el4.i386.rpm

heartbeat-pils-2.0.4-1.el4.i386.rpm

heartbeat-stonith-2.0.4-1.el4.i386.rpm

ipvsadm-1.24-5.i386.rpm

libnet-1.1.2.1-1.rh.el.um.1.i386.rpm

perl-Authen-SASL-2.08-1.rh.el.um.1.noarch.rpm

perl-Convert-ASN1-0.18-1.rh.el.um.1.noarch.rpm

perl-Crypt-SSLeay-0.51-4.rh.el.um.1.i386.rpm

perl-Digest-HMAC-1.01-13.noarch.rpm

perl-Digest-SHA1-2.07-5.i386.rpm

perl-IO-Socket-SSL-0.96-1.rh.el.um.1.noarch.rpm

perl-ldap-0.3202-1.rh.el.um.1.noarch.rpm

perl-libnet-1.19-3.noarch.rpm

perl-Mail-IMAPClient-2.2.9-1.rh.el.um.1.noarch.rpm

perl-modules-5.8.5-3.i386.rpm

perl-Net-DNS-0.48-1.i386.rpm

perl-Net-SSLeay-1.25-3.2.el4.rf.i386.rpm

perl-Parse-RecDescent-1.94-1.rh.el.um.1.noarch.rpm

perl-XML-NamespaceSupport-1.08-1.rh.el.um.1.noarch.rpm

perl-XML-SAX-0.12-1.rh.el.um.1.noarch.rpm

这是几个重要的文件,一会儿做配置详解。还有就是大家有时间就把每个文档里的readme 看一下很有,全是英文又太多翻译的不准所以这里没有贴出来。

cp /usr/share/doc/heartbeat-2.0.4/ha.cf /etc/ha.d/

cp /usr/share/doc/heartbeat-2.0.4/haresources /etc/ha.d/

cp /usr/share/doc/hearthbeat-2.0.4/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.0.4/ldirectord.cf /etc/ha.d/



三 配置文件详解

l Ip_forward开启路由(本试验在一个子网中,不需要这个功能)

l 配置hosts,

l 配置HA之间的认证机制

l 配置HA

l 配置HA的资源

l 配置IPVS调度

1. more /etc/hosts

192.168.0.25    director1

192.168.0.126   director2(备机)

192.168.0.127     serverA

192.168.0.128    serverB

192.168.0.129    serverC

192.168.0.100    www.aliang.com

所有主机hosts必须相同

2./etc/ha.d/authkeys (关于认证信息)

auth 3 #选的第几个号开头的就写几

#1 crc   

#2 sha1 HI!

3 md5 Hellocaixun! #选取的主要md5认证方式的。

认证文件,选取一种认证方式,这个文件的权限必须是600。

Director1 与director2的配置必须相同

3./etc/ha.d/haresources (资源配置文件)

这个文件指定同步的服务以及主机是什么。两台机器上的这个文件一定要一致。

例:direct1 IPaddr2:192.168.0.100/eth0   \

    ldirectord::ldirectord.cf LVSSyncDaemonSwap::master

    主机名 IP地址 高可用性服务启动脚本



4./etc/ha.d/ha.cf (主要配置文件)

logfile /var/log/ha-log     #日志存放路径

logfacility     local0    #说明:日志等级,取默认值

keepalive 2             #心跳间隔时间为2秒

deadtime 10            #指定等待声明主机死机的时间

#warntime 10           #写入日志的警报时间

initdead 60             #该参数指定heartbeat首次启动时deadtime应该为多久。因为当heartbeat在引导时启动时,还需要给网络启动留出时间,所以这个时间要设得长一些。

udpport 694            #该参数指定heartbeat发送UDP包时所使用的端口

#baud   19200         #该参数串口通讯的波特率

#serial /dev/ttyS0        #该参数指定在心跳线接在哪一个串口上。

#bcast   eth0 eth1       #广播地址

ucast eth0 192.168.0.126  #监听心跳服务器的IP为对方邻居IP

auto_failback on         #启动切换功能

use_logd yes            #后台运行日志

node    director1      #该参数告诉 heartbeat 使用哪些主机。节点名的正确性是非常重要的。节点名应与命令uname -n所显示的名称一致。

node    director2

####二台LVS配置必需相同 (只需修改ucast eth0 192.168.0.25)



5、/etc/ha.d/ ldirectord.cf

Ldirectord的作用是监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加

checktimeout=10       超时  

checkinterval=30       检测间隔

#fallback=127.0.0.1:80

autoreload=yes         realserver恢复时自动载入

logfile="/var/log/ldirectord.log"

#logfile="local0"

quiescent=yes   



# A sample virual with a fallback that will override the gobal setting

virtual=192.168.0.100:80

        real=192.168.0.127->192.168.0.129:80 gate

        fallback=127.0.0.1:80 gate

        service=http

        request="vip100.html"

        receive="vip100"

#       virtualhost=some.domain.com.au

        virtualhost=www.aliang.com

        scheduler=rr

#       persistent=600

        #netmask=255.255.255.255

        protocol=tcp



说明:

virtual=192.168.0.100:80设置虚拟IP地址和应用端口

real=192.168.0.127->192.168.0.129:80 gate设置真实服务器地址范围,直接路由模式

service=http真实服务器的检测服务类型

request="vip100.html"请求真实服务器的检测页面

receive="vip100"应该从检测页面返回的字符串,如果相同说明真实服务器功能正常

不同的VIP,其检测页面名不能相同。

virtualhost=www.aliang.com设置VIP对应的域名

scheduler=rr设置调度策略,rr为轮询,wrr,wlc wlc lblc lblcr dh sh sed nq

persistent=600会话保持时间,单位秒

#netmask=255.255.255.255客户端地址掩码, 默认255.255.255.255

protocol=tcp应用服务协议tcp



realserver端配置

l 配置启用loopback接口地址arp 不响应请求

l 配置vip100.html

四u  配置loopback接口地址arp不响应请求
编辑/etc/sysctl.conf, 添加:(真实服务器不响应VIP)

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

/etc/sysconfig/network-scripts/ifcfg-eth0:100

     

DEVICE=lo:100

IPADDR=192.168.0.100

NETMASK=255.255.255.255

# If you're having problems with gated making 127.0.0.0/8 a martian,

# you can change this to something else (255.255.255.255, for example)

ONBOOT=yes

NAME=loopback

配置多个vip,就配置多个回环网卡



配置/var/www/html/vip100.thml

内容:vip100



启动apache测试

Service httpd start,然后在页面上就可以看到vip100字样。







实验测试:

真实服务器serverA

serverA   touch /var/www/html/index.html

echo “this is serverA!!!” > /var/www/html/index.html



真实服务器serverB

touch /var/www/html/index.html

echo “this is serverB!!” > /var/www/html/index.html



真实服务器serverC

touch /var/www/html/index.html

echo “this is serverC!!” > /var/www/html/index.html
测试结果,当访问http://192.168.0.100/时,刷新页面会出现 this is serverA  /this is serveB /this is serverC 内容跳转

论坛徽章:
0
15 [报告]
发表于 2007-12-30 18:44 |只看该作者
send = "GET / HTTP/1.0rnrn"

这里的问题。

[ 本帖最后由 jiecho 于 2007-12-30 18:48 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2008-09-12 16:37 |只看该作者
  

这个就是红帽子公司做的东西 “很傻 但是很天真”
做的东西是不错 很傻瓜化 可是有时候犯些很天真的错误


楼上兄弟已经指出问题了 我当时也遇到这个问题 呵呵

大概是楼主在“VIRTUAL SERVERS ” 下的 “MONITORING SCRIPTS”
点了一下那个“ACCEPT" 吧 这一点不要紧
配置文件直接从
“GET / HTTP/1.0\r\n\r\n ”
变为
“GET / HTTP/1.0rnrn”


结果就如楼主遇到的状况那样了

论坛徽章:
0
17 [报告]
发表于 2008-09-16 08:52 |只看该作者

回复 #15 jiecho 的帖子

目前就是这个问题,pulse默认带有检测功能,这个默认的脚本对于web服务是很有效果的。还是要注意一下你的squid上的配置信息。
从下面的信息
Jun 11 15:39:03 lvs nanny[3834]: READ to 192.168.22.199:80 timed out
Jun 11 15:39:03 lvs nanny[3835]: READ to 192.168.22.238:80 timed out
Jun 11 15:39:15 lvs nanny[3834]: READ to 192.168.22.199:80 timed out
Jun 11 15:39:15 lvs nanny[3835]: READ to 192.168.22.238:80 timed out
Jun 11 15:39:27 lvs nanny[3835]: READ to 192.168.22.238:80 timed out
Jun 11 15:39:27 lvs nanny[3834]: READ to 192.168.22.199:80 timed out
Jun 11 15:39:39 lvs nanny[3835]: READ to 192.168.22.238:80 timed out
Jun 11 15:39:39 lvs nanny[3834]: READ to 192.168.22.199:80 timed out
Jun 11 15:39:51 lvs nanny[3835]: READ to 192.168.22.238:80 timed out
Jun 11 15:39:51 lvs nanny[3834]: READ to 192.168.22.199:80 timed out
这个就是默认的pulse的检测进程 nanny的报错,这个基本上就是检测失败。

[ 本帖最后由 kns1024wh 于 2008-9-16 08:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP