LVS(Linux virual server)

目录

一.集群和分布式简介

1.linux集群(Cluster)

1.1 Linux集群系统的优点

 1.2 常见的Linux集群类型

1.3 常见的Linux集群扩展类型(组建方式) 

2.分布式 

 3.集群和分布式

3.1集群和分布式的通俗理解

 二.lvs(Linux virtual server) 运行原理

1.lvs介绍

2.lvs集群体系结构

3.LVS集群类型相关术语

4.lvs集群的类型

4.1 nat模式

nat模式数据逻辑

nat模型优劣势

 lvs-nat模式原理及部署方法

实验环境部署

实验流程 

原理

4.2 lvs-dr:lvs的默认模式

 lvs-dr图解及逻辑

dr模型优劣势

 解决vip响应问题

 lvs-dr模式原理及部署方法

实验环境部署

 实验流程

 4.3 lvs-tun模式

要点 

图解 

 tun模型优劣势

 4.4 lvs-fullnat

要点

图解

4.5 lvs调度算法

lvs调度算法类型

lvs静态调度算法

lvs动态调度算法

 三.lvs部署命令介绍 

1.lvs软件相关信息

2.ipvsadm命令 

 查看

增加一个集群服务

修改一个集群服务

 删除一个集群服务

删除所有集群服务 

真实服务器管理

往集群服务中添加一个真实服务器

修改集群服务中的一个真实服务器

删除集群服务中的一个真实服务器

 清空转发请求计数器

查看访问量

保存 


一.集群和分布式简介

1.linux集群(Cluster)

Linux集群(cluster)就是一组Linux计算机,它们作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点(node)。
一个理想的集群,用户是不会意识到集群系统底层的节点的,在他们看来,集群是一个系统,而非多个计算机系统,并且集群系统的管理员可以随意增加和删改集群系统的节点。

1.1 Linux集群系统的优点

Linux集群系统的优点主要有4方面:

  • 易于扩展,管理员可很方便的增加或删除集群系统中的节点。
  • 高可用性,当集群中某一个节点失效时,其负责的任务可以传递给其他节点,有效避免单点故障。
  • 高性能,负载均衡的集群系统能够承担极大的并发客户请求。
  • 高性价比,可以使用相对廉价的硬件构造出高性能的系统。 

 1.2 常见的Linux集群类型

常见的Linux集群类型包括:

  • LB:Load Balancing,负载均衡集群

负载均衡集群中有调度器(Director),它处在多台内部服务器的上层,根据定义的调度方式从下层的服务器组中选择一台来响应客户端发送的请求。

  • HA:High Availability,高可用性集群

顾名思义就是服务的可用性比较高,当某台服务器故障后不会造成所提供的服务中断,集群自动将客户的访问请求转交给一个正常工作的服务器。

  • HP:Hight Performance,高性能

高性能的集群是当某一项任务计算量非常大的时候,由一个计算机集群共同来完成这项任务,这种 处理方式我们称为并行处理机制。一般高性能集群用于科研工作方面。

1.3 常见的Linux集群扩展类型(组建方式) 

  • scale up(纵向扩展):通过增加硬件资源,即增加更好的设备来满足性能消耗的需求。但是此方式性价比很低。
  • scale out(横向扩展):通过硬件或软件的方式,将由单一服务器负责的业务需求转为一组节点服务器来进行处理,此种方式易于扩展且性价比高。

2.分布式 

分布式存储 :Ceph GlusterFs FastDFS MogileFs
分布式计算 :hadoop Spark
分布式常见应用
分布式应用—— 服务按照功能拆分,使用微服务
分布式静态资源—— 静态资源放在不同的存储集群上 分布式数据和存储 -- 使用 key-value 缓存系统
分布式计算—— 对特殊业务使用分布式计算,比如 Hadoop 集群

 3.集群和分布式

  • 集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据 和代码都是一样的
  • 分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
  • 分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数 来提升效率,
  • 对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器 完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决 定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点, 都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败

3.1集群和分布式的通俗理解

 集群

小张开了一家小饭店,刚开始的时候店里只有一个厨师,切菜洗菜备料炒菜全干。后来由于饭香甜可口,人流量越来越多了,一个厨师忙不过来了,小张又请了两个厨师,那么这时候三个厨师炒一样的菜,做相同的切菜洗菜备料炒菜等工作,那这三个厨师的关系是集群。也就意味着来一个顾客,只有其中的一个厨师会为这个顾客服务。

 

