lvs简介

名词解释:
LVS:Linux Virtual Server(虚拟服务器)
RS:Real Server(真实服务器)
VIP:Virtual IP(客户端访问IP)
DIP:Director Server IP
RP:Real Server IP
LVS主要用于调度来自客户端的请求,将客户端的请求均衡的分配到后面的真实服务器,它的创始人是章文嵩

注意是均衡的分配,而不是平均分配!当然也可以平均分配

LVS工作在内核空间的INPUT链上,用户空间用于管理LVS的ipvsadm工具,支持的协议TCP, UDP, AH, EST, AH_EST, SCTP
查看内核是否支持LVS

# grep -i -A 10 "IPVS" /boot/config-XXXXX

如果有以下内容,表示内核支持LVS

# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m

LVS类型

1. lvs-nat
多目标的DNAT模型:通常修改报文的目标地址(同时可能修改目标端口)根据算法挑选出的某RS的RIP实现转发;由于实现在INPUT链上,所以不需要套接字,这样LVS可以处理的请求就不止六万多的请求了,何况基于套接字还达不到六万。

    (1) RS和DIP应该使用私网地址,且RS的网关要指向DIP
    (2) 请求和响应报文都要经过调度器
    (3) 支持端口映射
    (4) Real Server可以使用任意OS
    (5) RS的RIP和Director的DIP必须在同一个IP网段

2. lvs-dr
Director Routing:通过修改请求报文的目标MAC地址进行转发,特点是:请求报文经过调度器,但是响应报文不会经过调度器

    (1) VIP和RIP可以在同一网段,也可以不在同一个网段
    (2) 响应报文不经过调度器
    (3) 不支持端口映射
    (4) Director Server和Real Server都必须有VIP
    (5) DIP和RIP可以不在在一个网段,前提是DIP和RIP能够通信(router)

3. lvs-tun
隧道:不修改请求报文的ip首部,而是在原有的ip首部cip<-->vip再次封装一个ip首部dip<-->rip

    (1) VIP,RIP,DIP全部都是公网地址
    (2) 不支持端口映射
    (3) Real Server的OS必须支持隧道功能
    (4) Real Servre的网关不能指向DIP
    (5) 请求报文必须接受Director调度,但是响应报文绝对不允许经过Director

4. lvs-fullnat
通过同时修改报文的目标地址和源地址进行转发

    (1) VIP是公网地址,RIP和DIP是私网
    (2) 请求报文和响应报文都经过Director
    (3) 支持端口映射
    (4) Real Server可以使用任意OS

调度算法

静态算法:只考虑算法,不考虑RS负载

rr:轮询调度
wrr:加权的轮询
sh:源地址hash
dh:目标地址hash

动态算法:即考虑算法又考虑RS负载

LC:Least Connection(最少连接)
    Overhead=Active*256+Inactive    (负载=活动连接数量*256+非活动连接数),负载小的将被选中
WLC:加权的最少连接
    Overhead=(Active*256+Inactive)/weight
            (活动连接数*256+非活动连接数)/权重
SED:Shortest Expection Delay(最短期望延迟)
    Overhead=(Active+1)*256/weight
        (活动连接+1)*256/权重
NQ:Never Queue(永不排队),是SED的改进
LBLC:Locality-Based LC(基于本地的最少连接)
LBLCR:Locality-Based  Least-Connection with Replication (带复制的LBLC算法)

ipvsadm的基础命令

集群管理

ipvsadm -A|E|D -t|f|u service-address [-s scheduler] #增,改,删

-A: 添加集群
    -t:指定VIP以及端口
    -s:指定算法
-E:修改集群
-D:删除集群

RS管理

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

-a:添加RS
    -t:指明集群VIP以及端口
    -f:指定报文标记
-r:指定RS服务器
-g:gateway,dr模型
-m:nat模型
-i:ipip,隧道模型
ipvsadm -d -t|u|f service-address -r server-address #删除

查看和清空
查看:

ipvsadm -L -n -c ...

-n :基于数字格式显示(不反解名称)
-c:显示连接详情
--stats:显示统计
--rate:显示速率
--sort:排序
--exact:显示精确值

清空:

ipvsadm -C

-C:清空全部
-Z [-z|u|f service-address]:置零计数器

重载和保存:

ipvsadm -R|S

ipvsadm -S -n > /etc/sysconfig/ipvsadm #保存
ipvsadm -R < /etc/sysconfig/ipvsadm #重载

示例

  1. 安装

     ~]# yum install ipvsadm -y
  2. 添加集群

     ~]# ipvsadm -A -t 192.168.123.123:80(VIP:PORT) -s rr #添加集群,地址为VIP和端口,算法为rr
  3. 添加RS

     ~]# ipvsadm -a -t 192.168.123.123:80(VIP:PORT) -r 192.168.123.12 -m #添加RS,为nat模型
  4. 删除RS

     ~]# ipvsadm -d -t 192.168.123.123:80 -r 192.168.123.12
  5. 删除集群

     ~]# ipvsadm -D -t 192.168.123.123

Hello World

最后修改:2019 年 10 月 07 日 05 : 39 PM
如果觉得我的文章对你有用,请随意赞赏