免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1849 | 回复: 0

linux lvs负载均衡集群 [复制链接]

论坛徽章:
0
发表于 2011-12-20 09:45 |显示全部楼层
<DIV>
<DIV style="FONT-SIZE: 14px" id=BlogArticleDetail>
<P>最近整理的LVS资源的整理,还没有进行实验,相关内容还需要补充与验证。</P>
<P><STRONG>29.1 LVS概述</STRONG><BR>LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。<BR>集群技术主要分为三大类:<BR>高可用性(High Available Cluster)&nbsp; 例:Linux-HA、KeepAlived、Ultramonkey<BR>负载均衡(Load balancing Cluster)例:LVS、Haproxy、Ultramonkey-L7、L7SW<BR>高性能计算(High Performance Computing)</P>
<P><STRONG>29.2 LVS体系结构<BR>29.2.1 IP负载均衡层</STRONG><BR>负载均衡层位于整个集群系统的最前端,是整个lvs的核心。有一台或者多台负载调度器(Director Server)组成,而Director的主要作用类似于一个路由器,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。<BR><STRONG>29.2.2 服务器群组层(Server Array)</STRONG><BR>服务器群组层由一组实际运行应用服务的机器组成,RealServer可以是web服务器,Mail服务器,FTP服务器,DNS服务器等服务器中的一个或者多个,每个RealServer之间通过高速的LAN或分布在各地的wan相连接。在实际的应用中,DirectorServer也可以同时兼任RealServer的角色。<BR><STRONG>29.2.3 共享存储层(Shared Storage)</STRONG><BR>是为了所有RealServer提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘陈列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Redhat的GFS文件系统。</P>
<P><STRONG>29.3 LVS体系结构与调度算法</STRONG><BR>LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,将一组服务器构成一个高性能的,高可用性的虚拟服务器(VS),IPVS实现负载均衡机制有三种,分别是VS/NAT、VS/TUN和VS/DR。<BR><STRONG>29.3.1 VS/NAT</STRONG><BR>当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的RealServer地址,同时报文的目标端口也改成选定的RealServer的相应的端口,最后将报文请求发送到选定的RealServer。在服务器端得到数据后,RealServer返回数据组用户时,需要再次经过调度器将报文的源地址和源端口改成虚拟IP地址和相应的端口,然后把数据发送给用户,完成整个负载调度过程。<BR><STRONG>29.3.2 VS/TUN</STRONG><BR>即IP隧道技术,它的连接调度和管理与NAT方式一样,只是它的报文转发方式不同,TUN方式中,调度器采用IP隧道技术将用户请求转发到某个RealServer,而这个RealServer将直接响应用户的请求,不再经过前端调度器,此外,对RealServer的地域位置没有要求,可以和DirectorServer位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。<BR><STRONG>29.3.3 VS/DR</STRONG><BR>直接路由技术,它的连接调度和管理与NAT和TUN中的一样,但它的服文转发方法又有不同,DR通过改写请求报文的MAC地址,将请求发送到RealServer,而RealServer将响应直接返回给客户,免去了TUN模式中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求DirectorServer与RealServer都有一块网卡连在同一物理网段上。<BR><STRONG>29.3.4 调度算法</STRONG><BR><STRONG>1.rr轮叫(Round Robin)</STRONG><BR>调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。<BR><STRONG>2.wrr 加权轮叫(Weighted Round Robin)</STRONG><BR>调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。<BR><STRONG>3.lc 最少链接(Least Connections)</STRONG><BR>调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。<BR><STRONG>4.wlc 加权最少链接(Weighted Least Connections)</STRONG><BR>在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。<BR><STRONG>5.lblc 基于局部性的最少链接(Locality-Based Least Connections)</STRONG><BR>" 基于局部性的最少链接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。<BR><STRONG>6.lblcr 带复制的基于局部性最少链接</STRONG><BR>" 带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。<BR><STRONG>7.dh 目标地址散列(Destination Hashing)</STRONG><BR>"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。<BR><STRONG>8.sh 源地址散列(Source Hashing)</STRONG><BR>"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。</P>
<P><STRONG>29.4基于VS集群架构 <BR>29.4.1 VS集群拓朴结构</STRONG><BR>Lvs集群拓朴结构如下:<BR>&nbsp;<A href="http://img.bimg.126.net/photo/f5QiJVOE_GaxmSWNXKjVkw==/3439061265451468005.jpg" target=_blank>&lt;IMG title="linux lvs负载均衡集群 - koumm - koumm的博客" alt="linux lvs负载均衡集群 - koumm - koumm的博客" src="http://img.bimg.126.net/photo/f5QiJVOE_GaxmSWNXKjVkw==/3439061265451468005.jpg" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=700){this.width=700;this.height=image.height*700/image.width;}}"&gt;</A><BR>说明:<BR>DR负责IP负载均衡的调度,提供备份服务器,为了就是当一台坏掉了之后,由另一台马上接替任务。<BR>实际的工作的数据提供由RealServer来提供,如果有其它数据的应用的话,后面还应该有共享磁盘或数据库服务器。<BR><STRONG>29.4.2集群软件安装<BR>1、DR软件列表</STRONG><BR>ipvsadm 可以安装tar包以及rpm包。<BR>libnet.tar.gz<BR>heartbeat-2.1.4 用于高可性的集群环境中。</P>
<P><STRONG>2、ip_vs内核模块加载</STRONG><BR>2.6内核已经集成IPVS内核补丁。用lsmod |grep ip_vs看看ip_vs模块是否加载到内核,若没有,运行modprobe ip_vs 把ip_vs模块加载到内核。<BR>[root@redhat /]# lsmod |grep ip_vs<BR>ip_vs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 77569&nbsp; 0</P>
<P><STRONG>3.libnet软件的安装</STRONG><BR>安装heatbeat前必须先安装libnet包,libnet提供了一些高层的api,让应用程序开发者可以修改网络包。<BR>#tar zxvf libnet.tar.gz<BR>#cd libnet<BR>#./configure<BR>#make<BR>#make install</P>
<P><STRONG>29.5配置VS/DR集群<BR>29.5.1 VS/DR集群环境</STRONG><BR>环境与拓朴结构如下:<BR>&nbsp;<A href="http://img.bimg.126.net/photo/5j6byZ_0v--w9Fq2vU1g8A==/3671841071191318249.jpg" target=_blank>&lt;IMG title="linux lvs负载均衡集群 - koumm - koumm的博客" alt="linux lvs负载均衡集群 - koumm - koumm的博客" src="http://img.bimg.126.net/photo/5j6byZ_0v--w9Fq2vU1g8A==/3671841071191318249.jpg" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=700){this.width=700;this.height=image.height*700/image.width;}}"&gt;</A></P>
<P><STRONG>29.5.2 DirectorServer配置</STRONG> <BR>说明:如果DR只是采用一台服务器来承担的话,只需要安装libnet与ipvsadm软件包,并可以实现相关功能。<BR>ifconfig eth0:0 192.168.2.200 broadcast 192.168.2.200 netmask 255.255.255.255 up<BR>#添加一块虚拟IP地址<BR>route add -host 192.168.2.200 dev eth0:0&nbsp; /*虚拟IP路由*/<BR>ipvsadm -A -t 192.168.2.200 -s rr&nbsp; /*采用轮叫方式*/<BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.11 -g <BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.12 -g<BR>ipvsadm&nbsp; /*没有参数可以查看表中的内容*/<BR>ipvsadm save &gt;/etc/sysconfig/ipvsadm<BR>ipvsadm参数说明:<BR>-g 表示DR模式<BR>-A 表示添加虚拟服务<BR>-a 表示添加一条真正的服务器<BR>-C 清空表的内容</P>
<P><STRONG>29.5.3 RealServer配置与测试</STRONG><BR>ifconfig lo:0 192.168.2.200 broadcast 192.168.2.200 netmask 255.255.255.255 up<BR>route add -host 192.168.2.200 dev lo:0<BR>echo "1" &gt;/proc/sys/net/ipv4/conf/lo/arp_ignore<BR>echo "2" &gt;/proc/sys/net/ipv4/conf/lo/arp_announce<BR>echo "1" &gt;/proc/sys/net/ipv4/conf/all/arp_ignore<BR>echo "2" &gt;/proc/sys/net/ipv4/conf/all/arp_announce<BR>sysctl -p /*使配置立即生效*/</P>
<P>说明:<BR>RealServer只需要做以上内容就可以了,有多少台RealServer,上面的配置都是一样的。但是RealServer本身也是需要独立的上网条件,因为DR模式中,由RealServer参与客户机的直接响应。</P>
<P>测试方法:<BR>1.在两台RealServer上分别安装Web服务器,保证两台Web服务器中的内容不同。<BR>2.在客户机上输入虚拟服务器IP进行访问,刷新查看页面,看是否符合rr调度算法的特点。</P>
<P><STRONG>29.6配置VS/TUN集群<BR>29.6.1 VS/TUN集群环境</STRONG><BR>环境与拓朴结构如下:<BR>&nbsp;<A href="http://img.bimg.126.net/photo/5j6byZ_0v--w9Fq2vU1g8A==/3671841071191318249.jpg" target=_blank>&lt;IMG title="linux lvs负载均衡集群 - koumm - koumm的博客" alt="linux lvs负载均衡集群 - koumm - koumm的博客" src="http://img.bimg.126.net/photo/5j6byZ_0v--w9Fq2vU1g8A==/3671841071191318249.jpg" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=700){this.width=700;this.height=image.height*700/image.width;}}"&gt;</A></P>
<P><STRONG>29.6.2 DirectorServer配置</STRONG> <BR>ifconfig tunlo:0 192.168.2.200 broadcast 192.168.2.200 netmask 255.255.255.255 up<BR>#添加一块虚拟IP地址<BR>route add -host 192.168.2.200 dev tunlo:0&nbsp; /*虚拟IP路由*/<BR>ipvsadm -A -t 192.168.2.200 -s rr&nbsp; /*采用轮叫方式*/<BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.11 -i <BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.12 -i <BR>ipvsadm&nbsp; /*没有参数可以查看表中的内容*/<BR>ipvsadm save &gt;/etc/sysconfig/ipvsadm<BR>ipvsadm参数说明:<BR>-g 表示DR模式 -i 表示TUN模式 <BR>-A 表示添加虚拟服务<BR>-a 表示添加一条真正的服务器<BR>-C 清空表的内容<BR>说明:如果DR只是采用一台服务器来承担的话,只需要安装libnet与ipvsadm软件包,并可以实现相关功能。<BR><STRONG>29.6.3 RealServer配置与测试</STRONG><BR>ifconfig lo:0 192.168.2.200 broadcast 192.168.2.200 netmask 255.255.255.255 up<BR>route add -host 192.168.2.200 dev lo:0<BR>echo "1" &gt;/proc/sys/net/ipv4/conf/lo/arp_ignore<BR>echo "2" &gt;/proc/sys/net/ipv4/conf/lo/arp_announce<BR>echo "1" &gt;/proc/sys/net/ipv4/conf/all/arp_ignore<BR>echo "2" &gt;/proc/sys/net/ipv4/conf/all/arp_announce<BR>sysctl -p /*使配置立即生效*/</P>
<P>说明:<BR>RealServer只需要做以上内容就可以了,有多少台RealServer,上面的配置都是一样的。但是RealServer本身也是需要独立的上网条件,因为DR模式中,由RealServer参与客户机的直接响应。<BR>TUN模式DirectorServer的配置与DR模式需要修改虚拟IP接口地址,RealServer的配置是一模一样的。</P>
<P>测试方法:<BR>1.在两台RealServer上分别安装Web服务器,保证两台Web服务器中的内容不同。<BR>2.在客户机上输入虚拟服务器IP进行访问,刷新查看页面,看是否符合rr调度算法的特点。</P>
<P><STRONG>29.7配置LVS/heartbeat集群<BR>29.7.1 LVS/heartbeat集群环境</STRONG><BR><STRONG>1.环境与拓朴结构如下:<BR></STRONG>&nbsp;<A href="http://img.bimg.126.net/photo/aOxAFVgYm6pjHi5iyWyjuQ==/4571435096758651201.jpg" target=_blank>&lt;IMG title="linux lvs负载均衡集群 - koumm - koumm的博客" alt="linux lvs负载均衡集群 - koumm - koumm的博客" src="http://img.bimg.126.net/photo/aOxAFVgYm6pjHi5iyWyjuQ==/4571435096758651201.jpg" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=700){this.width=700;this.height=image.height*700/image.width;}}"&gt;</A></P>
<P>heartbeat是linux-ha项目,被许多高可用系统采用。本文也以lvs作为高可用服务来说明heartbeat的使用。Heartbeat的高版本可以负责3个及以上的节点。本文2个节点来说明,在你的两台机器(一台作为主节点,另一台为从节点)上运行heartbeat, 并配置好相关的选项,最重要的是lvs资源一定要配置进去。那么开始时主节点提供lvs服务,一旦主节点崩溃,那么从节点立即接管lvs服务。如果是自己开启了其它的服务资源,那么接管的时候,该服务资源相应的tcp连接必须重连,而且主从节点的应用层逻辑状态有应用层自己保证一致。Lvs不存在应用层的逻辑状态。</P>
<P><STRONG>2.Heartbeat软件安装:</STRONG><BR>Heartbeat也叫做心跳软件,用于两台DR之间的通信用的,可以实现两台电脑之间的切换,以防止发生故障时接替。<BR>注:在安装heartbeat的时候看有没有提示需要建立heartbeat用户与组如下:<BR>groupadd haclient<BR>useradd -g haclient hacluster<BR>以上内容可以在heartbeat安装说明中有提示。</P>
<P>#tar -zxvf heartbeat-2.0.2.tar.gz<BR>#cd heartbeat-2.0.2<BR>#./configureme configure<BR>#make<BR>#make install<BR>上述步骤完成后,heartbeat的运行程序文件为/etc/rc.d/heartbeat,并且出现/etc/ha.d目录,该目录也是heartbeat配置文件目录。</P>
<P><STRONG>3.拷贝配置文件</STRONG><BR>这里需要配置文件有四个:ha.cf、haresources、authkeys、ldirectord.cf这四个配置文件需要在/etc/ha.d目录下面,但是默认是没有这几个文件的,所以你要做以下操作。<BR>copy doc/ha.cf /etc/ha.d/<BR>copy doc/haresources /etc/ha.d/<BR>copy doc/authkeys /etc/ha.d/<BR>copy doc/ldirectord.cf /etc/ha.d/</P>
<P>说明:<BR>ha.cf是heartbeat的配置文件,为了实现DR失效之后的切换使用的。<BR>haresources是资源文件<BR>authkeys是用于主从节点间数据校验用的<BR>ldirectord.cf <BR>ldirectord的作用是监测RealServer,当RealServer失效时,把它从虚拟服务器列表中删除,恢复时重新添加到列表,在安装heartbeat时已经安装了ldirectord,所以说,ldirectord也是另一个级别上高可用性的一个应用。<BR>ldirectord的启动程序:/etc/init.d/ldirectord</P>
<P><STRONG>29.7.2 LVS/DR配置<BR>1.主DirectorServer配置</STRONG><BR>说明:如果DR只是采用一台服务器来承担的话,只需要安装libnet与ipvsadm软件包,并可以实现相关功能。<BR>ifconfig eth0:0 192.168.2.200 broadcast 192.168.2.200 netmask 255.255.255.255 up<BR>#添加一块虚拟IP地址<BR>route add -host 192.168.2.200 dev eth0:0&nbsp; /*虚拟IP路由*/<BR>ipvsadm -A -t 192.168.2.200 -s rr&nbsp; /*采用轮叫方式*/<BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.11 -g <BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.12 -g<BR>ipvsadm&nbsp; /*没有参数可以查看表中的内容*/<BR>ipvsadm save &gt;/etc/sysconfig/ipvsadm</P>
<P><STRONG>2.备份DirectorServer配置</STRONG><BR>说明:如果DR只是采用一台服务器来承担的话,只需要安装libnet与ipvsadm软件包,并可以实现相关功能。<BR>ifconfig eth0:0 192.168.2.200 broadcast 192.168.2.200 netmask 255.255.255.255 up<BR>#添加一块虚拟IP地址<BR>route add -host 192.168.2.200 dev eth0:0&nbsp; /*虚拟IP路由*/<BR>ipvsadm -A -t 192.168.2.200 -s rr&nbsp; /*采用轮叫方式*/<BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.11 -g <BR>ipvsadm -a -t 192.168.2.200:80 -r 192.168.2.12 -g<BR>ipvsadm&nbsp; /*没有参数可以查看表中的内容*/<BR>ipvsadm save &gt;/etc/sysconfig/ipvsadm</P>
<P><STRONG>3.DR配置的脚本方式</STRONG><BR>vi /etc/config_vs.sh<BR>#!/bin/bash<BR>#定义变量<BR>VIP=192.168.2.200 #DR的虚拟服务IP<BR>DIP=192.168.2.10&nbsp; #DR的eth0真实地址<BR>RS1=192.168.2.11&nbsp; #real server1的真实地址<BR>RS2=192.168.2.12&nbsp; #real server2的真实地址<BR>GW=192.168.2.1&nbsp;&nbsp;&nbsp; #DR使用的网关或路由的地址<BR>SERVICE=80 #你的服务端口</P>
<P>#配置虚拟服务IP<BR>/sbin/ifconfig eth0:0 ${VIP} broadcast ${VIP} netmask 255.255.255.255 up<BR>/sbin/route add -host ${VIP} dev eth0:0 #添加虚拟IP的路由<BR>/sbin/route add default gw ${GW}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #添加本地路由<BR>/sbin/ifconfig eth0:0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #脚本调试信息, 显示虚拟IP配置<BR>#/bin/ping -b ${VIP}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #脚本调试信息, 看看虚拟IP是否可以ping通<BR>/sbin/route -n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #脚本调试信息,显示路由信息<BR>/sbin/ipvsadm –C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #清除虚拟服务器表,也就是清除IPVS的原配置<BR>/sbin/ipvsadm -A -t ${VIP}:${SERVICE} -s rr<BR>#这里语句个数随real server的个数而定<BR>/sbin/ipvsadm -a -t ${VIP}:${SERVICE} -r ${RS1} -g <BR>/sbin/ipvsadm -a -t ${VIP}:${SERVICE} -r ${RS2} -g<BR>ping -c 1 ${RS1} #脚本调试信息<BR>ping -c 1 ${RS2} #脚本调试信息<BR>/sbin/ipvsadm #脚本调试信息<BR>#end of config_vs.sh</P>
<P><STRONG>29.7.3 LVS/heartbeat配置</STRONG><BR>说明:DR的配置,两台电脑的配置应一样。<BR><STRONG>1.Authkeys配置</STRONG><BR>chmod 0600 /etc/ha.d/authkeys<BR>vi /etc/ha.d/authkeys<BR>#去掉以下内容的注释,修改成以下内容。<BR>auth 3<BR>#1 crc<BR>#2 shal hi!<BR>3 md5 hello!</P>
<P><STRONG>2.haresources资源文件的配置</STRONG><BR>这个文件配置的是节点要管理的资源,这些资源在主节点down调时候,从节点就会开启这些资源,也就是启动一个脚本,使用这台电脑成为一个DR。<BR>所以应把上面DR的配置创建成一个Shell脚本如下:<BR>vi /etc/ha.d/haresources<BR>#node1 10.0.0.170 Filesystem::/dev/sda1::/data1::ext2<BR>这一项,去掉#号,根据格式配置你的资源。第一字段(Node1):主节点名称(必须uname –n的保持一致);第二字段(10.0.0.170):对外虚拟服务IP;第三字段(Filesystem::/dev/sda1::/data1::ext2):Filesystem表示资源名称,/dev/sda1表示资源启动时的第一个参数,/data1表示第二个参数,/ext2表示第三个参数,依此类推。我们的lvs的配置如下所示:</P>
<P>server 192.168.2.200 config_vs.sh</P>
<P>server是主节点的名称。192.168.2.200是对外服务的虚拟IP,也是lvs对外服务的虚拟IP。<BR>config_vs.sh是资源名称,因为这个就是DR的配置文件脚本,只要执行过这个脚本那么机器就变成DR了。<BR>bakserver上就是把server改成bakserver就可以了。</P>
<P><STRONG>3.ha.cf文件的配置</STRONG><BR>ha.cf是心跑软件的配置文件,为了保证DirectorServer的可以靠性配置的。<BR>vi /etc/ha.d/ha.cf<BR>debugfile /var/log/ha-debug<BR>logfile /var/log/ha-log&nbsp; #默认值<BR>logfacility local0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #日志等级,取默认值<BR>keepalive 1&nbsp;&nbsp;&nbsp; #心跳频率 1:表示1秒;200ms:表示200毫秒<BR>deadtime 10&nbsp;&nbsp;&nbsp; #节点死亡时间阀值10<BR>warntime 5&nbsp;&nbsp;&nbsp;&nbsp; #警告时间,自己设定<BR>udpport 28855&nbsp; #心跳信息传递的udp端口,自己设定<BR>#bcast eth0&nbsp;&nbsp;&nbsp; # Linux<BR>#说明:采用udp广播播来通知心跳,建议在副节点不只一台时使用<BR>ucast eth0 192.168.2.13 #采用网卡eth0的udp单播来通知心跳<BR>#mcast eth0 225.0.0.1 694 1 0<BR>#说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用<BR>auto_failback off&nbsp; #主节点恢复后,是否自动切回<BR>node server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #主节点名称,与uname -n保持一致。<BR>node bakserver&nbsp;&nbsp;&nbsp;&nbsp; #副节点名称,保持顺序<BR>watchdog /dev/watchdog<BR>#说明:看门狗。如果本节点在超过一分钟后还没有发出心跳,本节点自动重启。<BR>#下面这些是可选项。<BR>#stonith baytech /etc/ha.d/conf/stonith.baytech<BR>#说明:主/副等所有节点的一种校验。<BR>#respawn userid /path/name/to/run 和heartbeat必须一起启动的本地服务<BR>#ping 10.10.10.254<BR>说明:伪节点IP,伪节点就是其失效时主/副节点不会正常工作但本身不是主/副节点之一。<BR>respawn hacluster /usr/lib/heartbeat/ipfail<BR>说明:与ping选项一起使用,取默认值。<BR>#baud 19200&nbsp; 串口波特率,与serial一起使用。<BR>#serial /dev/ttyS0 # Linux</P>
<P><STRONG>4.测试</STRONG><BR>分别启动两台节点heartbeat<BR>/etc/init.d/heartbeat start<BR><STRONG>29.7.4 LVS/ldirectord配置</STRONG><BR>Ldirectord的作用是监测RealServer,当RealServer失效时,把它从节点列表中删除,恢复时重新添加。在安装heartbeat时,就已经安装了ldirectord。<BR>vi /etc/ha.d/ldirectord.cf<BR>#Global Directives&nbsp; <BR>checktimeout=20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #判断RealServer出错时间间隔<BR>checkinterval=10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定ldirectord在两次检查之间的间隔时间<BR>fallback=127.0.0.1:80&nbsp; #当所有RealServer节点不工作时,web服务的地址<BR>autoreload=yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #是否自动重载配置文件,设为yes时,配置文件发生变化,自动载入。<BR>logfile="/var/log/ldirectord.log" #设定ldirectord日志输出文件路径<BR>quiescent=yes <BR>#选择yes,一台真实服务器down以后,并不是把它从lvs列表中删除,而是把权限设为0,新的连接不可用。<BR>virtual=192.168.2.200:80&nbsp; #指定虚拟的IP地址和端口,注意在virtual行后面的行必须缩进4个空格或TAB标记。<BR>real=192.168.2.11 gate&nbsp;&nbsp;&nbsp; <BR>#指定RealServer地址和端口,同时设定LVS工作模式,用gate表示DR模式,ipip表示TUN模式,masq表示NAT模式。<BR>real=192.168.2.12 gate&nbsp;&nbsp;&nbsp; <BR>fallback=127.0.0.1:80 gate<BR>service=http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定服务器类型,对http服务做负载均衡<BR>request="test.html"&nbsp;&nbsp; <BR>#ldirectord将根据指定的RealServer地址,结合该选项给出的请求路径,发送访问请求,检查RealServer上的服务是否正常运行。确保这里给出的页面是可访问的。不然的话,会误认为此节点失效。<BR>#可以通过/usr/sbin/ldirectord -d /etc/ha.d/ldirectord.cf start<BR>receive="test page"&nbsp;&nbsp; #指定请求和应答字符串<BR>virtualhost=192.168.2.200&nbsp; #虚拟服务器的ip<BR>scheduler=rr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定调度算法rr<BR>persistent=600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定持续服务时间,对动态应用需要设置的参数<BR>protocol=tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定协议类型lvs支持tcp/udp<BR>checktype=negotiate&nbsp; #ldirectord检测类型,默认协商。<BR>checkport=80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定监控的端口号</P>
<P>Director Server服务的启动<BR>/etc/init.d/ldirectord start<BR><STRONG>29.7.5 RealServer配置</STRONG><BR>在LVS的DR和TUN模式下,用户的请求到达真实服务器后,是直接返回给用户的,而不再经过前端的DirectorServer,因此,就需要在每个RealServer节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。增加VIP地址的操作可以通过创建脚本的方式来实现。<BR>#!/bin/bash<BR>vip=192.168.2.200<BR>/sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up<BR>/sbin/route add -host $vip dev lo:0<BR>echo "1" &gt;/proc/sys/net/ipv4/conf/lo/arp_ignore<BR>echo "2" &gt;/proc/sys/net/ipv4/conf/lo/arp_announce<BR>echo "1" &gt;/proc/sys/net/ipv4/conf/all/arp_ignore<BR>echo "2" &gt;/proc/sys/net/ipv4/conf/all/arp_announce<BR>sysctl -p<BR>#end<BR><STRONG>29.7.6 测试LVS负载均衡<BR>1.负载均衡功能测试</STRONG><BR>启动/etc/init.d/ldirectord start<BR>此时可以查看ldirectord输出日志信息。</P>
<P><STRONG>2.ipvsadm -L</STRONG></P>
<P><STRONG>3.测试故障切换功能</STRONG><BR>这里假定停掉RealServer1节点的www服务,然后观察ldirectord的日志变化。</P></DIV></DIV>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时9.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP