负载均衡器的原理及ipvsadm实现LVS/NAT模型

摘要:负载均衡:   是建立在现有的网络之上,它提供了一种廉价、有效、透明的方法来扩大网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,以及提高网络的灵活性和可用性。通过负载均衡器,可以实现N台廉价的Linux服务器并行处理,从面达到小型机或大型机的计算能力。单台负载均衡器位于网站的最前端,它起着分流客户请求的作用,相当于整个网站或系统的入口。由于IPv4中IP地址日益紧张以及出于安全方面的

负载均衡:

是建立在现有的网络之上,它提供了一种廉价、有效、透明的方法来扩大网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,以及提高网络的灵活性和可用性。通过负载均衡器,可以实现N台廉价的Linux服务器并行处理,从面达到小型机或大型机的计算能力。单台负载均衡器位于网站的最前端,它起着分流客户请求的作用,相当于整个网站或系统的入口。由于IPv4中IP地址日益紧张以及出于安全方面的才虑,很多网络使用保留IP地址(如10.0.0.0/255.0.0.0、172.16.0.0/255.128.0.0、和192.168.0.0/255.255.0.0).这些不在Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要访问Internet或被Internet访问时,就需要进行网络地址转换(Network Address Translation,NAT),NAT方法就是交不同IP地址的并行网络服务变成一个在同一IP地址上的虚拟服务。

1 (73).jpg

以LVS作为负载均衡器:

LVS(Linux Virtual Server)主要是针对大业务量的网络应用。

LVS类型:

NAT-->(DNAT)

DR

TUN

FULLNAT

VS/NAT的体系结构比较简单:在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的,这些服务器提供相同的网络服务、相同的服务内容,即不管请求被发送到哪一台服务器,执行结果都是一样的。服务的内容可以复制到每一台服务器的本地硬盘上,可能通过网络文件系统共享,也可以通过一个分布式文件系统来提供。

 

LVS NAT的特性:

1、RS应该使用私有地址;

2、RS的网关的必须指向DIP;

3、RIP和DIP必须在同一网段内;

4、请求和响应的报文都得经过Director;在高负载场景中,Director很可能成为系统性能瓶颈;

5、支持端口映射;

6、RS可以使用任意支持集群服务的OS;

 

VS/DR或VS/TUN应用的一种模型中(所有机器都在同一个物理网络),所有机器(包括Director和RealServer)都使用了一个额外的IP地址,即VIP。当一个客户端向VIP发出一个连接请求时,此请求必须要连接至Director的VIP,而不能是RealServer的。因为,LVS的主要目标就是要Director负责调度这些连接请求至RealServer的。

因此,在Client发出至VIP的连接请求后,只能由Director将其MAC地址响应给客户端(也可能是直接与Director连接的路由设备),而Director则会相应的更新其ipvsadm table以追踪此连接,而后将其转发至后端的RealServer之一。

如果Client在请求建立至VIP的连接时由某RealServer响应了其请求,则Client会在其MAC table中建立起一个VIP至RealServer的对就关系,并以至进行后面的通信。此时,在Client看来只有一个RealServer而无法意识到其它服务器的存在。

为了解决此问题,可以通过在路由器上设置其转发规则来实现。当然,如果没有权限访问路由器并做出相应的设置,则只能通过传统的本地方式来解决此问题了。这些方法包括:

1、禁止RealServer响应对VIP的ARP请求;

2、在RealServer上隐藏VIP,以使得它们无法获知网络上的ARP请求;

3、基于“透明代理(Transparent Proxy)”或者“fwmark (firewall mark)”;

4、禁止ARP请求发往RealServers;

 

 

LVS DR类型的特性:

1、RS可以使用私有地址;但也可以使用公网地址,此时可以直接通过互联网连入RS以实现配置、监控等;

2、RS的网关一定不能指向DIP;

3、RS跟Dirctory要在同一物理网络内(不能由路由器分隔);

4、请求报文经过Directory,但响应报文一定不经过Director

5、不支持端口映射;

6、RS可以使用大多数的操作系统;

 

LVS TUN类型:IP隧道

1、RIP、DIP、VIP都得是公网地址;

2、RS的网关不会指向也不可能指向DIP;

3、请求报文经过Directory,但响应报文一定不经过Director;

