LVS集群

目录

前言

一、概述

二、LVS结构

三、工作模式

四、LVS负载均衡算法

五、命令解析

六、NET案列

七、dr模式



前言

LVS(Linux Virtual Server)集群是一种基于Linux操作系统的高可用性和负载均衡解决方案。它通过将网络流量分发到多个后端服务器上,实现了对网络服务的负载均衡,并提高了系统的可用性和性能。

LVS集群主要由以下几个组件组成:

1. 负载均衡器(Load Balancer):负载均衡器是集群的前端设备,它接收来自客户端的请求,并将请求按照一定的负载均衡算法转发到后端的真实服务器上。负载均衡器可以是硬件设备(如硬件负载均衡器)或软件设备(如LVS软件负载均衡器)。

2. 真实服务器(Real Server):真实服务器是承载实际服务的服务器。在LVS集群中,通常有多个真实服务器用于提供相同的服务,并共享负载。这些服务器可以是物理服务器或虚拟服务器。

3. 后端服务(Backend Service):后端服务是真实服务器提供的具体服务,可以是Web服务器、数据库服务器、应用服务器等。

4. 负载均衡算法(Load Balancing Algorithms):负载均衡器使用不同的算法来决定将请求转发到哪个真实服务器上。常见的负载均衡算法有轮询(Round Robin)、加权轮询(Weighted Round Robin)、最少连接(Least Connection)等。

LVS集群的工作原理是通过网络地址转换(NAT)或直接路由(Direct Routing)技术来将请求转发到真实服务器上。负载均衡器收到客户端请求后,根据负载均衡算法选择一个真实服务器,并将请求转发给它。真实服务器处理请求并将响应返回给客户端,完成整个过程。

LVS集群能够提供高可用性和性能扩展的好处。如果某个真实服务器出现故障或负载过高,负载均衡器可以自动将流量转发到其他健康的服务器上,保证服务的可用性。同时,通过共享负载,LVS集群能够将客户端请求均匀地分配到多个服务器上,提高整个系统的性能和吞吐量。

总而言之,LVS集群是一种高可用性和负载均衡方案,通过将网络流量分发到多个后端服务器上,提高了系统的可用性和性能。


一、概述

集群概述:
    1、负载均衡技术类型
        四层负载均衡器 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
        七层负载均衡器 也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
    2、 负载均衡实现方式
        硬件负载均衡产品:F5 、深信服 、Radware
        软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

二、LVS结构

LVS结构
    三层结构
        负载调度器
        服务器池
        共享存储
    架构对象
        VS:Virtual Server,也称为 Director,负载均衡服务器
        RS:Real Server,真正的服务器,集群中各节点
        VIP:Director 向外部提供服务的 IP
        DIP:Director 向内部与 RS 通信的 IP
        RIP:真实服务器的 IP
        CIP:客户端的 IP

三、工作模式

LVS工作模式
    LVS-NAT(NAT模式)
    LVS-DR(直接路由模式)(应用最广泛)
    LVS-TUN(IP隧道(Tunnel)模式,不常用)
    FULL-NAT模式(双向转换模式,不常用)

四、LVS负载均衡算法

LVS负载均衡算法
    静态负载均衡
            rr(round robin,轮询 )
            wrr(weight round robin,加权轮询)
            sh(source hashing,源地址散列算法(HASH))
            dh(destination hashing,目标地址 HASH)
    动态负载均衡
        lc(leash-connection,最少连接 )
            简单算法:active * 256 + inactive (谁的小选谁)
        wlc(加权最少连接)
            简单算法:(active * 256 + inactive) / weight(谁的小选谁)
        sed(最少期望延迟)
            简单算法:(active + 1) * 256 / weight (谁的小选谁)
        nq(never queue,永不排队)
        LBLC(基于局部性的最少连接 )
        LBLCR(基于局部性的带复制功能的最少连接)

五、命令解析

ipvsadm命令详解
    -A
        添加虚拟服务节点
    -D
        删除虚拟服务节点
    -L
        查看虚拟服务节点列表
    -a
        添加真实服务节点
    -d
        删除真实服务节点
    -l
        查看真实服务节点列表
    -t
        指定虚拟服务器IP地址
    -s
        指定调度算法
    -r
        指定真实服务器节点IP地址
    -w
        指定权重值
    -g
        直接路由模式(默认)
    -i
        隧道模式(不常用)
    -m
        NAT模式

六、NET案列

LVS(Linux Virtual Server)的net模式是LVS集群中的一种负载均衡模式,它通过网络地址转换(NAT)技术将网络流量转发给真实服务器,实现负载均衡和高可用性。

