标签:des blog http io ar os 使用 for on
LVS的三种包转发方式 LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由) 不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介始: 1、NAT(网络地址映射): NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包 有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。 2、IP Tunneling(IP隧道): director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接 IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点 real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信 并且所有服务器必须支持IP隧道协议。 3、Direct Routing(直接路由): 与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比 没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。 LVS的八种调度算法: * 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 Hashing) "源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。 配置ipvsadm服务 备注:以下步骤分别按照LVS的三种包转发方式进行配置 实验环境如下: lvsserver 192.168.1.49(eht0) vip: 192.168.1.40 8.8.8.8(nat模式下) serverA 192.168.1.46(eth0) serverB 192.168.1.47(eth0) 1、vs/nat模式下各服务器的配置 lvsserver配置如下: ifconfig eht0 192.168.1.49 netmsk 255.255.255.0 ifconfig eht1 8.8.8.8 netmask 255.255.255.0 (注:由于nat模式需要两块真实网卡,所以又额外加了一块网卡 ,此网卡的IP地址同时也是VIP的地址) vi ipvsadm.sh (创建脚本文件) ------------------------------------------------------------------------------------------------------------------------------------------------------------- #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward #(开启路由功能) ipvsadm -C #(清除之前的转换表) ipvsadm -At 8.8.8.8:80 -s rr #(指定带有调度算法转换的服务器) ipvsadm -at 8.8.8.8:80 -r 192.168.1.46:80 -m #(增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式) ipvsadm -at 8.8.8.8:80 -r 192.168.1.47:80 -m #chmod u+x ipvsadm.sh (增加可执行权限) ------------------------------------------------------------------------------------------------------------------------------------------------------------------ serverA配置如下: ifconfig eth0 192.168.1.46 netmask 255.255.255.0 route add default gw 192.168.1.49 (注:此网关是lvsserver的eth0的IP地址) service httpd start (开启测试用的web服务) echo ‘192.168.1.46‘ > /var/www/html/index.html (制作测试用的html网页) ------------------------------------------------------------------------------------------------------------------------------------------------------------------- serverB配置如下: ifconfig eth0 192.168.1.47 netmask 255.255.255.0 route add default gw 192.168.1.49 (注:此网关是lvsserver的eth0的IP地址) service httpd start (开启测试用的web服务器 echo ‘192.168.1.47‘ > /var/www/html/index.html (制作测试用的html网页) -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2、vs/tun模式下各服务器的配置 lvsserver配置如下: ifconfig eht0 192.168.1.49 netmsk 255.255.255.0 (注:tun 模式下只需要一块物理网卡,可将eth1网卡禁用) ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up (注:tunlo接口配置的地址为vip地址) route add -host 192.168.1.40 dev tunlo vi ipvsadm.sh (创建脚本文件) ------------------------------------------------------------------------------------------------------------------------------------------------------------------- #!/bin/bash ipvsadm -C #(清除之前的转换表) ipvsadm -At 192.168.1.40:80 -s rr #(指定带有调度算法转换的服务器) ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -i #(增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式) ipvsadm -at 192.168.1.40:80 -r 192.168.1.47:80 -i #chmod u+x ipvsadm.sh (增加可执行权限) #./ipvsadm.sh ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- serverA配置如下: ifconfig eth0 192.168.1.46 netmask 255.255.255.0 ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up route add -host 192.168.1.40 dev tunlo vi arp.sh (创建脚本文件) #!/bin/bash echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- serverB配置同severA一样 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3、vs/dr模式下各服务器的配置 lvsserver配置如下: ifconfig eht0 192.168.1.49 netmsk 255.255.255.0 (注:dr 模式下只需要一块物理网卡,可将eth1网卡禁用) ifconfig eth0:0 192.168.1.40 netmask 255.255.255.255 up (注:eth0:0接口配置的地址为vip地址) route add -host 192.168.1.40 dev eth0:0 vi ipvsadm.sh (创建脚本文件) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward #(开启路由功能) ipvsadm -C #(清除之前的转换表) ipvsadm -At 192.168.1.40:80 -s rr #(指定带有调度算法转换的服务器) ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -g #(增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式) ipvsadm -at 192.168.1.40:80 -r 192.168.1.47:80 -g #chmod u+x ipvsadm.sh (增加可执行权限) ./ipvsadm.sh ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- serverA配置如下: ifconfig eth0 192.168.1.46 netmask 255.255.255.0 ifconfig lo:0 192.168.1.40 netmask 255.255.255.255 up (在lo接口上增加vip地址) route add -host 192.168.1.40 dev lo:0 (增加到环回接口的路由) vi arp.sh (创建脚本文件) #!/bin/bash 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 #chmod u+x arp.sh (增加可执行权限) #./arp.sh ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- serverB配置和serverA一样 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 测试:1、显示LVS 目前的连接 如:ipvsadm -L -c ipvsadm -L --stats 2、将46和47的WEB服务启用。直接输入vip的地址不停的刷新你将会看到不同页面的切换 IPVSADM 服务配置 ipvsadm配置 #cat > /etc/sysconfig/ipvsadm 输入内容如下: ipvsadm -A -t 172.16.4.200:80 -s rr ipvsadm -a -t 172.16.4.200:80 -r 172.16.4.188:80 -m ipvsadm -a -t 172.16.4.200:80 -r 172.16.4.198:80 -m 注意:service ipvsadm start服务启动的时候会读取/etc/sysconfig/ipvsadm里面的内容,并且逐行执行,使用vi编辑/etc/sysconfig/ipvsadm的时候会出现字符编码的问题执行不了,建议用cat编辑。 172.16.4.200为虚拟IP地址,172.16.4.188和172.16.4.198为真实IP地址。 保存退出,测试: #ipvsadm-restore < /etc/sysconfig/ipvsadm #ipvsadm -L 参数介绍: arp_announce 0 可以在任意接口向外发送所有IP的免费ARP 1 尽量避免发送所在接口之外IP的免费ARP 2 只向外发送所在接口的IP的免费ARP arp_ignore 0 可以响应所有配置的IP的ARP报文 1 只响应从入接口IP的ARP报文 8 不响应任何ARP请求
标签:des blog http io ar os 使用 for on
原文地址:http://www.cnblogs.com/ssc4469/p/4156871.html