• LVS负载均衡


    LVS的负载均衡

    	1)负载均衡技术有很多实现方案:
    		有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法。
    		这些负载调度算法中,执行效率最高的是IP负载均衡技术。
    	2)LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:
    		安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。
    		这个虚拟IP一般称为LVS的VIP,即Virtual IP。
    		访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。
    	3)当用户的请求到达负载调度器后,调度器将请求发送到提供服务的Real Server节点,Real Server节点返回数据给用户,这是IPVS实现的重点技术。
    	4)IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR。
    

    LVS负载均衡机制

    	LVS的工作模式总结
    				VS/NAT 	VS/TUN 	VS/DR	vs/fullnat
    		Server 	any 	Tunneling	Non-arp device	
    		server network 	private 	LAN/WAN 	LAN	
    		server number 	low (10~20) 	High (100) 	High (100)	
    		server gateway 	load balancer 	own router 	Own router	
    		lvs-nat 与lvs-fullnat :请求和响应报文都经由Director
    			lvs-nat :RIP 的网关要指向DIP
    			lvs-fullnat :RIP 和DIP 未必在同一IP 网络,但要能通信
    		lvs-dr 与lvs-tun :请求报文要经由Director,但响应报文由RS直接发往Client
    			lvs-dr :通过封装新的MAC 首部实现,通过MAC 网络转发
    			lvs-tun :通过在原IP 报文外封装新IP头实现转发,支持远距离通信
    	
    	lvs-nat :修改请求报文的目标IP, 多目标IP的DNAT(目标地址转换)
    	lvs-dr :操纵封装新的MAC地址
    	lvs-tun :在原请求IP报文之外新加一个IP首部
    	lvs-fullnat :修改请求报文的源和目标IP
    

    lvs-nat 模式

    		修改请求报文的目标IP, 多目标IP的DNAT
    		VS/NAT: 即(Virtual Server via Network Address Translation)
    			也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。
    			在服务器端得到数据后,Real Server返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
    			可以看出,在NAT方式下,用户请求和响应报文都必须经过Director Server地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。
    		lvs-nat注意: 
    			本质是多目标IP的DNAT ,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
    			1)RIP 和DIP可以在也可以不在同一个IP网络,且应该使用私网地址,RS的网关要指向DIP
    			2)请求报文和响应报文都必须经由Director 转发,Director易于成为系统瓶颈
    			3)支持端口映射,可修改请求报文的目标PORT
    			4)VS 必须是Linux系统,RS可以是任意OS
    			5)nat工作模式的Director有两个ip是vip和dip,vip用户客户端通信提供服务,dip用于真实服务器通信。
    

    lvs-tun 模式

    		VS/TUN:即(Virtual Server via IP Tunneling) 
    			也就是IP隧道技术实现虚拟服务器,它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同。
    			VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器。
    			此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。
    			因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
    		
    		lvs-tun注意:
    			转发方式:
    				不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在源IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS ,RS直接响应给客户端(源IP是VIP ,目标IP是CIP)
    			1)DIP, VIP, RIP 都应该是公网地址
    			2)RS的网关不能也不可能指向DIP
    			3)请求报文要经由Director ,但响应不能经由Director
    			4)不支持端口映射
    			5)RS的OS须支持隧道功能
    		
    

    LVS-DR模式

    		操纵封装新的MAC地址
    		VS/DR:即(Virtual Server via Direct Routing) 
    			也就是用直接路由技术实现虚拟服务器,它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同。
    			VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。
    			这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
    			Direct Routing,直接路由,LVS 默认模式,应用最广泛, 通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC ,目标MAC是某挑选出的RS 的RIP所在接口的MAC地址,源IP/PORT和目标IP/PORT均保持不变。
    		
    		lvs-dr注意:
    			Director和各RS都配置有VIP
    			1)确保前端路由器将目标IP 为VIP 的请求报文发往Director
    				在前端网关做静态绑定VIP 和Director的MAC 地址
    				在RS上使用arptables工具
    					arptables -A IN -d $VIP -j DROP
    					arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
    				在RS上修改内核参数以限制arp通告及应答级别
    					arp_announce
    					arp_ignore
    			2)RS的RIP可以使用私网地址,也可以是公网地址,RIP与DIP在同一IP网络,RIP的网关不能指向DIP,以确保响应报文不会经由Director
    			3)RS和Director要在同一个物理网络
    			4)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
    			5)不支持端口映射(端口不能修败)
    			6)RS可使用大多数OS
    		
    

    lvs-fullnat 模式

    		lvs-fullnat :
    			通过同时修改请求报文的源IP地址和目标IP地址进行转发
    			CIP --> DIP
    			VIP --> RIP
    		1)VIP 是公网地址,RIP 和DIP 是私网地址,且通常不在同一IP 网络,因此,RIP 的网关一般不会指向DIP
    		2)RS收到的请求报文源地址是DIP,因此,只需响应给DIP ,但Director还要将其发往Client
    		3)请求和响应报文都经由Director
    		4)支持端口映射;
    

    负载均衡实现

    	负载均衡集群设计时要注意的问题
    		(1)是否需要会话保持
    		(2)是否需要共享存储
    	共享存储:NAS,SAN,DS (分布式存储)
    	数据同步:
    	lvs-nat:
    		设计要点:
    		(1) RIP 与DIP 在同一IP 网络, RIP 的网关要指向DIP
    		(2) 支持端口映射
    		(3) Director要打开核心转发功能
    	lvs-dr:
    		dr模型中,各主机上均需要配置VIP,解决地址冲突的方式有三种:
    			(1)在前端网关做静态绑定
    			(2)在各RS 使用arptables
    			(3)在各RS 修改内核参数,来限制arp响应和通告的级别
    		三种方法中只有第三种方法修改RS的内核参数最实用
    		限制响应级别:arp_ignore
    			0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
    			1: 仅在请求的目标IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
    		限制通告级别:arp_announce
    			0 :默认值,把本机所有接口的所有信息向每个接口的网络进行通告
    			1 :尽量避免将接口信息向非直接连接网络进行通告
    			2 :必须避免将接口信息向非本网络进行通告
    	实现LVS-DR的配置脚本
    		RS 的预配置脚本
    			#!/bin/bash
    			vip=192.168.0.100
    			mask='255.255.255.255‘
    			dev=lo:1
    			case $1 in
    			start)
    			echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    			echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    			echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    			echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    			ifconfig $dev $vip netmask $mask broadcast $vip up
    			route add -host $vip dev $dev
    			;;
    			stop)
    			ifconfig $dev down
    			echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    			echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    			echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    			echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    			;;
    			*)
    			echo "Usage: $(basename $0) start|stop"
    			exit 1
    			;;
    			esac
    		
    		VS的配置脚本
    			#!/bin/bash
    			vip='192.168.0.100'
    			iface='eth0:1'
    			mask='255.255.255.255'
    			port='80'
    			rs1='192.168.0.101'
    			rs2='192.168.0.102'
    			scheduler='wrr'
    			type='-g'
    			case $1 in
    			start)
    			ifconfig $iface $vip netmask $mask broadcast $vip up
    			iptables -F
    			ipvsadm -A -t ${vip}:${port} -s $scheduler
    			ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    			ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    			;;
    			stop)
    			ipvsadm -C
    			ifconfig $iface down
    			;;
    			*)
    			echo "Usage $(basename $0) start|stop“;exit 1
    			;;
    			esac
    
  • 相关阅读:
    安装centos虚拟机
    关于区别广播域与冲突域
    网络七层架构
    怎么有效避免黑客使用跳板软件进行攻击窃取信息数据
    C语言猜数字游戏
    页置换算法FIFO、LRU、OPT
    Samza的ApplicationMaster
    Samza文档翻译 : Comparison Introduction
    Samza文档翻译 : Architecture
    Samza文档翻译 : Concepts
  • 原文地址:https://www.cnblogs.com/shenxm/p/8461171.html
Copyright © 2020-2023  润新知