LVS负载均衡--四种工作模式

本文详细介绍了LVS负载均衡的工作原理,包括LVS的组成、访问过程和10种调度算法。重点讲解了LVS的DR模式、TUN隧道模式、FULLNAT转发模式和NAT网关模式的搭建与配置。此外,还讨论了健康检查机制和高可用性策略,如VRRP与Keepalived在DR模式下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.负载均衡LVS基本介绍

LB 集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上(调度器),然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。

 

LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。

1.ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。


2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

 LVS访问过程:

client(源ip为CIP,目的ip为VIP)--PREROUTING(目的地址转换,要把别人的公网IP换成你们内部的IP,才让访问到你们内部受防火墙保护的机器。请确认ip)--input--ipvs(将源MAC地址转换成目的MAC地址)--POSTROUTING--RS(判断访问的是否是是RS的MAC地址)--eth0(虚拟的)--client(源ip为VIP,目的ip为CIP)

LVS的10种调度算法:

(1)静态调度

       ①rr(Round Robin):轮询调度,轮叫调度

       ②wrr:weight,加权(以权重之间的比例实现在各主机之间进行调度)

       ③sh:source hashing,源地址散列。主要实现会话绑定,能够将此前建立的session信息保留了

        ④Dh:Destination hashing:目标地址散列。把同一个IP地址的请求,发送给同一个server。

(2)动态调度

         ①lc(Least-Connection):最少连接

         ②wlc(Weighted Least-Connection Scheduling):加权最少连接。

         ③sed(Shortest Expected Delay):最短期望延迟

         ④nq(never queue):永不排队(改进的sed)

         ⑤LBLC(Locality-Based Least Connection):基于局部性的最少连接

         ⑥LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接

二.LVS搭建

LVS和Real-server必须在相同的网段:(相同的广播域内)
工作过程:
当一个client发送一个WEB请求到VIP(虚拟地址),LVS服务器根据VIP选择对应的real-server的Pool,根据算法,在Pool中选择一台Real-server,LVS在hash表中记录该次连接,然后将client的请求包发给选择的Real-server,最后选择的Real-server把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real-server上;当连接中止或者超时,hash表中的记录将被删除。

环境:kvm1,作为VS    
         kvm2 kvm3  作为rs

1.DR模式

将请求报文的目标MAC地址设定为挑选出的RS的MAC地址

1.VS下载LVS管理工具:ipvsadm
    下载之前需要配置yum元

2.配置ipvsadm策略

(1)查看策略

[root@server1 yum.repos.d]# ipvsadm -l   ##没有策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@server1 yum.repos.d]#

(2)配置策略 (采用轮询算法rr)

-A -t 添加策略

[root@server1 ~]# ipvsadm -A -t 172.25.18.100:80 -s rr
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.18.100:http rr

3.添加访问rs

[root@server1 ~]# ipvsadm -a -t 172.25.18.100:80 -r 172.25.18.2:80 -g  ##-g(DR模式)
[root@server1 ~]# ipvsadm -a -t 172.25.18.100:80 -r 172.25.18.3:80 -g
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.18.100:http rr
  -> server2:http                 Route   1      0          0         
  -> server3:http                 Route   1      0          0         
[root@server1 ~]# /etc/init.d/ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]

4.添加虚拟ip:172.25.18.100/24

 

[root@server1 ~]# ip addr add 172.25.18.100/24 dev eth0
[root@server1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a8:55:e5 brd ff:ff:ff:ff:ff:ff
    inet 172.25.18.1/24 brd 172.25.18.255 scope global eth0
    inet 172.25.18.100/24 scope global secondary eth0
    inet6 fe80::5054:ff:fea8:55e5/64 scope link 
       valid_lft forever preferred_lft forever
[root@server1 ~]# 

5.给rs添加内部虚拟访问ip

[root@server2 ~]# ip addr add 172.25.18.100/32 dev eth0
[root@server2 ~]# ip addr show
1: lo: <LOOPBACK,UP,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值