收藏 分销(赏)

LVS高可用web负载均衡配置手册.docx

上传人:二*** 文档编号:4747854 上传时间:2024-10-11 格式:DOCX 页数:15 大小:154KB
下载 相关 举报
LVS高可用web负载均衡配置手册.docx_第1页
第1页 / 共15页
本文档共15页,全文阅读请下载到手机保存,查看更方便
资源描述
LVS高可用web负载均衡群集 Linux (适用操作系统:CentOS5) ———————————————————————— 完成人员: 李凯翔 完成日期: 2011-06-25 Qq; 17501444 Linuxtone ID: SharkShow Google talk: Net.SharkShow@ ———————————————————————— 黑色 加粗字体为命令.淡蓝 加粗是显示内容 红色 是注释 一. 实验要求 Lvs+heartbeat+ldirectory高可用性负载均衡. LVS的调度分配软件 = (ipvsadm) LVS的双机热备软件 = (heartbeat状态监控 ; 平滑冗余) LVS 的高可用性 = (heartbeat-ldirectord容错机制高可用) 二. 实验拓扑 三. 系统环境 操作系统:CentOs 5.5 (关闭selinux及iptables) 相关软件:lvsaadm 、heartbeat 、heartbeat-ldirectord、net-snmp、lm_sensors、perl模块 网络要求:所有服务器位于同一VLan,机器无特殊要求。 四. 地址规划 名称 角色 IP地址 LVS_A 活动调度器 VIP: 192.168.1.88/24 Eth0: 192.168.1.30/24 Eth1: 8.8.8.1/24 LVS_B 备份调度器 Eth0: 192.168.1.40/24 Eth1: 8.8.8.2/24 WEB_A 内容服务器 Eth0: 192.168.1.10 WEB_B 内容服务器 Eth0: 192.168.1.20 五. 安装软件 1. 更新yum源(将yum源替换成中国科大的yum源或mirrors的源) # cd /etc/yum.repos.d' # 进入yum源目录 # mv CentOS-Base.repo{,.bak} # 修改默认网络源的名字使其不生效 # wget http://docs.linuxtone.org/soft/lemp/CentOs-Base.repo # 下载中科大源 # wget # 下载mirrors-163源 # wget # 下载mirrors-sohu源 注意:三个源任选一个就好.我是使用163的 2. Yum安装ipvsadm / heartbeat / net-snmp ###############Yum############# # yum install ipvsadm # 安装LVS # yum install heartbeat* # 安装heartbeat时会自动解决依赖关系 # yum install net-snmp # 安装net-snmp 3. 安装heartbeat yum安装heartbeat会出现这个错误: 不用理他,在用yum安装一次 就处理好了 以下列出heartbeat所依赖的包名如果使用rpm方式安装可以参考|红色|是安装包|绿色|是依赖 在两台机器上都完成heartbeat的安装后进行查看 4. 两台机器查看heartbeat是否安装全 # rpm -qa | grep "heartbeat" # 查看安装包是否完整 5.网络配置 # Vim /etc/hosts #vi编辑本地解析文件 Cat >>/etc/hosts <<SHOW >192.168.1.30 LVS_A #添加LVS_A的解析 >192.168.1.40 LVS_B #添加LVS_B的解析 >SHOW /etc/hosts 内容如下图 实验过程中为了避免重启直接使用hostname命令修改主机名(立即生效,重启无效) # hostname LVS_A # hostname LVS_B #使用scp将文件传给LVS_B(简化操作).以下LVS脚本和WEB脚本都可使用scp。 一. 配置LVS 1. 配置LVS_A.sh # Vim LVS_A.sh #调度器LVS_A的 #!/bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 LVS_A=192.168.1.30 LVS_B=192.168.1.40 case "$1" in start) /sbin/ifconfig eth0 LVS_A /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev eth0:0 ipvsadm -A -t $VIP:80 -s rr #-A添加一个virtual服务器 -t TCP协议 -s算法 rr ipvsadm -a -t $VIP:80 -r $WEB_A:80 -g #-g (DR模式) -i (TUN模式) -m (NAT模式) ipvsadm -a -t $VIP:80 -r $WEB_B:80 -g ipvsadm-save > /etc/sysconfig/ipvsadm #保存设置命令.下次可以使用Service直接调用 echo "ipvsadm is start ok ..........................." ;; stop) /sbin/ipvsadm -C #清空ipvsadm群集设置 /sbin/route del $VIP #删除VIP路由 echo "ipvsadm is stop now ok ..........." ;; *) echo "Usage : $0 {start | stop}" esac ---------------------------------------------------------------------------------------------------------- # chmod +x LVS_A.sh #添加可执行权限 2. 配置LVS_B.sh # Vim LVS_B.sh #调度器LVS_B的 #!/bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 LVS_A=192.168.1.30 LVS_B=192.168.1.40 case "$1" in start) /sbin/ifconfig eth0 LVS_B /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev eth0:0 ipvsadm -A -t $VIP:80 -s rr #-A添加一个virtual服务器 -t TCP协议 -s算法 rr ipvsadm -a -t $VIP:80 -r $WEB_A:80 -g #-g (DR模式) -i (TUN模式) -m (NAT模式) ipvsadm -a -t $VIP:80 -r $WEB_B:80 -g ipvsadm-save > /etc/sysconfig/ipvsadm #保存设置命令.下次可以使用Service直接调用 echo "ipvsadm is start ok ..........................." ;; stop) /sbin/ipvsadm -C #清空ipvsadm群集设置 /sbin/route del $VIP #删除VIP路由 echo "ipvsadm is stop now ok ..........." ;; *) echo "Usage : $0 {start | stop}" esac ---------------------------------------------------------------------------------------------------------- # chmod +x LVS_B.sh #添加可执行权限 3. WEB_A 服务内容脚本 # Vim WEB_A.sh #!/bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 case "$1" in start) /sbin/ifconfig eth0 $WEB_A # eth0 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up #虚拟.VIP /sbin/route add -host $VIP dev lo:0 # VIP主机路由 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 #不响应arp请求 echo "WEB's LVS is start ok ........" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $VIP 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 "WEB's LVS is stop ok ........." ;; *) echo "Usage : $0 {start | stop}" ;; Esac # chmod +x WEB_A.sh 4. WEB_B 负载服务脚本 # vim WEB_B.sh #!/bin/bash VIP=192.168.1.88 WEB_A=192.168.1.10 WEB_B=192.168.1.20 case "$1" in start) /sbin/ifconfig eth0 $WEB_B #eth0 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up #虚拟IP /sbin/route add -host $VIP dev lo:0 #VIP主机路由 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 #不响应arp请求 echo "WEB's LVS is start ok ........" ;; stop) /sbin/ifconfig lo:0 down /sbin/route del $VIP 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 "WEB's LVS is stop ok ........." ;; *) echo "Usage : $0 {start | stop}" ;; esac # chmod +x WEB_B.sh #为脚本添加可执行权限 5. 查看测试LVS Lvs状态查看 查看LVS的连接情况: ipvsadm -L –n 查看LVS的吞吐量情况 ipvsadm -L -n –rate 查看LVS的统计信息: ipvsadm -L -n –stat 查看LVS的连接状态变化: watch ipvsadm ?ln. # ipvsadm –Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.88:80 rr -> 192.168.1.20:80 Route 1 0 0 -> 192.168.1.10:80 Route 1 0 0 二. 配置ldirectord 1.# vim /etc/ha.d/ldirectord.cf # cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/ 如果要通过ldirectord监控节点状态; 只需启动ldirectord,整个集群系统就可以运行起来,而无需执行上面配置的LVS_A脚本; 因为ldirectord配置文件决定.会自动调用ipvsadm创建LVS路由表. 配置选项含义如下 # vim ldirectord.cf checktimeout=3 #判定real server出错的时间间隔。 checkinterval=1 #指定ldirectord在两次检查之间的间隔时间。 fallback=127.0.0.1:80 #当所有的real server节点不能工作时,web服务重定向的地址(本机:80)。 autoreload=yes #是否自动重载配置文件,选yes时,配置文件发生变化,自动载入配置信息。 quiescent=yes #当选择no时,如果一个节点在checktimeout设置的时间周期内没有响应,ldirectord将会从LVS的路由表中直接移除real server,此时,将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为yes,当某个real server失效时,ldirectord将失效节点的权值设置为0,新的连接将不能到达,但是并不从LVS路由表中清除此节点,同时,连接跟踪记录和程序连接模板仍然保留在Director上 virtual=192.168.1.88:80 real=192.168.1.10:80 gate #指定虚拟的IP地址和端口号,注意,在virtual行后面的行必 须缩进4个空格或以一个tab字符进行标记。 real=192.168.1.20:80 gate #指定Real Server服务器地址和端口,同时设定LVS工作模式. #用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。 fallback=127.0.0.1:80 gate service=http #指定服务的类型,这里是对http服务做负载均衡。 request="index.html" #ldirectord将根据指定的Real Server地址,结合该选项给出 的请求路径,发送访问请求,检查Real Server上的服务是否正常运行,确保这里给出的页面地 址是可访问的,不然ldirectord会误认为此节点已经失效,发生错误监控现象。 receive="Test Page" #指定请求和应答字串。 scheduler=rr #指定调度算法,这里是rr(轮叫)算法。于上面呼应 protocol=tcp #指定协议的类型,LVS支持TCP和UDP协议。 checktype=negotiate #指定Ldirectord的检测类型,默认为negotiate。 checkport=80 #指定监控的端口号。 virtualhost=SharkS #虚拟服务器的名称,随便指定。 三. 配置heartbeat (主要就是配置三个文件:ha.cf 、haresources和authkeys) 1. # vim /etc/ha.d/ha.cf # vim /etc/ha.d/ha.cf 配置选项如下 debugfile /var/log/ha-debug #指定heartbeat调试日志文件存放的位置 logfile /var/log/ha-log #指定heartbeat运行系统日志存放的位置 logfacility local0 #日志记录等级 keepalive 2 #指定多久检测一次心跳heartbeat 本实验2秒 warntime 5 #连续多长时间联系不上开始警告提示 本实验5秒 deadtime 30 #等待声明主机死机的时间.30秒内没有心跳信号.切换服务 initdead #指定heartbeat首次启动时deadtime应该为多久.预留忽略时间 #bcast bond0 #只有两台机器的时候可以使用广播.本实验使用此方法 udpport 694 #使用upd 694检测心跳服务 #baud 19200 #串口通讯的波特率,本实验环境不需要,注释掉 #serial /dev/ttyS0 #主从如果是串口链接,需将此注释取消 #ucast eth1 8.8.8.2 #这里指定LVS_B的地址.在LVS_B上配置时需要改成LVS_A地址 auto_failback on #恢复正常后是否需要切换回来 node LVS_A #指定heartbeat使用那些主机.主机名于uname -n一致 node LVS_B #备用节点名称 ping 192.168.1.1 #只是用于检测节点的连通性,并不作为节点切换的真正依据 pwatchdog /dev/watchdog #看门狗。如果本节点1分钟后还没有发出心跳.那么本节点自动重启 respawn hacluster /usr/lib/heartbeat/ipfail #配置ip绑定和切换功能 apiauth ipfail gid=haclient uid=hacluster #控制ip切换时所使用的用户 注:如果主节点需要维护时,可先将其转移到备份服务器上使用如下命令 # /usr/lib/heartbeat/hb_standby (hb_standby命令把资源强迫到迁移到备份服务器) 如果主节点要切回来掌管服务: # /usr/lib/heartbeat/hb_takeover 2.# vim /etc/ha.d/authkeys # vim /etc/ha.d/authkeys 配置项如下.表示使用md5作为数字签名算法对心跳数据包加密 保存退出后必须调整此文件的权限为600只有root用户有权限 否则启动失败日志提示.权限安全问题 auth 3 3 md5 sharkshow # chmod 600 /etc/ha.d/authkeys #更改文件权限 3.# vim /etc/ha.d/haresources 配置项如下 LVS_A IPaddr::192.168.1.88/32 ldirectord::ldirectord.cf 这个配置的解释各文档种不一样我通过日志查看发现是这样的情况 LVS_A #是主节点名称. IPaddr #IPaddr是存在于/etc/ha.d/resource.d目录下脚本;也可以存在于/etc/init.d/下的 #而且得支持start和stop参数.因为主节点启用时会调用start.释放时会调用stop “::” 两个冒号代表的是空格 192.168.1.88/32 是IPaddr这个脚本调用的参数具体工作可以去看IPaddr这个脚本 在主服务器启用服务时查看系统日志里会如下的两行.很生动吧 # tail –f /var/log/ha-log info: Running /etc/ha.d/resource.d/IPaddr 192.168.1.88/32/ start info: Running /etc/ha.d/resource.d/ldirectord ldirectord.cf start 192.168.188/32 代表的是Ipaddr这个脚本调用的参数.那ldirectord.cf就不用我说了 ^ ^ 注意: 如果有多个脚本主节点启动的时候顺序是从左往右.释放的时候从右往左stop.要注意这个协调顺序 info: Running /etc/ha.d/resource.d/ldirectord ldirectord.cf stop info: Running /etc/ha.d/resource.d/IPaddr 192.168.1.88/32/ stop 四. scp文件到LVS_B;如果是单播.自行修改ha.cf中的关键字 # cd /etc/ha.d/ # scp ha.cf authkeys haresources ldirectord.cf root@192.168.1.40:/etc/ha.d/ #如果嫌麻烦而且为了统一ha.d目录的内容可以使用-r 参数把/etc/ha.d/目录都拷贝过去 本实验环境ha.cf的关键字是广播检测发送心跳.单播的时候ha.cf关键字的互指对方地址.写法如下: # scp –r /etc/ha.d/ root@192.168.1.40:/etc/ 五. 开启服务 # /etc/init.d/ldirectord start #高可用容错机制 # /etc/init.d/heartbeat start #心跳检测资源释放.平滑冗余 ---------------------------------------------------end--------------------------------------------------- 总结: heartbeat日志中记录的主机名都是小写 不知道这个有所谓没 所以建议做的时候将主机名换成小写.使用HTML5和CSS3构建基于webkit的Web Page/App 现在在ios/android上的web网站变的越来越多,智能机中ios和android系统的设备市场份额也是与日俱增,相信未来会是一个趋势,那么如何构建基于webkit的网站呢?这里有一篇文章介绍了如何用html5创建一个iphone的app,这是一个基于web的本地离线应用,相对于native应用来说基于web的应用开发和测试都非常快捷,基于webkit浏览器支持大部分的html5,也支持大部分的css3,而且开发语言也是大多数web工程师所熟悉的,最重要的一点是基于web的应用是完全跨平台的,不需要多平台的开发和测试。 开发基于webkit的web app/page时需要注意的有: HTML特性: <input type=”file” />在iphone上不work <a href=”13888888888″>Call Me</a>可以调用打电话应用 google maps, iTunes和youtube的链接会在iphone上打开相应的组件 app/web page设置: <link rel=”apple-touch-icon” href=”iphon_tetris_icon.png”/> 在设置书签的时候可以显示好看的图标 <meta name=”apple-mobile-web-app-capable” content=”yes” /> 离线应用的另一个技巧 <meta name=”apple-mobile-web-app-status-bar-style” content=”black” /> 隐藏状态栏 <link rel=”apple-touch-startup-image” href=”startup.png” /> 设置开始页面图片 <meta name=”viewport” content=”width=device-width, user-scalable=no” /> 指定mobile,并且不可缩放 <meta name=”viewport” content=”width=device-width, minimum-scale=1.0, maximum-scale=1.0″ /> 同上 CSS相关配置: @media screen and (max-device-width: 480px){ /* 小屏幕的css样式 */ } @media screen and (max-width: 320px){ /* 纵向的css样式 */ } @media screen and (max-width:480px){ /* 横向的css样式 */ } @media screen and (orientation: portrait){ /* iPad 纵向的css样式 */ } @media screen and (orientation:landscape){ /* iPad 横向的css样式 */ } display: -webkit-box; -webkit-box-orient:vertical/horizontal; -webkit-box-flex: value 水平垂直布局box rounded corner/text shadow/box shadow/rgba/font-face/transform/transition/animation/border-image/gradients/ 充分利用这些css3的特性做出丰富的UI 脚本特性: 可以选用开源的javascript库,如yui, jquery, mootools, dojo … 垂直的js库,如canvas游戏库有LimeJs, GameJs等,Mobile UI库如jquery mobile, sencha touch, iui等,以及其它各种库 隐藏标题栏 – addEventListener(“load”, function() { setTimeout(function (){ window.scrollTo(0,1);}, 0); }, false); webkitTransitionEnd/webkitAnimationStart/webkitAnimationIteration/webkitAnimationEnd transition/animation事件 localstorage/manifest 离线应用 模拟iphone的scroll效果,解决Mobile Safari下不支持position:fixed的问题:touch scroll, demo 调试: safari上可以设置user agent为iphone上的safari(preference->advaced->developer tool),还可以手动添加android的user agent{ Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 –Nexus } iphone的safari上有debug调试 关注Mobile性能问题,可以采用firebuglite等书签脚本来调试 文章的标题说的是web app/page,其实用html5和css3构建的app和page没啥区别,web page也很容易转换成native的app,通过phoneGap就可以了,phoneGap所做的就是在一个native的app内嵌入了一个类似chrome的浏览器,并且创建了一个桥接,从而直接去写web app就可以了,就像这个slide的标题写的一样“HTML5 is the Future of Mobile, PhoneGap Takes You There Today”,你的app可以在5个以上的平台上运行,使用的技术是你所熟悉的html/js/css,还等什么,赶快看看它的文档实践一下吧。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服