分布式 

又经过一段时间,店里的生意更加火爆了,小张为了让厨师们能专心炒菜,把菜做到极致,又请了个配菜师负责切菜、备菜、备料,那么厨师和配菜师的关系是分布式,后来一个配菜师也忙不过来了,小张就又请了两个配菜师,三个配菜师关系也是集群。

 二.lvs(Linux virtual server) 运行原理

1.lvs介绍

LVS是章文嵩博士发起的自由软件项目,它的官方站点是http://www.linuxvirtualserver.org。
LVS工作在内核空间,实现TCP/IP协议群的四层路由,
在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但从Linux2.4内核以后已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能
LVS只能做到四层负载无法做到七层
LVS 相关术语
  • VS: Virtual Server,负责调度
  • RS:RealServer,负责真正提供服务

2.lvs集群体系结构

LVS采用三层结构:调度器、服务器池、共享存储,结构如下图:

负载调度器(load balancer/Director):由一台或多台负载调度器组成,主要作用类似一个路由器,将用户请求分发给服务器池上的real server;
服务器池(server pool/Realserver):一组真正执行客户请求的服务器,执行的服务一般有WEB、MAIL、FTP和DNS等。
共享存储(shared storage):为服务器池提供一个共享的存储区,能使得服务器池拥有相同的内容,提供相同的服务。

用户(user)请求通过网络到达lvs(load balance),两个共同组成了高可用,一个出问题另一个立即顶替,保证了稳定性,然后负责将请求调度到真正的real server上, 调度也有四种方式(lvs-nat, lvs-dr,lvs-tun,lvs-fullnat)。调度过来到底给那台,用到lvs的算法。

3.LVS集群类型相关术语

访问流程:CIP <--> VIP == DIP <--> RIP 

4.lvs集群的类型

lvs-nat : 修改请求报文的目标IP, 多目标 IP DNAT (就是user访问到lvs,lvs做了个转换,直接访问real server)
lvs-dr 操纵封装新的 MAC 地址
lvs-tun : 在原请求IP 报文之外新加一个 IP 首部
lvs-fullnat 修改请求报文的源和目标 IP

4.1 nat模式

Ivs-nat:

  • 本质是多目标IPDNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RSRIPPORT实现转发
  • RIPDIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标PORT
  • VS必须是Linux系统,RS可以是任意OS系统
nat模式数据逻辑

