LVS基本原理、类型和调度算法以及NAT、DR模型的实现

LVS简介 html

支持IPVS的集群负载均衡器和集群节点一块儿称为Linux Virtual Server 前端

LVS基本原理
     LVS集群负载平衡器接受服务的全部入站客户端计算机请求, 集群并决定哪一个集群节点应该回复给请求。负载平衡器有时被称 为LVS Director或者简称之为DirectorLVS集群内部的节点称为真实服务器(Real Server),也叫作集群节点。连接到集群请求集群服务的计算机称为客户端计算机。与计算机一般在网上交换数据包的方式相同,客户端计算机、Director和真实服务器使用IP地址进行彼此通讯 web


集群定义
      是一种并行或分布式系统,该系统:包括一个互连的总体计算机集合,做为一种单1、统一的计算资源使用 算法


集群计算机按功能和结构能够分红如下几类:
高可用性集群 High-availability (HA) clusters 后端

负载均衡集群 Load balancing clusters 服务器

高性能计算集群 High-performance (HPC) clusters 网络

网格计算 Grid computing 负载均衡


LVS调度算法 curl

动态调度方法 tcp

lc:最小链接谁的小,挑谁

wlc:加权最小链接

sed:最短时间望延迟

   LBLC:基于本地的最少链接

   LBLCR:基于本地的带复制功能的链接

四种静态

rr:轮叫,轮询

wrr:Weight,加权

sh:source hash,源地址hash 源地址散列调度

dh:目标地址散列调度

NAT模型的实

NAT: 地址转换

   集群节点跟director必须在同一个IP网络中

   RIP一般是私有地址,仅用于各个集群节点间的通讯

   director位于clientreal server 之间,并负责处理进出的全部通讯

   realserver 必须将网关指向DIP

   支持端口映射

   realserver可使用任意OS

较大规模应用场景中,director易成为系统瓶颈

规划:


Client

Director

Real Server 1

Real Server 2

IP

172.16.0.345

eth0172.16.86.1

eth1192.168.86.1

eth0:192.168.86.3

eth0192.168.86.4

通讯模型图:

客户端的请求经路由到达DirectorDirector再转发到Real Server中的任意一个,Real Server回应的报文再通过网关经过路由到达客户端。

下面咱们就用 HTTP服务为例子来说解一下LVS-NAT 的实现吧。前端服务器配置VIP向外响应来自客户端的请求,后端两台Real Server运行web服务,应该在后端两台web上配置相同的网页,可是这里为了便于观察效果咱们将两个网页内容配置的稍微有点差异,设置网关都指向192.168.86.1

实验步骤:

1、DirectorReal Server配置IP地址

RS1

   

    RS2:

   

Director以一样的方法配置其IP地址,其中内网的网卡类型也要设置成Host-only使其能与内网完成通讯

2、Real Server 安装web服务并配置网页

Real Server 1

[root@server39 ~]# yum install httpd -y

[root@server39 ~]# echo RS2.magedu.com > /var/www/html/index.html   #提供网页内容

[root@server39 ~]#service httpd start

[root@server39 ~]#curl http://localhost##测试网页

[root@server39 ~]#RS1.magedu.com

Real Server 2

[root@server39 ~]# yum install httpd -y

[root@server39 ~]# echo RS2.magedu.com > /var/www/html/index.html   #提供网页内容

[root@server39 ~]#service httpd start

[root@server39 ~]#curl http://localhost##测试网页

[root@server39 ~]#RS2.magedu.com

3、Director的相关配置

先介绍一下命令的应用:

ipvsadm:

管理集群服务

添加:-A -t|u|f service-address [-s scheduler]

-tTCP协议的集群

-uUDP协议的集群

service-address: IP:PORT

-fFWM:防火墙标志

service-address: Mark Number

修改:-E

删除:-D  -t|u|f service-address

# ipvsadm -A -t 172.16.86.1:80 -s rr

管理集群服务中的RS

添加:-a -t|u|f service-address -r service-address [-g|i|m] [-w weight]

-t|u|f service-address :事先定义好的吗,某集群服务器

-r service-address:RS的地址,在NAT模型中,可以使用IP:PORP实现端口映射

[-g|i|m]:LVS类型

-g:DR

-i:TUN

-m:NAT

[-w weight]:定义服务器权重

修改:-e

删除:-d -t|u|f service-address -r service-address

