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

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

平台及境:

LVS1:    srv1.training.cc                       private_IP: 172.25.31.20/24    pub_IP :10.0.0.20/24    OS=rhel6.5

private_Virtual IP: 172.25.31.99/32       pub_Virtual IP:10.0.0.99/32

realserver1 :    srv2.training.cc             private_IP:172.25.31.21                      OS=rhel6.5

realserver2 :    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=1

2.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.99

GATEWAY=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.html

RealServer : srv4

#yum install httpd -y

# echo "srv4.training.cc main page"  > /var/www/html/index.html

5. 验证测试

配置客电脑为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進取之旅2: 一个最基本的 LVS负载均衡架构及配置(NAT路由方式)