LVS的工作原理和DR模式和NET模式实验

LVS

LVS是Linux Virtual Server的缩写,其主要的功能是实现负载均衡,目前LVS已经被集成到Linux内核模块中

终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器

LVS是建立在一个主控服务器(双机)及若干个真实服务器组成。真实服务器负责提供服务,主控服务器会根据指定的调度算法对真实的服务器进行控制。LVS集群结构对用户来说是透明的,客户端只与单个IP(虚拟IP)进行通信。客户端向lvs发出服务请求,主控服务器会通过特定的算法来指定某个真实服务器来应答,而客户端只与负载均衡的IP进行通信

LVS集群主要工作

LVS集群的管理工作主要包括创建虚拟服务器、添加服务器节点、查看集群节点状态、删除服务器节点和保存负载分配策略

LVS结构

LVS工作模式分为NAT模式、TUN模式、以及DR模式
  • NET模式:地址转换,安全性高,但是只通过网关接收和响应请求,负载低。

  • TUN模式:IP隧道,通过调度器接收用户请求,但是处理节点分布在因特网返回用户请求,这样代价昂贵。

  • DR模式:直接路由,这种模式性能和成本相对都比较理想,半开式网络,节点和调度器都在局域网,而节点响应却通过路由返回给用户。

LVS负载均衡十种调度算法
  • 轮询调度RR:

    将外部请求按照顺序轮流分配到真实的服务器上

  • 加权轮询WRR:

    根据真实服务器的不同处理能力来调度访问请求

  • 最少链接数LC:

    调度器通过最少连接调度算法动态的将网络请求调度到以建立的连接数最少的服务器上,两台服务器配置差不多时使用

  • 加权最少连接WLC:

    优化负载的性能,较高权重的服务器将承受较大比例的活动连接负载,两台服务器 有一台比较弱时 可以使用

  • 基于局部性的最少连接 LBLC:

    针对目标的IP地址的负载均衡,应用于cache集群上。会根据请求的目标IP地址找出该目标IP地址最近使用的服务器,如果该服务器是可用的没有超载,则将请求发送到服务器上,若服务器不存在,或服务器处于一半的工作负载,则用最少连接数选出一个服务器

  • 带复制的基于局部性的最少连接(locality-Based Least Connections with Replication)

    也是针对目标IP地址的负载均衡,用于cache集群。它与LBLC算法不同之处是它要维护的是从一个目标IP地址到一组服务器的映射,而LBLC算法维护的是从一个目标IP地址到一台服务器的映射。

  • 目标地址散列(Destination IP Hashing)
    目标地址散列调度算法根据请求的目标IP地址,作为散列键(Hash KEY)从静态分配的散列表中找出对应的服务器,若服务器是可用的且未超载,则请求发送到该服务器,否则返回空。

  • 源地址散列

    根据请求的源IP地址,作为散列键从静态分配的散列表中找出对应的服务器,若服务器是可用的且未超载,则请求发送到该服务器,否则返回空。

  • 源IP端口散列

    通过hash函数将来自用一个源IP地址和源端口号的请求映射到后端同一台服务器上,适合按服务的类型分类

  • 随机

    随机地将请求分发到不同的服务器上

负载均衡三个层次

典型的负载均衡集群中,包括三层次的组件,前端至少一个负载均衡调度器(LB)负责相应并发来自客户端的访问请求;后端有大量真实服务器构成服务池(server pool)提供实际的应用服务

透明性 一致性和伸缩性

第一层:

负载调度器,这是访问整个集群系统唯一入口,对外使用所有服务器共有VIP,也称为集群IP,通常会配置主备两台调度器实现热备份。

第二层:

服务器池,集群符提供的应用服务,由服务器池承担。每个节点具有独立的真实IP,只处理调度器分发过来的客户机请求。当某个节点失效时,负载调度器的容错机制会将它隔离,等排出错误后,在从新纳入服务器池