1. 客户端发送访问请求,请求数据包中含有请求来源( cip ),访问目标地址( VIP )访问目标端口
9000port
2.VS 服务器接收到访问请求做 DNAT 把请求数据包中的目的地由 VIP 换成 RS RIP 和相应端口
3.RS1 相应请求,发送响应数据包,包中的相应保温为数据来源( RIP1 )响应目标( CIP )相应端口
9000port
4.VS 服务器接收到响应数据包,改变包中的数据来源( RIP1-->VIP , 响应目标端口( 9000-->80
5.VS 服务器把修改过报文的响应数据包回传给客户端
6.lvs NAT 模式接收和返回客户端数据包时都要经过 lvs 的调度机,所以 lvs 的调度机容易阻塞
nat模型优劣势

   优势:节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。
  劣势:调度器位于客户端和集群节点之间,并负责处理进出的所有通信(压力大的根本原因),大规模应用场景中,调度器容易成为系统瓶颈。 

 lvs-nat模式原理及部署方法
实验环境部署

设备                                           角色                                                        ip

rhel9-lvs                                      lvs                                              vip:192.168.10.129/24

                                                                                                      dip:   192.168.94.130/24

rhel9-ndoe1                                RS1                                           rip:    192.168.94.135/24

rhel9-node2                                RS2                                           rip:    192.168.94.140/24

rhel9-node3                               Client                                          cip:    192.168.10.160/24                                     

rhel9-lvs

 rhel-node1,rhel-ndoe2

 

rhel-node3 

 注:nat模式和仅主机模式是为了区分网络。(nat模式看作外网,仅主机模式看作内网)

rhel-lvs :

由于lvs两个网卡上的ip属于两个网段,是不通信的,所以需要打开其内核路由功能

[root@rhel9-lvs ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1  # 这里默认的是0,需要改成1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
[root@rhel9-lvs ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

net.ipv4.ip_forward=1
# 在配置文件的最后一行加上
[root@rhel9-lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

# 加上配置参数后不回立刻生效,需要输入以上指令,才回生效

 rhel-node1,rhel-node2的网关必须指向lvs(就是192.168.94.130)

[root@rhel-node1 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
# 修改配置文件中的网关
[root@rhel-node1 ~]# grep ^address /etc/NetworkManager/system-connections/ens160.nmconnection 
address1=192.168.94.135/24,192.168.94.130
[root@rhel-node1 ~]# nmcli connection up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@rhel-node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.94.130  0.0.0.0         UG    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@node2 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@node2 ~]# grep ^address /etc/NetworkManager/system-connections/ens160.nmconnection 
address1=192.168.94.140/24,192.168.94.130
[root@node2 ~]# nmcli connection reload 
[root@node2 ~]# nmcli connection up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@node2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.94.130  0.0.0.0         UG    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160

 在rhel-node1和rhel-node2上安装web服务

[root@rhel-node1 ~]# systemctl stop firewalld.service 
[root@rhel-node1 ~]# setenforce 0
[root@rhel-node1 ~]# getenforce 
Permissive
# 关闭防火墙和selinux
[root@rhel-node1 ~]# yum install httpd -y
[root@rhel-node1 ~]# systemctl enable httpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# 开机自启加启动
[root@rhel-node1 ~]# echo node1 - 192.168.94.135 > /var/www/html/index.html
# 将内容写入共享目录
[root@rhel-node1 ~]# systemctl restart httpd
[root@rhel-node2 ~]# systemctl stop firewalld.service 
[root@rhel-node2 ~]# setenforce 0
[root@rhel-node2 ~]# getenforce 
Permissive
# 关闭防火墙和selinux
[root@rhel-node2 ~]# yum install httpd -y
[root@rhel-node2 ~]# systemctl enable httpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# 开机自启加启动
[root@rhel-node2 ~]# echo node2 - 192.168.94.140 > /var/www/html/index.html
# 将内容写入共享目录
[root@rhel-node2 ~]# systemctl restart httpd

注:在实验当中两个服务器内容不一样是为了更清晰的展现效果,在工作中两个服务器内容应当一致。 

 在rhel-lvs主机中检测:

[root@rhel9-lvs ~]# curl 192.168.94.135
node1 - 192.168.94.135
[root@rhel9-lvs ~]# curl 192.168.94.140
node2-192.168.94.140

#lvs主机应当看可以正常范围到两个web服务器中的内容

以上均为实验开始前的环境部署

实验流程 

在lv主机上安装lvs软件包

[root@rhel9-lvs ~]# yum install ipvsadm -y

查看当前策略

[root@rhel9-lvs ~]# ipvsadm -Ln
# 查看当前策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

# 当前无策略

在lvs主机上开始写入策略 

[root@rhel9-lvs ~]# ipvsadm -A -t 192.168.10.129:80 -s rr
# -A 表示增加虚拟server, -t 表示增加的调度是tcp协议的服务
# 后面输入的ip是客户访问此ip时开始调度:后加访问的端口
# -s 是指定你的调度算法    rr 是轮巡(静态算法)
[root@rhel9-lvs ~]# 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.129:80 rr
# 该策略有了之后,后段需要调度那些主机,需要继续写出来

[root@rhel9-lvs ~]# ipvsadm -a -t 192.168.10.129:80 -r 192.168.94.135:80 -m
[root@rhel9-lvs ~]# ipvsadm -a -t 192.168.10.129:80 -r 192.168.94.140:80 -m
[root@rhel9-lvs ~]# 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.129:80 rr
  -> 192.168.94.135:80            Masq    1      0          0         
  -> 192.168.94.140:80            Masq    1      0          0  
# -r 表示real server 真实主机   
# -m 表示我们当前用的lvs的模式是nat  ,同理,-g 则表示直连路由, -i表示tun,隧道模式
# -w 指定权重,就是给谁多给谁少, 因为此时的算法是rr,和-w 冲突,所以不生效,要想生效算法应写wr

检测:当访问192.168.10.129时,他真正访问的应该是后端的服务器 

注意,lvs主机的防火墙和selinux也要关闭

[root@rhel9-lvs ~]# for i in {1..10}
> do
> curl 192.168.10.129
> done
node2-192.168.94.140
node1 - 192.168.94.135
node2-192.168.94.140
node1 - 192.168.94.135
node2-192.168.94.140
node1 - 192.168.94.135
node2-192.168.94.140
node1 - 192.168.94.135
node2-192.168.94.140
node1 - 192.168.94.135


# 因为是轮循的算法,所以是你一次我一次
# 在企业中两次访问结果应是一致的,以上只是测试,为了更好的提现效果
[root@rhel9-lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
# 保存策略
原理

客户把流量打到了vip上,vip得到流量以后去读取我们lvs的规则策略,看是给谁的,然后查看调度算法是什么,得到调度算法后,按照调度算法对后端的real server(rs)进行调度,调度后rs得到了请求,rs看到的请求是cip, 但是rs无法仍过来数据请求,所以他只能向网关里面扔数据请求,而rs的网关恰恰是lvs的dip,网关处理扔过来的数据请求,最后通过lvs主机的vip来转发到我们的客户。

4.2 lvs-dr:lvs的默认模式

通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。
要点:

  • Director和各RS都得配置使用VIP;
  • 确保前端路由器将目标IP为VIP的请求报文发往Director:通过在RS上修改内核参数以限制arp通告及应答级别(arp_announce及arp_ignore);
  • RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;VIP配置在DR上的时候,应该是在eth0:0上,在RS上配置VIP的时候,就必须是lo:0了,否则达不到让RS不响应VIP的ARP通告的效果。
  • RS跟Director要在同一个物理网络即同一广播域;
  • 请求报文要经由Director,但响应不能经由Director,而是由RS通过网关直接发往Client;
  • 不支持端口映射
 lvs-dr图解及逻辑

 1、客户端CIP的请求发送给Director调度器的VIP;
2、Director调度器收到客户端的请求包后,将数据包的MAC地址改成Director调度器选择的某一台RS的MAC地址,并通过交换机(数据链路层)发送给RS服务器(因为MAC地址是RS的MAC地址,所以,RS可以接收到该数据报),注意:此时数据包的目的及源IP地址没有发生任何改变;
3、 (1) RS的数据链路层收到发送来的数据报文请求后,会从链路层往上传给IP层,此时IP层需要验证请求的目标IP地址。因为包的目标IP(即VIP)并不是像常规数据报那样为RS的本地IP,而仅仅目的MAC地址是RS的。所以,在RS上需要配置一个VIP的LoopbackDevice,是因为LoopbackDevice是服务器本地使用的网络接口,对外是不可见的,不会跟Director的VIP冲突;
(2) RS处理数据包完成后,将应答直接返回给客户端(源IP为VIP,目标IP为CIP),响应的数据报不再经过Director调度器。因此如果对外提供LVS负载均衡服务,则RS需要连上互联网才能将应答包返回给客户端。RS最好为带公网IP的服务器,这样可以不经过网关直接回应客户;如果多个RS使用了同一网关出口,网关会成为LVS架构的瓶颈,会大大降低LVS的性能。

dr模型优劣势

优势:负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,大大提高了             服务器并发能力。
劣势:(1) LVS-RS间必须在同一个VLAN;

           (2) RS上绑定VIP,风险大。 

 解决vip响应问题

DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种:

1.在前端网关做静态绑定

2.在各RS使用arptables

3.在各RS修改内核参数,来限制arp响应的级别

限制响应级别:arp_ignore

0:默认值,表示可使用本地任意接口上配置的任意地址进行响应

1:仅在请求的目标ip配置在本地主机的接收到请求报文的接口上时,才给予响应

限制通告级别:arp_announce

0: 默认值,把本机所有接口的所有信息向每个接口的网络进行通告

1:尽量避免将接口信息向非直接连接网络进行通告

2: 必须避免将接口信息向非本网络进行通告

配置要点
1.Director 服务器采用双 IP 桥接网络,一个是 VPP ,一个 DIP
2.Web 服务器采用和 DIP 相同的网段和 Director 连接
3. 每个 Web 服务器配置 VIP
4. 每个 web 服务器可以出外网
 lvs-dr模式原理及部署方法

原理:用户的请求传递到lvs(director),通过lvs传递到远端的真实主机,真实主机不经过我们的lvs直接就传递到客户机,减轻了lvs调度器的压力。

注:默认的情况下是不能跨vlan的,我们的lvs和real server必须处在同一个vlan里面。如果要跨vlan就需要使用隧道。

实验环境部署

设备                                           角色                                                        ip

  rhel9-node1                     user(客户机)                                              192.168.10.130/24          rhel9-lvs                           lvs(调度器)                                                192.168.94.129/24

  rhel9-node4                     路由器                                                        192.168.10.133/24

                                                                                                             192.168.94.140/24

  rhel9-node2                       real-server(真实主机)                             192.168.94.131/24  

  rhel9-node3                       real-server(真实主机)                             192.168.94.130/24 

vip:192.168.94.200/32                         仅在lvs,node2,和node3主机的环回上设置

  注:nat模式和仅主机模式是为了区分网络。(nat模式看作外网,仅主机模式看作内网)

          192.168.10.0 网段为nat模式        192.168.94.0 为仅主机模式  , 达到2个vlan的目的

           VIP就设置为lvs,node2,node3   的环回地址

rhel9-node1(客户机)

node1为客户机,为nat模式网段,需要将ndoe1主机的网关改为node4(路由器)nat模式网络ip

[root@rhel9-node1 ~]# 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a9:52:82 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.10.130/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::9ef0:c209:2ca8:3107/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rhel9-node1 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@rhel9-node1 ~]# grep ^address /etc/NetworkManager/system-connections/ens160.nmconnection 
address1=192.168.10.130/24,192.168.10.133
# 192.168.10.133 为node4nat模式网络ip
[root@rhel9-node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@rhel9-node1 ~]# nmcli connection reload 
[root@rhel9-node1 ~]# nmcli connection up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@rhel9-node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.133  0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160

rhel9-node4为路由器(双网卡,兼具nat模式和仅主机模式双网段)

[root@rhel9-src ~]# 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:06:42:0a brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.10.133/24 brd 192.168.10.255 scope global dynamic noprefixroute ens160
       valid_lft 914sec preferred_lft 914sec
    inet6 fe80::20c:29ff:fe06:420a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:06:42:14 brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    inet 192.168.94.140/24 brd 192.168.94.255 scope global noprefixroute ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::b0aa:c729:54d4:cdc4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

node9-lvs为lvs调度器(网络为仅主机模式)

注:lvs的网关需要和路由器仅主机模式ip一致;在lvs调度器上的vip设置为其网卡上的环回

[root@rhel9-lvs ~]# ip a a dev lo 192.168.94.200
[root@rhel9-lvs ~]# 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.94.200/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a6:54:78 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.94.129/24 brd 192.168.94.255 scope global dynamic noprefixroute ens160
       valid_lft 1445sec preferred_lft 1445sec
    inet6 fe80::20c:29ff:fea6:5478/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rhel9-lvs ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.94.2    0.0.0.0         UG    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@rhel9-lvs ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@rhel9-lvs ~]# nmcli connection reload 
[root@rhel9-lvs ~]# nmcli connection up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@rhel9-lvs ~]# grep ^address /etc/NetworkManager/system-connections/ens160.nmconnection 
address1=192.168.94.129/24,192.168.94.140 
[root@rhel9-lvs ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.94.140  0.0.0.0         UG    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160

node2,node3(都为真实主机)

vip设置为其环回,网关设置为node4仅主机模式网络的ip

[root@rhel9-node3 ~]# ip a a dev lo 192.168.94.200
[root@rhel9-node3 ~]# 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.94.200/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:1a:2d:78 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.94.130/24 brd 192.168.94.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::2631:ad5a:7a34:aa15/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rhel9-node3 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.2    0.0.0.0         255.255.255.255 UH    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@rhel9-node3 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@rhel9-node3 ~]# grep ^address /etc/NetworkManager/system-connections/ens160.nmconnection 
address1=192.168.94.130/24,192.168.94.140
[root@rhel9-node3 ~]# nmcli connection reload 
[root@rhel9-node3 ~]# nmcli connection up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@rhel9-node3 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.94.140  0.0.0.0         UG    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@rhel9-node2 ~]# ip a a dev lo 192.168.94.200/32
[root@rhel-node2 ~]# 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.94.200/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:09:d1:40 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.94.131/24 brd 192.168.94.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::c82:aef3:b738:335b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rhel-node2 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@rhel-node2 ~]# grep ^address /etc/NetworkManager/system-connections/ens160.nmconnection 
address1=192.168.94.131/24,192.168.94.140
[root@rhel-node2 ~]# nmcli connection reload 
[root@rhel-node2 ~]# nmcli connection up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@rhel-node2 ~]# route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.94.140  0.0.0.0         UG    100    0        0 ens160
192.168.94.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
 实验流程

rhel9-node4(路由器)

由于rhel9-node4两个网卡上的ip属于两个网段,是不通信的,所以需要打开其内核路由功能

[root@rhel9-src ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0    # 默认是0 关闭的,将其改为1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
[root@rhel9-src ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1

# 在最后一行加上
[root@rhel9-src ~]# sysctl -p 
net.ipv4.ip_forward = 1
# 刷新

rhel9-node2,rhel9-node3(真实主机)

在主机上按照web服务

[root@rhel-node2 ~]# yum install httpd -y
[root@rhel-node2 ~]# echo rhel-node2 - 192.168.94.131 > /var/www/html/index.html
[root@rhel-node2 ~]# systemctl restart httpd.service 
[root@rhel-node2 ~]# systemctl enable httpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@rhel-node2 ~]# curl 192.168.94.131
rhel-node2 - 192.168.94.131
[root@rhel9-node3 ~]# yum install httpd -y
[root@rhel9-node3 ~]# echo rhel-node3 - 192.168.94.130 > /var/www/html/index.html
[root@rhel9-node3 ~]# systemctl restart httpd.service 
[root@rhel9-node3 ~]# systemctl enable httpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@rhel9-node3 ~]# curl 192.168.94.130
rhel-node3 - 192.168.94.130

 在主机中解决ARP响应问题

[root@rhel-node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
[root@rhel-node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@rhel-node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@rhel-node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

# 使vip不对外响应, 只有先all再改lo才能对网卡生效,否则不生效

# 如果需要设置永久设定,就需要将以上内容加到 /etc/sysctl.conf 里面
[root@rhel9-node3 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rhel9-node3 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@rhel9-node3 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rhel9-node3 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

 rhle9-lvs

下载ipvsadm软件包

[root@rhel9-lvs ~]# yum install ipvsadm -y

设定策略 

[root@rhel9-lvs ~]# ipvsadm -A -t 192.168.94.200:80 -s wrr 
[root@rhel9-lvs ~]# ipvsadm -a -t 192.168.94.200:80 -r 192.168.94.130:80 -g -w 1
[root@rhel9-lvs ~]# ipvsadm -a -t 192.168.94.200:80 -r 192.168.94.131:80 -g -w 2

测试 

rhel-node1测试

[root@rhel9-node1 ~]# for i in {1..10}
> do 
> curl 192.168.94.200
> done
rhel-node2 - 192.168.94.131
rhel-node3 - 192.168.94.130
rhel-node2 - 192.168.94.131
rhel-node2 - 192.168.94.131
rhel-node3 - 192.168.94.130
rhel-node2 - 192.168.94.131
rhel-node2 - 192.168.94.131
rhel-node3 - 192.168.94.130
rhel-node2 - 192.168.94.131
rhel-node2 - 192.168.94.131
拓展:防火墙标签解决轮询错误
http https 为例,当我们在 RS 中同时开放 80 443 端口,那么默认控制是分开轮询的,这样我们就出
现了一个轮询错乱的问题
当我第一次访问 80 被轮询到 RS1 后下次访问 443 仍然可能会被轮询到 RS1
问题呈现

在node2,node3真实主机上安装https的加密模块

[root@rhel-node2 ~]# yum install mod_ssl -y
# 安装mod模块,就是https的加密模块,ssl
[root@rhel-node2 ~]# systemctl restart httpd
[root@rhel9-node3 ~]# yum install mod_ssl -y
[root@rhel9-node3 ~]# systemctl restart httpd

rhel-lvs

将加权轮询改为轮询,使实验结果能够更加清晰

[root@rhel9-lvs ~]# ipvsadm -E -t 192.168.94.200:80 -s rr 
[root@rhel9-lvs ~]# 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.94.200:80 rr
  -> 192.168.94.130:80            Route   1      0          0         
  -> 192.168.94.131:80            Route   2      0          0  

 测试

[root@rhel9-node1 ~]# curl -k https://192.168.94.200
rhel-node2 - 192.168.94.131
[root@rhel9-node1 ~]# curl -k https://192.168.94.200
rhel-node3 - 192.168.94.130


# -k 忽略证书

rhel-lvs 

在lvs调度器上增加策略

[root@rhel9-lvs ~]# ipvsadm -A -t 192.168.94.200:443 -s rr 
[root@rhel9-lvs ~]# ipvsadm -a -t 192.168.94.200:443 -r 192.168.94.130:443 -g 
[root@rhel9-lvs ~]# ipvsadm -a -t 192.168.94.200:443 -r 192.168.94.131:443 -g 
[root@rhel9-lvs ~]# 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.94.200:80 rr
  -> 192.168.94.130:80            Route   1      0          0         
  -> 192.168.94.131:80            Route   2      0          0         
TCP  192.168.94.200:443 rr
  -> 192.168.94.130:443           Route   1      0          0         
  -> 192.168.94.131:443           Route   1      0          0 

 在node1上测试

[root@rhel9-node1 ~]# curl 192.168.94.200;curl -k https://192.168.94.200
rhel-node2 - 192.168.94.131
rhel-node2 - 192.168.94.131

注:正常情况下第一个请求到达了131,第二个请求就应该是130,但是两次反馈都相同,所以并不合理 

解决问题
FWM:FireWall Mark
MARK target 可用于给特定的报文打标记 ,
--set-mark value

其中 :value 可为 0xffff 格式,表示十六进制数字借助于防火墙标记来分类报文,而后基于标记定义集群服务: 可将多个不同的应用使用同一个集群服务进行调度

实现方法:Director主机打标记

iptables -t mangle -A PREROUTING -d $vip -p $proto -m multiport --dports
$portl,$port2,..-i MARK --set-mark NUMBER

 Director主机基于标记定义集群服务

ipvsadm -A -f NUMBER [options]

解决如下: 在lvs调度器中设定端口标签,认为80443是一个整体

[root@rhel9-lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.94.200 -p tcp -m multiport --dports 80,443 -j MARK  --set-mark 6666
[root@rhel9-lvs ~]# ipvsadm -A -f 6666 -s rr
[root@rhel9-lvs ~]# ipvsadm -a -f 6666 -r 192.168.94.131 -g
[root@rhel9-lvs ~]# ipvsadm -a -f 6666 -r 192.168.94.130 -g

# -A 添加
# -d 目的地址
# -p 访问的协议
# -m 多端口标记
# -j 动作
# MARK 标记

测试: 

[root@rhel9-node1 ~]# curl 192.168.94.200;curl -k https://192.168.94.200
rhel-node3 - 192.168.94.130
rhel-node2 - 192.168.94.131

 4.3 lvs-tun模式

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)
要点 
(1)DIP,VIP,RIP都应该是公网地址;
(2)RS的网关不能,也不可能指向DIP,在RS的lo别名网卡上配置vip地址;
(3)请求报文要经由Director,但响应不能经由Director;
(4)不支持端口映射;
(5)RS的OS得支持隧道功能
图解 

1、用户发送请求到Director的VIP请求服务;
2、当用户请求到达Director的时候,根据调度算法选择一台RS进行转发,这时使用隧道(tun)封装两个IP首部,此时源IP是DIP,目标IP是RIP;
3、当RS接收到数据报后,看到外层的IP首部,目标地址是自己,就会拆开封装,解析完毕后,发送响应报文,源IP是VIP,目标IP是CIP。

 tun模型优劣势

  优势:实现了异地容灾,避免了一个机房故障导致网站无法访问。
  劣势:RS配置复杂。

 4.4 lvs-fullnat

通过同时修改请求报文的源IP地址和目标IP地址进行转发

要点
(1)VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;
(2)RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;
(3)请求和响应报文都经由Director;
(4)支持端口映射;
(5)lvs-fullnat型lvs默认不支持需更换支持的内核
图解

 

1、客户端将请求发送给Director的VIP请求服务;
2、VIP通过调度算法,将请求发送给后端的RS,这个时候源地址改成DIP,目标地址改成RIP;
3、RS接收到请求后,由于源地址是DIP,则一定会对DIP进行回应;
4、Director收到RS的响应后,修改数据报的源地址为VIP,目标地址为CIP进行响应。

注意:此调度方式还没有正式被Linux官方录入系统标准库,所以如果向使用此模式,需要去lvs官网下载源码,并且需要重新编译系统内核才可使用。 

4.5 lvs调度算法

lvs调度算法类型
ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态被分为两种:静态方法和动态方法
  • 静态方法:仅根据算法本身进行调度,不考虑RS的负载情况
  • 动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
lvs静态调度算法
  • RRroundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐
  • WRRWeighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少
  • SHSource Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
  • DHDestination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商
lvs动态调度算法
主要根据RS当前的负载状态及调度算法进行调度Overhead=value较小的RS会被调度
  • LCleast connections(最少链接发)
适用于长连接应用 Overhead (负载值) =activeconns (活动链接数) x 256+inactiveconns (非活动链接数)
  • WLCWeighted LC(权重最少链接)
默认调度方法 Overhead=(activeconns x 256+inactiveconns)/weight
  • SEDShortest Expection Delay
初始连接高权重优先 Overhead=(activeconns+1+inactiveconns) x 256/weight但是,当node1 的权重为 1 node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接
  • NQNever Queue,第一轮均匀分配,后续SED
  • LBLCLocality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理
  • LBLCRLBLC with Replication带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

 三.lvs部署命令介绍 

1.lvs软件相关信息

  • 程序包:ipvsadm
  • Unit File: ipvsadm.service
  • 主程序:/usr/sbin/ipvsadm
  • 规则保存工具:/usr/sbin/ipvsadm-save
  • 规则重载工具:/usr/sbin/ipvsadm-restore
  • 配置文件:/etc/sysconfig/ipvsadm-config
  • ipvs调度规则文件:/etc/sysconfig/ipvsadm

2.ipvsadm命令 

【基本描述】

ipvsadm是linux下的LVS虚拟服务器的管理工具,LVS工作于内核空间,而ipvsadm则提供了用户空间的接口;

【用法】

基本用法如下,分别用于设置虚拟服务算法和后端真实服务器

ipvsadm 选项 服务器地址 -s 算法
ipvsadm 选项 服务器地址 -r 真实服务器地址 [工作模式][权重]...

可使用yum安装或者从官网下载安装包源码安装,两种方式皆可

先检查是否已经安装ipvsadm

[root@rhel-lvs ~]# yum list installed | grep ipvsadm

若没有安装,则使用以下命令安装ipvsadm

[root@rhel-lvs ~]# yum -y install ipvsadm
  • 核心功能:
  • 集群服务管理:增、删、改
  • 集群服务的RS管理:增、删、改
  • 查看

命令参数

1.管理集群服务中的增删改
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A #添加
-E #修改
-t
#tcp服务
-u #udp服务
-s #指定调度算法,默认为WLC
-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f #firewall mask 火墙标记,是一个数字

 查看

[root@rhel9-lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

增加一个集群服务

[root@rhel9-lvs ~]# ipvsadm -A -t 192.168.1.100:80 -s rr

### 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.1.100:80 rr

修改一个集群服务

修改集群服务的调度算法。

[root@rhel9-lvs ~]# ipvsadm -E -t 192.168.1.100:80 -s wlc

[root@rhel9-lvs ~]# 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.1.100:80 wlc

 删除一个集群服务

[root@rhel9-lvs ~]# ipvsadm -D -t 192.168.1.100:80

[root@rhel9-lvs ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

# 为空

删除所有集群服务 

[root@rhel9-lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

真实服务器管理

对要转发的真实服务器条目的增删查改。绑定集群服务、指定LVS转发的工作模式。

ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]
-a # 添加 realserver
-e # 更改 realserver
-t #tcp 协议
-u #udp 协议
-f # 火墙 标签
-r #realserver 地址
-g # 直连路由模式
-i #ipip 隧道模式
-m #nat 模式
-w # 设定权重
-Z # 清空计数器
-C # 清空 lvs 策略
-L # 查看 lvs 策略
-n # 不做解析
--rate :输出速率信息
往集群服务中添加一个真实服务器
[root@rhel9-lvs ~]## ipvsadm -a -t 192.168.1.100:80 -r 172.16.16.2:80 -m -w 1

[root@rhel9-lvs ~]## ipvsadm -a -t 192.168.1.100:80 -r 172.16.16.3:80 -m -w 1

[root@rhel9-lvs ~]## 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.1.100:80 wlc

 -> 172.16.16.2:80               Masq    1      0          0        

 -> 172.16.16.3:80               Masq    1      0          0    
修改集群服务中的一个真实服务器

修改集群服务中的一个真实服务器的权重值。

[root@rhel9-lvs ~]# ipvsadm -e -t 192.168.1.100:80 -r 172.16.16.2:80 -m -w 2

[root@rhel9-lvs ~]# 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.1.100:80 wlc

 -> 172.16.16.2:80               Masq    2      0          0        

 -> 172.16.16.3:80               Masq    1      0          0 
删除集群服务中的一个真实服务器
[root@rhel9-lvs ~]# ipvsadm -d -t 192.168.1.100:80 -r 172.16.16.2:80

[root@rhel9-lvs ~]# 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.1.100:80 wlc

 -> 已被删除

 -> 172.16.16.3:80               Masq    1      0          0 
 清空转发请求计数器
[root@rhel9-lvs ~]# ipvsadm -Z
查看访问量
[root@rhel9-lvs ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
保存 
[root@rhel9-lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
# -n 代表不做解析,加 -n 保存更快

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值