4、不支持端口映射;

5、RS的OS必须得支持隧道功能;

 

 

LVS Scheduling Method LVS的调度方法:
1.Fixed Scheduling Method 静态调服方法
(1).RR 轮询
(2).WRR 加权轮询
(3).DH 目标地址hash
(4).SH 源地址hash
2.Dynamic Scheduling Method 动态调服方法
(1).LC 最少连接
(2).WLC 加权最少连接
(3).SED 最少期望延迟
(4).NQ 从不排队调度方法
(5).LBLC 基于本地的最少连接
(6).LBLCR 带复制的基于本地的最少连接
 
ipvsadm组件定义规则的格式:
1.定义集群服务格式:
(1).添加集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
-A: 表示添加一个新的集群服务
-E: 编辑一个集群服务
-t: 表示tcp协议
-u: 表示udp协议
-f: 表示firewall-Mark,防火墙标记
service-address: 集群服务的IP地址,即VIP
-s 指定调度算法
-p 持久连接时长,如#ipvsadm -Lcn ,查看持久连接状态
-M 定义掩码
 
ipvsadm -D -t|u|f service-address 删除一个集群服务
ipvsadm -C 清空所有的规则
ipvsadm -R 重新载入规则
ipvsadm -S [-n] 保存规则
 
2.向集群服务添加RealServer规则:
(1).添加RealServer规则
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight]
-a 添加一个新的realserver规则
-e 编辑realserver规则
-t tcp协议
-u udp协议
-f firewall-Mark,防火墙标记
service-address realserver的IP地址
-g 表示定义为LVS-DR模型
-i 表示定义为LVS-TUN模型
-m 表示定义为LVS-NAT模型
-w 定义权重,后面跟具体的权值
ipvsadm -d -t|u|f service-address -r server-address --删除一个realserver
ipvsadm -L|l [options] --查看定义的规则
如:#ipvsadm -L -n
ipvsadm -Z [-t|u|f service-address] --清空计数器
LVS-NAT 模型实例

1。先配置好网络环境,要三个虚拟机(本次实验在虚拟机上完成),一台用作Director,其他两台分别为RealServer1 和RealServer2

 

其中Director要两个网卡,Eth0网卡为桥接(Birdged),Eth1网卡为仅主机(Host-only),RealServer1 和RealServer2的网卡也都是仅主机

 

类型的。

 

2.为了演示效果,将Director的两块网卡配置成不在同一个网段的IP地址,RealServer1 和RealServer2的IP地址为同一网段,规划如下图:

 

wKioL1NR-aXwptXJAADZHxw6l4U828.jpg

 

3.为192.168.10.11和192.168.10.12配置web服务

先查看是否安装了web服务

[root@node1 ~]# rpm -q httpd

httpd-2.2.15-29.el6.centos.x86_64

如果没有安装则使用yum install httpd安装即可

RealServer1配置网站页面并启动服务

虚拟机1网卡地址设置

ifconfig eth0 192.168.10.11

route add default gw 192.168.10.1

[root@node2 ~]# vim /var/www/html/index.html

<h1>Web1</h1>

[root@node2 ~]# service httpd start

RealServer2配置网站页面并启动服务

虚拟机2网卡地址设置

ifconfig eth0 192.168.10.12

route add default gw 192.168.10.1

[root@node3 ~]# vim /var/www/html/index.html

<h1>Web2</h1>

[root@node3 ~]# service httpd start

4.在Director虚拟主机上配置

打开路由间转发功能

wKioL1NR_NOTDMywAAFHxLOWtTU232.jpg

wKioL1NR_XCxJDcSAAHyBVrZmYc221.jpg

--查看ipvsadm是否安装,如果没有安装则安装之,直接使用yum安装即可

 

wKiom1NR_pKCzmtMAAOKcYxZZzU701.jpg

 

配置Directory网卡,添加一块网卡eth1

配置地址ifconfig eth1 192.168.10.1

[root@node1 ~]# ifconfig eth0:0 172.16.24.6《=========定义VIP地址

 

定义LVS-NAT模型规则

 

wKiom1NSAVrjxFsCAAOefwK5ab8224.jpg

 

 

 

 

 

 

 

 

本文出自 “linux” 博客,谢绝转载!