LVS安装配置与错误分析.docx_第1页
LVS安装配置与错误分析.docx_第2页
LVS安装配置与错误分析.docx_第3页
LVS安装配置与错误分析.docx_第4页
LVS安装配置与错误分析.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LVS 安装配置与错误分析 一背景描述某大型商业网站由于业务量的发展非常迅速,目前的网站架构根本无法缓解用户访问压力及单点故障。急需一套高可用的负载均衡集群解决方案www.linux .com(IT运维专家网)根据这家商业网站在的状况,部署了一套负载均衡及高可用的集群方案及相关优化,项目实施以后该商业网站得WEB压力得到了很好的解决,访问速度大幅度提升二、需求分析及参考网页1>用户可以访问HTTP:/VIP 去访问WEB1 网站,或访问WEB2 的网站。WEB1与WEB2 构成负载均衡即,当WEB1 宕机仍然可以访问 WEB2网站。2>要求更高的可用性,即当MASTER宕机时 BACKUP也可作为取代MASTER的位置位置主服务器3>图形日志网页分析监控/archives/515.html/ipvsadm-heartbeat-ldirecrtord//p-48664611.html/thread-1535-1-1.html/high_availability_loadbalanced_apache_cluster_p4/8/2008/10/04/1280982.shtml/viewthread.php?tid=1164/s/blog_65d209980100hlnu.html/author/admin/page/12/三拓扑结构:本实验是建立 一个4层服务器。一个2台WEB 服务器。2台 集群服务器,再加一台客户端MASTER 与BACKUP 的ETH1作为心跳网卡。四、安装配置Ipvsadm 安装tar zxf ipvsadm-1.24.tar.gz cd ipvsadm-1.24/ make make install编译安装libnettar zxf libnet-.tar.gz cd libnet ./configure make make install编译安装mailtoolstar zxf MailTools-2.04.tar.gz cd MailTools-2.04 perl Makefile.PL make make test make install编译安装heartbeat和ldirecrtord,他两在一起tar jxf Heartbeat-Stats*.1.2.4.tar.gz./ConfigureMe configure make make install在MASTER与BACKUP 、REALSERVER 修改Vim /etc/sysctl.con在MASTER 和 BACKUP修改vim /etc/hostsvi ha.cfdebugfile /var/log/ha-debug logfile /var/log/ha-log 日志文件的路径 logfacility local0 keepalive 2 心跳检测的平率为2秒一次 deadtime 30 如果30秒内没有相应心跳就做切换 warntime 10 指明心跳的延时为10秒做警告记录一条日志,没有其他动作 initdead 120 这个值设置成deadtime的两倍就可以了 udpport 694 数据通信的端口 bcast eth1 eth1为心跳工作接口 ucast eth1 检测对端心跳接口的地址 auto_failback on 当主节点回复后,自动切换 node MASTER 主控机计算机名 /主控机的在前面 node BACKUP 备用机计算机名 /备用机的在后面 ping 检测网络是否正常,可以设置成网关地址 respawn root /usr/lib/heartbeat/ipfail ipfail文件的路径 apiauth ipfail gid=root uid=root 启用ipfail进程的用户是rootvi haresourcesvi ipvs引用ipvs #!/bin/sh VIP= RIP1= RIP2=0 . /etc/rc.d/init.d/functions case $1 in start) echo start LVS # # set the Virtual IP Address /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 55 up # /sbin/route add -host $VIP dev eth0:1 /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g ; stop) echo close LVS Director /sbin/ipvsadm -C ; *) echo Usage: $0 start|stop exit 1 esacvi authkeys配置ldirecrtord.cfchecktimeout=3 检测超时 checkinterval=1 检测间隔 autoreload=yes 从新载入客户机 logfile=/var/log/ldirectord.log 日志路径 logfile=local0 quiescent=no virtual=:80 VIP地址监听80端口 real=:80 gate 真机IP地址和端口 路由模式 real=0:80 gate fallback=:80 gate service=http 服务是http request=test.html 这个文件一定要在real的web目录中存在,并且能够正常访问的,ipvs通过它来判断客户端是否存活 receive=test 文件内容一定要有出现,否则无法检测到 REAL SERVER scheduler=rr protocol=tcp checktype=negotiate checkport=80real不需要安装任何软件,我这里从网上找了一个脚本效果还不错 vi /etc/rc.d/init.d/real.sh #!/bin/bash #description : start realserver VIP= /etc/rc.d/init.d/functions case $1 in start) echo start LVS of REALServer /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 55 up 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 ; stop) /sbin/ifconfig lo:0 down echo close LVS Directorserver 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 ; *) echo Usage: $0 start|stop exit 1 esac安装RRDTOOL 和LVS-RRD 源码包:配置如下:(1).开启LVS director 的apache,配置相关参数,注意端口一定不能为80,我这里修改为9160。指定DocumentRoot 为 /data/web (2).下载lvs_rrd软件。下载地址:lvs-rrd-v0.7.tar.gz(3).将lvs-rrd-v0.7.tar.gz解压后将文件夹复制到/data/web/目录下并更名为lvs (4).配置lvs.rrd.update文件 RRDTOOL=/usr/bin/rrdtool IPVSADM=/sbin/ipvsadm WORKDIR=/data/web/lvs配置graph-lvs.sh WORKDIR=/data/web/lvs RRDTOOL=/usr/bin/rrdtool GRAPHS=$WORKDIR/graphs WEBPATH=/lvs/graphs这两个文件根据自己的情况设置一下就可以了。(5). 将/data/web/lvs/graphs目录修改为apache可读可写。 # chown apache.apache /data/web/lvs/graphs -R (6).将收集信息的脚本添加到计划任务中 # crontab -e * * * * * /data/web/lvs/lvs.rrd.update 2> /dev/null > /dev/null(7).等1分钟后,看lvs目录中是否生成了以rrd为扩展名的文件。如果有的话就可以启动apache通过http:/ipaddress:9160/lvs/查看lvs的状态了。如下图:五错误的分析libipvs.c: In function ipvs_strerror: libipvs.c:357: error: ipvs_get_service undeclared (first use in this function) make1: * libipvs.o Error 1 make1: Leaving directory /usr/local/src/software/ipvsadm-1.24/libipvs make: * libs Error 2在编译之前漏了做一个符号链接:因为编译时要用kernel-source,而Makefile文件设置到kernel-source路径是/usr/src/linuxln -s /usr/src/kernels/2.6.18-92.el5-i686/ /usr/src/linuxresolving-way:ln -s /usr/src/kernels/2.6.18-92.el5-i686/ /usr/src/linuxmake&make installonfigure: error: Core development headers were not foundSee config.log for more details./bootstrap exiting due to error (sorry!).安装 Cluster Glue 1.0.5: glue-1.0.5.tar.bz2eartbeat: udpport setting must precede media statementsheartbeat25960: 2008/02/29_18:20:31 ERROR: Invalid user id name hacluster heartbeat25960: 2008/02/29_18:20:31 ERROR: Bad uid list hacluster heartbeat25960: 2008/02/29_18:20:31 ERROR: Invalid apiauth directive ipfail uid=hacluster heartbeat25960: 2008/02/29_18:20:31 info: Syntax: apiauth client uid=uidlist gid=gidlist heartbeat25960: 2008/02/29_18:20:31 info: Where uidlist is a comma-separated list of uids, heartbeat25960: 2008/02/29_18:20:31 info: and gidlist is a comma-separated list of gids heartbeat25960: 2008/02/29_18:20:31 info: One or the other must be specified. heartbeat25960: 2008/02/29_18:20:31 ERROR: Invalid user id name hacluster heartbeat25960: 2008/02/29_18:20:31 ERROR: Bad uid list hacluster heartbeat25960: 2008/02/29_18:20:31 ERROR: Invalid apiauth directive ccm uid=hacluster heartbeat25960: 2008/02/29_18:20:31 info: Syntax: apiauth client uid=uidlist gid=gidlist heartbeat25960: 2008/02/29_18:20:31 info: Where uidlist is a comma-separated list of uids, heartbeat25960: 2008/02/29_18:20:31 info: and gidlist is a comma-separated list of gids heartbeat25960: 2008/02/29_18:20:31 info: One or the other must be specified.另外启动heartbeat需要hacluster用户,并且属组是haclient,这个用户和组楼主都没有建立。rootweb1 # service heartbeat start 启动heartbeat服务 Starting High-Availability services: 2009/04/24_07:35:15 INFO: Resource is stopped FAILED heartbeat: udpport setting must precede media statementsheartbeat3908: 2009/04/24_07:35:16 ERROR: Bad permissions onkeyfile /etc/ha.d/authkeys, 600 recommended. heartbeat3908: 2009/04/24_07:35:16 ERROR: Authentication configuration error. heartbeat3908: 2009/04/24_07:35:16 ERROR: Configuration error, heartbeat not started.rootweb1 # chmod 600 /etc/ha.d/authkeys 此处需要修改下authkeys文件的权限为600chmod 600 /etc/ha.d/authkeys 此处需要修改下authkeys文件的权限为600有可能不会出错在libltdl.so.3Cp /usr/local/lib/libltdl.so.3 /usr/lib/> We upgraded ldirectord last week to heartbeat-ldirectord.x86_64 & gt; > 2.1.4-11.el5 from the Fedora EPEL repository. After the upgrade we & gt; started & gt; > seeing error messages like, & gt; > & gt; > Tue May 4 11:09:36 2010|www.228|3608 system(/sbin/ipvsadm -e -t & gt; > 28:80 -r 21:80 -m -w 20) failed: No child & gt; processes & gt; > Tue May 4 11:09:36 2010|www.228|3608 Restored real server: & gt; > 21:80 (28:80) (Weight set to 20)WARN: nodename ha uuid changed to ha2 ERROR: should_drop_message: attempted replay attack可能原因:ha和ha2的uuid改变引起,可能ha2是通过VMware克隆复制方式产生的或hostname设置在安装heartbeat之后解决方案:让uuid重新生成,可以先卸载heartbeat,删除/var/lib/heartbeat目录(uuid文件就在这个目录下,该目录在卸载时不被删除,需手动删除,如果不手动删除,重新安装还会使用原来uuid)如果weight查看E已经是0了,客户机访问会提示错误页面。解决办法:修改ldirectord.cf中quiescen ,值肯定是YES,再设置一条:echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn关闭RS失效后的连接或者vi /etc/sysctl.confexpire_nodest_conn = 1保存后sysctl p刷新生效。或者直接让uiescen值为no1、 当uiescen值为no:重启ldirectord进程,LVS的活动主机使用ipvsadm Ln查看策略表,已经没有E主机。只有F主机。客户机资源呈F主机的网页。EBUG2: Disabled server=76 DEBUG2: Running system(/sbin/ipvsadm -a -t 00:80 -r 75:80 -g -w 0) Running system(/sbin/ipvsadm -a -t 00:80 -r 75:80 -g -w 0) DEBUG2: Quiescent real server: 75:80 ( x 00:80) (Weight set to 0) Quiescent real server: 75:80 ( x 00:80) (Weight set to 0)在面的实例中ipvsadm用到的几个参数含义如下: -A 增加一个虚拟服务,该服务由协议、IP地址和端口号组成,例如: -A -t 10:80 (增加一格虚拟服务,其协议(-t表示tcp,-u表示udp)为TCP、IP为10、端口号为80。 -s 指定服务采用的算法,常用的算法参数如下: rr 轮叫(Round Robin) 调度器通过轮叫调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务 器,而不管服务器上实际的连接数和系统负载。 wrr 加权轮叫(Weighted Round Robin) 调度器通过加权轮叫调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。 lc 最少链接(Least Connections) 调度器通过最少连接调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以较好地均衡负载。 wlc 加权最少链接(Weighted Least Connections) 在集群系统中的服务器性能差异较大的情况下,调度器采用加权最少链接调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。 lblc 基于局部性的最少链接(Locality-Based Least Connections) 基于局部性的最少链接 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用最少链接的原则选出一个可用的服务 器,将请求发送到该服务器。 lblcr 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication) 带复制的基于局部性最少链接调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目 标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器 组,按最小连接原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按最小连接原则从这个集群中选出一台 服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程 度。 dh 目标地址散列(Destination Hashing) 目标地址散列调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。 sh 源地址散列(Source Hashin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论