在net模式下,负载均衡器和真实服务器位于不同的子网中,各自拥有独立的IP地址。具体工作方式如下:

1. 配置负载均衡器:负载均衡器需要配置两个网络接口,一个用于管理和负载均衡器的IP地址(VIP,Virtual IP),另一个用于处理转发数据包的网络接口。

2. 配置真实服务器:真实服务器位于独立的子网中,需要配置一个与该子网相匹配的IP地址。

3. 转发数据包:当负载均衡器收到用户请求时,它会根据负载均衡算法选择一个真实服务器,并将请求数据包的目的地IP地址修改为该真实服务器的IP地址。然后,负载均衡器将数据包转发给真实服务器。

4. 真实服务器响应:当真实服务器接收到请求后,它会根据请求进行处理,并将响应数据包发送回负载均衡器。负载均衡器接收到响应后,将其源IP地址修改为VIP,再将响应转发回客户端。

net模式的优势包括:

- 独立子网:负载均衡器和真实服务器可以位于不同的子网中,提高了网络的灵活性和可扩展性。

- IP地址隐藏:真实服务器的IP地址对外部客户端来说是隐藏的,提高了网络的安全性。

- 负载均衡和高可用性:负载均衡器可以根据负载均衡算法选择最适合的真实服务器,实现负载均衡和高可用性。

需要注意的是,net模式要求负载均衡器和真实服务器位于不同的子网中,且负载均衡器需要正确配置网络地址转换规则(NAT)以实现请求和响应的转发。此外,负载均衡器需要具备足够的处理能力来处理大量的请求和响应。

总结来说,LVS的net模式通过网络地址转换(NAT)技术将网络流量转发给真实服务器,实现负载均衡和高可用性。它具有独立子网、IP地址隐藏和负载均衡高可用性等优势。

1、net模式

实验拓扑:按照如下要求配置,确保主机能访问外网并互相之间可以通信,最后用客户机访问网页时可以实现负载均衡

LVS集群_第1张图片

1、在192.168.115.131、192.168.115.134的主机上安装nginx,并书写简单的测试内容

####先安装epel源
yum -y install epel-release.noarch
####安装nginx
yum -y install nginx
####在192.168.115.131上书写页面,并启动nginx
echo nginx1 > /usr/share/nginx/html/index.html
systemctl start nginx
####在192.168.115.131上书写页面,并启动nginx
echo nginx1 > /usr/share/nginx/html/index.html
systemctl start nginx
###回到192.168.115.128的主机上对以上的操作验证
curl 192.168.115.131:80
curl 192.168.115.134:80

LVS集群_第2张图片

2、在192.168.115.128的主机上安装ipvsadm并进行配置

###安装ipvsadm
yum -y install ipvsadm
###开启路由转发功能
vim /etc/sysctl.conf
插入 net.ipv4.ip_forward = 1
使之生效 sysctl -p

LVS集群_第3张图片

 添加网卡并配置,用来外部进行访问

LVS集群_第4张图片

配置网卡

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37

vim cp /etc/sysconfig/network-scripts/ifcfg-ens37

LVS集群_第5张图片

 重启网络systemctl restart network 并用宿主机测试同联LVS集群_第6张图片

3、做完这些我们开始在192.168.115.128上配置负载调度器

3.1、加载模块

##加载ip_vs模块
modprobe ip_vs
##查看模块
lsmod |grep ip_vs

3.2、启动ipvsadm服务
    systemctl start ipvsadm,启动失败因为缺少文件,我们创建一个 touch /etc/sysconfig/ipvsadm再次启动就OK了

LVS集群_第7张图片

 3.3、配置负载均衡策略

##添加虚拟服务器节点192.168.100.100:80是用来与外部通信的,并指定调度算法为轮询
ipvsadm -A -t 192.168.100.100:80 -s rr
##指定真实服务器ip并指定为net模式
ipvsadm -a -t 192.168.100.100:80 -r 192.168.115.131:80 -m
ipvsadm -a -t 192.168.100.100:80 -r 192.168.115.134:80 -m
##查看策略
ipvsadm -Ln

LVS集群_第8张图片 保存策略 ipvsadm -save > /etc/sysconfig/ipvsadm

LVS集群_第9张图片

 4、测试首先查看4台主机的网关,此时192.168.115.128作为路由服务功能了,接下来把两台web服务器的route改为192.168.115.128,否则是访问不到的

route add -net 0/0 gw 192.168.115.128

LVS集群_第10张图片

 访问使用ctrl+F5深度刷新,就可以交替看到内容LVS集群_第11张图片

LVS集群_第12张图片

抓包LVS集群_第13张图片

 

 

 七、dr模式

LVS集群_第14张图片