第三层:

共享存储,为服务池中的所有节点提供稳定的,一致的文件存取服务,保证整个集群的统一性

LVS相关术语
  • DS:Director Server。指的是前端负载均衡器节点。
  • RS:Real Server。后端真实的工作服务器。
  • VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
  • DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
  • RIP:Real Server IP,后端服务器的IP地址。
  • CIP:Client IP,访问客户端的IP地址
net模式实验:
net模式环境:
客户端:   ip   192.168.10.10,网关192.168.10.1
负载均衡: ip2  192.168.5.8   =web      网关  192.168.5.1
         ip1  192.168.10.2  =client   网关  192.168.10.1
web1     192.168.5.4,网关192.168.5.1
web2     192.168.5.5,网关192.168.5.1

#配置web1
yum -y install httpd
echo httpd1 > /var/www/html/index.html
systemctl restart httpd
route -n
systemctl stop firewalld
setenforce 0
curl 192.168.5.7
httpd1
#配置web2
yum -y install httpd
echo httpd2 > /var/www/html/index.html
systemctl restart httpd
systemctl stop firewalld
setenforce 0
curl 192.168.5.8
httpd2

#配置lvs
#增加一个硬件网卡,ip a查看新网卡名称“ens37”
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.5.8
NETMASK=255.255.255.0
GATEWAY=192.168.5.1

cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens37
vim /etc/sysconfig/network-scripts/ifcfg-ens37
IPADDR=192.168.10.2
NETMASK=255.255.255.0
GATEWAY=192.168.10.1

systemctl restart network
systemctl stop firewalld
setenforce 0

ip a
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:9d:fb:9f brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.8/24 brd 192.168.5.255 scope global noprefixroute ens33
ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:9d:fb:a9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.2/24 brd 192.168.10.255 scope global ens37


vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1                       #打开数据包转发
sysctl -p
net.ipv4.ip_forward = 1
modprobe ip_vs                                #加载lvs的模块
yum -y install ipvsadm                        #lvs的管理工具

#创建集群
ipvsadm -A -t 192.168.10.2:80 -s rr
-A 添加一个新的集群    -t 192.168.10.2:80 使用tcp协议,集群ip是lvs和客户端不同网段的那个IP地址
-s rr 指定调度算法,rr轮询

ipvsadm -a -t 192.168.10.2:80 -r 192.168.5.4 -m -w1
ipvsadm -a -t 192.168.10.2:80 -r 192.168.5.5 -m -w1
-a 添加真实的节点    -t 192.168.10.2:80 给集群中添加    -r 真实节点的ip    192.168.5.4 web主机的ip
-m 使用nat模式    -g 使用dr模式    -i ip隧道模式    -w 权重

ipvsadm -S                                    #保存策略规则到标准输出
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.5.4:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.5.5:http -m -w 1

ipvsadm -ln                                   #查看节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.2:80 rr
  -> 192.168.5.4:80               Masq    1      0          0         
  -> 192.168.5.5:80               Masq    1      0          0   
  
#client访问lvs:
curl 192.168.10.2
httpd1
curl 192.168.10.2
httpd2

#删除真实节点:
ipvsadm -d -t 192.168.10.2:80 -r 192.168.5.4
#删除集群      
ipvsadm -D -t 192.168.10.2:80 
DR模式实验:
#环境准备
客户端      192.168.5.8
lvs        192.168.5.4       虚拟ip   192.168.5.100
web1       192.168.5.5       虚拟ip   192.168.5.100
web2       192.168.5.6       虚拟ip   192.168.5.100

#lvs配置虚拟ip
cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens33:0
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.5.100
PREFIX=24
GATEWAY=192.168.5.1
systemctl restart network
ip  a
inet 192.168.5.8/24 brd 192.168.5.255 scope global noprefixroute ens33
    valid_lft forever preferred_lft forever
