企业-LVS简介、LVS的DR模式

  • LVS(Linux virtual Server)Linux虚拟服务器 简介:

LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。
它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。
它易用,配置非常简单,且有多种负载均衡的方法。
它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。
另外可扩展性也非常好。

A:负载调度器(load balancer),它是整个集群对外的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为是来自一个IP地址(VIP)上。可用监控服务器池的状态,如果某台服务器不能正常工作了,它会自动把其剔除,恢复后又加上。由一台或者几台Director Server组成。
B:服务器池(server pool),是一组真正执行客户请求的服务器。
C:共享存储(shared storage),它为服务器池提供一个共享的存储区,这样容易使服务器池提供相同的服务。

LVS通过控制IP来实现负载均衡。IPVS是其具体的实现模块。
IPVS的主要作用:安装在DS上面,在DS虚拟一个对外访问的IP(VIP)。用户访问VIP,到达DS,DS根据一定的规则选择一个RS,处理完成后然后返回给客户端数据。
这些步骤产生了一些具体的问题,比如如何选择具体的RS,RS如何返回给客户端数据等等。

LVS四种工作模式

VS/DR(Virtual Server via Direct Routing),直接路由技术实现虚拟服务器。
VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。
这种方式是四种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

VS/NAT(Virtual Server via Network Address Translation),网络地址翻转技术实现虚拟服务器。
当请求到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。
由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

VS/TUN(Virtual Server via IP Tunneling),IP隧道技术实现虚拟服务器。
它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server.
TUNNEL必须在所有的realserver上绑定VIP

FULLNAT, 无论是 DR 还是 NAT 模式,不可避免的都有一个问题:LVS 和 RS 必须在同一个 VLAN 下,否则 LVS 无法作为 RS 的网关。
在包从 LVS 转到 RS 的过程中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。
内网 IP 之间可以通过多个交换机跨 VLAN 通信。
当 RS 处理完接受到的包,返回时,会将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。
LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内网 IP 改为客户端的 IP。
Full-NAT 主要的思想是把网关和其下机器的通信,改为了普通的网络通信,从而解决了跨 VLAN 的问题。

fullnat模式和nat模式相似,但是与nat不同的是nat模式只做了两次地址转换,fullnat模式却做了四次.

DS:Director Server	前端负载均衡器节点 
RS:Real Server		后端真实的工作服务器 
VIP:				向外部直接面向用户请求,作为用户请求的目标的IP地址 (目的IP)
DIP:Director Server IP	主要用于和内部主机通讯的IP地址 
RIP:Real Server IP	后端服务器的IP地址 
CIP:Client IP		客户端的IP地址 (源IP)
  • LVS的DR模式-直接路由模式

以server1主机为代理服务器,物理机为客户端,server2、3为后端服务器。

lvs是由两部分组成:

ipvs(ip virrual server):一段代码(工作在内核),是真正生效实现调度的代码
ipvsadm:(工作在用户空间)负责为ipvs内核编译规则

server1:

yum install -y ipvsadm

在这里插入图片描述

rpm -qa |grep ipvsadm
rpm -qc ipvsadm-1.27-7.el7.x86_64
rpm -ql ipvsadm-1.27-7.el7.x86_64

在这里插入图片描述

vim /etc/sysconfig/ipvsadm-config			重启服务的时候保存策略

在这里插入图片描述

systemctl restart ipvsadm.service

在这里插入图片描述

ipvsadm -l				查看调度策略(做解析,-nl不做解析)
ipvsadm -A -t 172.25.38.100:80 -s rr			添加一个service-address为vip的80端口,调度器调度为rr轮询(轮询调度(Round Robin 简称’RR’))

在这里插入图片描述

ipvsadm -a -t 172.25.38.100:80 -r 172.25.38.3:80 -g	添加一个RS给172.25.38.3,模式为gatawaying(DR,direct routing)
ipvsadm -a -t 172.25.38.100:80 -r 172.25.38.2:80 -g

-A :添加目标策略(向一个记录中添加真实主机)
-t :tcp连接
-s :调度器,接负载均衡的算法
-g:dr模式
-r:真实主机ip

在这里插入图片描述

cat /etc/sysconfig/ipvsadm 			查看策略文件
systemctl restart ipvsadm.service	重启服务的时候保存策略
cat /etc/sysconfig/ipvsadm 			查看策略文件

在这里插入图片描述

ip addr add 172.25.38.100/24 dev eth0	在eth0网卡上添加vip

在这里插入图片描述

server2和server3:

安装httpd,编辑默认发布页面

ip addr add 172.25.38.100/32 dev eth0	在服务器上添加外网IP(使DS和RS使用同一个IP对外服务)

在这里插入图片描述
在这里插入图片描述
设置子网为32的原因: 数据包发现没有100,就会丢弃,不接收外部请求,只进行内部通信

真机测试:

curl 172.25.38.100

在这里插入图片描述

原文链接:加载失败,请重新获取