您的位置:首页 > 运维架构 > 网站架构

Linux進取之旅2: 一个最基本的 LVS负载均衡架构及配置(NAT路由方式)

2016-09-26 19:57 375 查看
平台及境:LVS1: srv1.training.cc private_IP: 172.25.31.20/24 pub_IP :10.0.0.20/24 OS=rhel6.5private_Virtual IP: 172.25.31.99/32 pub_Virtual IP:10.0.0.99/32realserver1 : srv2.training.cc private_IP:172.25.31.21 OS=rhel6.5realserver2 : srv4.training.cc private_IP:172.25.31.23 OS=rhel6.5所有服务器的firewall 和selinux 为关闭状态.

基本拓扑及架构(此拓扑省略了LVS前面的交换机、防火墙和路由器);



当服务请求到达LVS时,寻址为一个虚拟IP地址(virtual IPaddress) 也称(floating IP)。同一时间内,仅有一个LVS为活动的, 它的角色是转发来自于虚拟IP的服务请求到真实的服务器。它的转发机制基于10种负载均衡算法中的一种。负载均衡算法:1. 轮询rr(Round-Robin ):按次序分配请求给真实的服务器。即所有真实服务器视为平等。2. 加权轮询 wrr (Weighted Round Robin):将请求分配置给连接较少的真实服务器。3. 最少连接 lc (Least Connection):将较多的请求分配给连接数较少的服务器上4. 加权最少连接 wlc (Weighted Least Connection) (默认):将较多的请求分配给连接数较少的服务器上。(根据服务器性能进行判断),服务器性能以使者指定的权重为准。5. 基于本机的最少连接lblc (Locality-Based Least -Connection):将较多的请求分配给边接数较少的服务器上(根据其目的地的IP地址)。适用于代理、高速服务器集群中。6. 基于本机的最少连接与复制(Locality-Based Least-Connection Schedulingwith Replication Scheduling);将较多的请求分配给边接数较少的服务器上(根据其目的地的IP地址)。该算法设计同样用于代理缓存服务器群集。7.目的Hash, dh (Destination Hash):通过在静态Hash表中查找目的IP, 将请求分配给真实的服务器。8. 源Hash,sh (Source Hash):通过在静态Hash表中查找源IP, 将请求分配给真实的服务器。9. 最短期望延迟sed (Shortest Expected Delay): 分配请求服务至最短延迟的服务器。10. 无队列 nq(Never Queue): 分配请求服务至一个空闲的服务器(如果存在),替代等候一个快速的服务器,如果所有服务器处于繁忙状态则采用最短延迟(sed)去分配服务请求。活动(Active)的LVS 同样也通过简单的send/expect脚本动态的监控真实服务器上特定服务的整体健康状态。Backup LVS 扮演一个备用系统的角色,周期性的与活动的LVS交换心跳信息。当活动的LVS发生故障、Backup LVS 使用ARP欺骗(ARP Spoofing). 接管虚拟IP 服务。 LVS路由方式:1. NAT (Network Address Translation):网络地址转换(Network Address Translation NAT)或NAT 路由进负载均衡。优点:真实的服务器可以是任何类型的操作系统。缺点:当在一个大型集群部署中,LVS 可能会是一个瓶颈(网络瓶颈),因为它必须处理所有进出的请求。2. Direct Routing DR直接路由允许真实的服务器处理路由数据包,以及直接响应用户请求而不用通过LVS来传输所有出站的数据包 。即,LVS只处理进入的数据包,从而减少的了网络性能降低的可能性。但在网络负载过重的情况下,可能会成为瓶颈。DR路由与ARP和ARP限制:由于LVS 的VIP与所有的真实服务器的VIP相同,因此,ARP请求会广播到此VIP相关联的所有机器上。这会造成客户端直接与真实服务器相连接,并直接处理请求。从而跳过LVS。解决方法:a.arptables_jf可以避免ARP与真实服务器的IP相关联。b.iptables 通过一开始不配置真实服务器的上VIP,来完全避免了ARP问题。
3. ipip encapsulating (Tunneling):
4. FullNAT (需要内核支持) Configuration:注:LVS为双网卡,一个用于连接公共网络,另一个用于连接真实的服务器,且处于不同网段。1. LVS初始配置:开启包转发:查看IP转发是否 已经开启# sysctl net.ipv4.ip_forward 启用IP转发(即时生效):# sysctl -w net.ipv4.ip_forward=12.为LVS配置VirtualIP:# ip addr add 10.0.0.99/32 dev eth0:1 ##pub_Virtual IP: 客户端访问# ip addr add 172.25.31.99/32 dev eth1:1 ##pri_VirtualIP: 充当真实服务器的默认网关

3. 配置LVS 负载: # yum install ipvsadm -y添加虚拟服务http, Virtual IP : 10.0.0.99 ;负载均衡算法Round-Robin .# ipvsadm -A -t 10.0.0.99:80 -s rr添加Real Server; 使用NAT路由方式。#ipvsadm -a -t 10.0.0.99:80 -r 172.25.31.21:80 -m#ipvsadm -a -t 10.0.0.99:80 -r 172.25.31.23:80 -m验证配置并启动ipvsadm# ipvsadm -ln# /etc/init.d /ipvsadm save# /etc/init.d/ipvsadm start# chkconfig ipvsadm on

4. 配置Real Server服务器:(1).配置所有的Real Server的默认网关为 private VIP . 这里即,172.25.31.99GATEWAY=172.25.31.99# /etc/init.d/network restart# route -n确认网关配置正确,否则真实服务器不能正确响应客户请求!2.在所有Real Server上安装apache. 并添加测试页面:Realserver : srv2#yum install httpd -y# echo "srv2.training.cc main page" > /var/www/html/index.htmlRealServer : srv4#yum install httpd -y# echo "srv4.training.cc main page" > /var/www/html/index.html5. 验证与测试配置客户端电脑为10.0.0.0/24网段IP, 并访问http://10.0.0.99 反复刷新页面,每次出的页面不同则表示成功。

测试及验证结果Summary:1. 从网络布局的观点来看,使用NAT方式的负载均衡是最容易配置的一种,因为对公网而言(客户端)仅需要一个访问点。对RealServer而言只需通过LVS转发所有的请求。其本身可以处在内部的私有网络上。但在实施时,首要考虑LVS服务器的性能,以及网络吞吐量问题,因为LVS将要处理所有进出的服务请求。
2. NAT 拓扑具对于操作系统具有极大的具活性,因为RealServer的服务器可以是不同类型的操作系统。
3. 硬件:在 NAT 拓扑中,Real Server 仅响应LVS,所以只需单一网卡就可以完成工作;而LVS,则需要双网卡在两个网络之间路由网络流量,所以这种拓扑在LVS上产生了一个网络瓶颈。当考虑实施这种架构时,确保LVS最少有两块网卡(1G以上)连接至与RealServer服务器通信的交换机上,以便负载更加高效;对于公网,则需考虑增加其带宽。
4. 在这个基本的2层架构中,只采用了单个LVS(无BackupLVS及高可用机制),当LVS发生故障时,则整个服务中断。所以,在真实生产环境中,需要考虑LVS本身的高可用性。如:采用LVS多主机,配置LVS为主/备模式(MASTER/BACKUP)或双组模式(MASTER/MASTER),或配置LVS高可用,以保证LVS本身对客户端持续可用。
September , 2016
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux Load lvs