inet 192.168.5.100/24 brd 192.168.5.255 scope global secondary noprefixroute ens33:0

#配置web1和web2虚拟IP,ens33还要用,只能复制本地回环网卡:
cp /etc/sysconfig/network-scripts/ifcfg-lo  /etc/sysconfig/network-scripts/ifcfg-lo:0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0 
DEVICE=lo:0
IPADDR=192.168.5.100
NETMASK=255.255.255.255                                #注意:就是4个255,由于是本地回环网卡,所以掩码32

systemctl restart network
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.5.100/24 brd 192.168.5.255 scope global lo:0
       valid_lft forever preferred_lft forever
    
#配置web1和web2系统内核:
vim /etc/sysctl.conf          #让节点服务器不响应ARP广播,使其虚拟ip变成私有的ip地址,不发送任何的广播,不接受任何的请求
net.ipv4.conf.lo.arp_ignore = 1                        #不接受任何用户的请求
net.ipv4.conf.all.arp_ignore =1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2                      #不响应任何用户
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
sysctl -p

#两台web主机添加路由,让web可以接受来自192.168.5.100的请求和使用192.168.5.100发送响应
route add -host 192.168.5.100 dev lo:0
#两台web主机安装httpd
yum -y install httpd
echo httpd1 > /var/www/html/index.html
echo httpd2 > /var/www/html/index.html
systemctl restart httpd
route -n
systemctl stop firewalld
setenforce 0
curl 192.168.5.5
httpd1

#lvs配置命令
modprobe ip_vs                                #加载lvs的模块
yum -y install ipvsadm                        #lvs的管理工具
ipvsadm -A -t 192.168.5.100:80 -s rr
ipvsadm -a -t 192.168.5.100:80 -r 192.168.5.5:80 -g -w 1
ipvsadm -a -t 192.168.5.100:80 -r 192.168.5.6:80 -g -w 1
ipvsadm -S
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.5.5:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.5.6:http -g -w 1
ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.5.100:80 rr
  -> 192.168.5.5:80               Route   1      0          0         
  -> 192.168.5.6:80               Route   1      0          0   
  
测试:
client:
curl 192.168.5.100
httpd1
curl 192.168.5.100
httpd2

Forward Weight ActiveConn InActConn
TCP 192.168.5.100:80 rr
-> 192.168.5.5:80 Route 1 0 0
-> 192.168.5.6:80 Route 1 0 0

测试:
client:
curl 192.168.5.100
httpd1
curl 192.168.5.100
httpd2


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用LVS-DR(Linux Virtual Server - Direct Routing)时,有一些注意事项需要考虑。首先,需要注意LVS-DR的配置和注意事项可能因环境和需求的不同而略有变化,因此建议在实施LVS-DR之前仔细阅读相关文档和指南,并根据实际情况进行适当的调整和配置。 LVS-DR是LVS中最常用和性能最高的一种工作模式,它可以在Linux服务器上实现高可用性和性能增强。 在使用LVS-DR时,有几个需要注意的事项。首先,需要设置正确的网络配置,包括将VIP(Virtual IP)绑定到物理服务器的网络接口上,并配置正确的IP地址和子网掩码。此外,还需要确保物理服务器之间具有正确的网络连通性和路由设置。 另外,需要注意在LVS-DR模式下,真实服务器(Real Server)的响应数据包是直接返回给客户端的,而不经过负载均衡器。因此,需要在真实服务器上配置正确的网络路由和ARP(Address Resolution Protocol)表项,以确保响应数据包能够正确返回给客户端。此外,需要注意在真实服务器上禁用ICMP重定向,以避免网络问题导致的异常行为。 最后,如果在使用LVS-DR时遇到问题或困惑,建议寻求专业人士的帮助和支持。他们可以根据具体情况提供更准确和有效的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [LVS-DR模式](https://blog.csdn.net/Breeze_nebula/article/details/132319087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值