#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m

#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m

查看:

-L|-l

-n:数字格式显示主机地址和端口

--stats:统计数据

--rate:速率

--timeout:显示tcptcpfinudp的回话超时时长

-c:显示当前的ipvs链接情况

删除全部集群服务

-C:清空ipvs规则

保存规则:

-S

#ipvsadm -S > /path/to/somefile

载入此前规则

-R

#ipvsadm -R < /path/to/somefile

安装ipvsadm配置命令:

[root@localhost ~]# yum install ipvsadm

[root@localhost ~]# service ipvsadm start

ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]

ipvsadm: Clearing the current IPVS table:                  [  OK  ]

ipvsadm: Applying IPVS configuration:                      [  OK  ]

[root@localhost ~]# ipvsadm -A -t 172.16.86.1:80 -s rr

[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 192.168.86.3 -m      ###-m表示为NAT模型

[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 192.168.86.4 -m

[root@localhost ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.16.86.1:80 rr

 -> 192.168.86.4:80              Masq    1      0          0        

 -> 192.168.86.3:80              Masq    1      0          0        

[root@localhost ~]# ipvsadm -S > /etc/sysconfig/ipvsadm    ##保存配置信息

[root@localhost ~]# cat /etc/sysconfig/ipvsadm

-A -t 172.16.86.1:http -s rr

-a -t 172.16.86.1:http -r 192.168.86.4:http -m -w 1

-a -t 172.16.86.1:http -r 192.168.86.3:http -m -w 1

       [root@localhost ~]#echo 1 > /proc/sys/net/ipv4/ip_forward  ##打开路由转发功能


测试网页:

刷新网页:

DR模型的实现

DR: 直接路由

集群节点跟director必须同一个物理网络中

RIP可使用公网地址,实现便捷远程管理和控制

director仅负责入站请求,响应报文则有real server直接发往客户端

real server 不能将网关指向DIP

不支持端口映射

规划:


Client

Director

Real Server 1

Real Server 2

IP

172.16.0.345

eth0,dip: 172.16.86.2

eth0:0,vip:172.16.86.1

eth0,rip:172.16.86.3

lo:0,vip:172.16.86.1

eth0,rip:172.16.86.4

Lo:0,vip172.16.86.1

通讯模型图:

客户机发出请求通过路由和交换机到达DirectorDirector而后再转发到Real Server中的任意一个,Real Server再负责响应报文通过交换机和路由器到达客户机。客户端的请求报文到达Directorvip上而后再转发到Real Server上,再由Real Servervip做为源地址回应客户端请求,因此每一个Real Server上都要配置vip,并配置特定的路由条目便可。Real Server上的vip对外是不可见的,因此在接收客户端的APR请求时是不与相应的。

实验步骤:

1、RS1RS2的配置。

   RS1RS2的配置是相同的。下面就介绍RS1一个的配置吧。IP地址的配置和上面的NAT的配置同样,下面就该配置对ARP响应和向外通告的级了,首先介绍一下它的级别:

arp_ignore:定义接收到ARP请求时的相应级别;

0:只要本地配置的有相应的地址,就给予相应;

1:仅在请求的目标地址配置请求到达的接口上的时候,给予相应

arp_announce:定义将本身地址向外通告时的通告级别

0:将本地任何接口上的任何地址向外通告

1:试图仅向目标网络通告与其网络匹配的地址

2:仅向与本地接口上地址匹配的网络进行通告

   配置以下:

配置vip地址并添加特定路由信息,提供网页内容(和NAT中的相同)

[root@localhost ~]ifconfig lo:0 172.16.86.1 broadcast 172.16.86.1 netmask 255.255.255.255 up

[root@localhost ~]route add -host 172.16.86.1 dev lo:0

2、配置Director

首先是IP地址的配置,IP地址的配置和上面的都是相同的只是地址不同而已,eth0:172.16.86.2eth0:0:172.16.86.1,在这里就不给出配置信息了。

配置ipvsadm规则命令:

[root@localhost ~]# ipvsadm -A -t 172.16.86.1:80 -s wlc

[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 172.16.86.3 -g -w 2

[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 172.16.86.4 -g -w 1

添加路由条目:

[root@localhost ~]# route add -host 172.16.86.1 dev eth0:0

测试网页:

刷新:

访问比例是1 2,即访问两次RS1.magedu.com后才访问一次RS2.magedu.com