LVS(Linux Virtual Server)的DR(Direct Routing)模式是LVS集群中的一种负载均衡模式,它通过直接路由技术将网络流量转发给真实服务器,实现负载均衡和高可用性。

在DR模式下,负载均衡器和真实服务器在同一子网中,共享同一个IP地址。具体工作方式如下:

1. 配置负载均衡器:负载均衡器需要配置两个网络接口,一个用于管理和负载均衡器的IP地址(VIP,Virtual IP),另一个用于处理转发数据包的网络接口。

2. 配置真实服务器:真实服务器需要配置一个与负载均衡器同一子网的IP地址,并将其设为默认网关。

3. 转发数据包:当负载均衡器收到用户请求时,它会根据负载均衡算法选择一个真实服务器,并将请求目的地的MAC地址修改为该真实服务器的MAC地址。然后,负载均衡器将数据包转发到真实服务器的子网上。

4. 真实服务器响应:当真实服务器接收到请求后,它会根据请求的目标IP地址进行处理。由于真实服务器与负载均衡器在同一子网中,它可以直接将响应数据包发送回客户端,跳过负载均衡器。

DR模式的优势包括:

- 低延迟:由于真实服务器直接响应客户端请求,跳过了负载均衡器,可降低延迟。

- 高吞吐量:负载均衡器只需处理请求的转发,而不需要处理响应,可提高整个系统的吞吐量。

- 真实服务器可扩展性:由于真实服务器不需要处理转发的数据包,它可以处理更多的客户端请求。

- 真实服务器的原始IP地址:DR模式下,真实服务器使用自己的原始IP地址与客户端通信,更容易进行网络通信和故障排查。

需要注意的是,DR模式要求负载均衡器和真实服务器在同一子网中,并且真实服务器需要配置额外的网络接口和设置默认网关。此外,负载均衡器需要正确地设置转发规则和负载均衡算法,以确保请求正确地转发给真实服务器。

总结来说,LVS的DR模式通过直接路由技术将网络流量转发给真实服务器,实现负载均衡和高可用性。它具有低延迟、高吞吐量和真实服务器可扩展性等优势。

1、基于上个实验的基础我们继续实验再此之前我们移除ens37的网卡,重置策略,取消路由功能

LVS集群_第15张图片

###在192.168.115.128上删除策略
ipvsadm -C

LVS集群_第16张图片

 vim /etc/sysctl.conf
##删除 net.ipv4.ip_forwd = 1

 2、删除2台web服务器的网关

LVS集群_第17张图片

 3、负载调度器配置

#调整ARP参数
vim /etc/sysctl.conf
#插入
net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0
#使它生效	
sysctl -p

LVS集群_第18张图片

配置虚拟IP地址
	cd /etc/sysconfig/network-scripts/
	cp ifcfg-ens33 ifcfg-ens33:0

LVS集群_第19张图片

 4、同理配置2台web服务器的APR参数,这么做的目的是把ip禁锢在本地,不让别人知道,这样LVS集群对客户端来说就只有一个ip了

##调整ARP参数
vim /etc/sysctl.conf
##插入
net.ipv4.conf.all.arp_ignore=1 
net.ipv4.conf.all.arp_announce=2 
net.ipv4.conf.default.arp_ignore=1 
net.ipv4.conf.default.arp_announce = 2 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce=2
##是之生效	
sysctl -p

LVS集群_第20张图片

 配置虚拟ip

配置虚拟IP地址
	cd /etc/sysconfig/network-scripts/
	cp ifcfg-lo ifcfg-lo:0
	vim ifcfg-lo:0
改为
DEVICE=lo:0
IPADDR=192.168.115.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0

重启负载调度器的网络主要看这里

重启两台web服务器的网络主要看这里

5、在负载调度器上配置

配置负载分配策略
[root@localhost network-scripts]# ipvsadm -A -t 192.168.115.200:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.131:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.134:80 -g

LVS集群_第21张图片

 6、为web服务器添加回环路由

##添加回环路由
route add -host 192.168.115.200/32 dev lo:0

 7、访问

LVS集群_第22张图片

 8、在宿主机上抓包发现对于宿主机来说访问的始终是192.168.115.200这个地址,所以用户就会认为是192.168.115.200这个服务器在提供服务,实际上啊是两台web服务器在发送内容

LVS集群_第23张图片


总结

  在进行本次实验时要了解LVS并理解NET、DR的工作原理,这可以有效的便于实验。在配置net模式时较为简单,值得注意的是dr模式:配置时要按照顺序往下走,注意网关,注意APR的参数,注意如何配置策略,用的是哪个ip以及配置策略的命名、保存策略。

你可能感兴趣的:(lvs)