当前位置:   article > 正文

LVS负载均衡

lvs负载均衡

LVS负载均衡


一、负载均衡

1、集群是什么?

  • 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

  • 集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份(高可用HA),使得任何一个机器坏了整个系统还是能正常运行。

2、负载均衡集群技术

  • 负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。

  • 负载通常包括应用程序处理负载和网络流量负载,每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。

3、负载均衡集群技术的实现

负载均衡技术类型:基于 4 层负载均衡技术、基于 7 层负载均衡技术

负载均衡实现方式:硬件负载均衡设备、软件负载均衡

硬件负载均衡产品:F5 、深信服 、Radware

软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

4、负载均衡分类

负载均衡根据所采用的设备对象(软/硬件负载均衡),应用的OSI网络层次(网络层次上的负载均衡),及应用的地理结构(本地/全局负载均衡)等来分类。下面着重介绍的是根据应用的 OSI 网络层次来分类的负载均衡类型。

负载均衡可以大概分为以下几类:

  • 二层负载均衡(mac)
    数据链路层 mac地址
    一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应

  • 三层负载均衡(ip)

    网络层 ip地址

    一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。

  • 四层负载均衡(tcp)

​ 传输层 port

​ 在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器。

  • 七层负载均衡(http)

​ 应用层 url ip+port

​ 根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。

在实际应用中,比较常见的就是四层负载及七层负载,二层和三层基本淘汰掉了。下面也重点说下这两种负载。

5、四层负载均衡(基于IP+端口)

所谓四层负载均衡,也就是主要通过报文中的目标ip地址和端口,再加上负载均衡设备设置的服务器选择方式(分发策略,轮询),决定最终选择的内部服务器。

在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。

以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

实现四层负载均衡的有:

  • F5:硬件负载均衡器,功能很好,但是成本很高。
  • lvs:重量级的四层负载均衡软件
  • haproxy:模拟四层、七层转发,较灵活

6、七层负载均衡(基于虚拟URL或主机IP)

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据IP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

对应的负载均衡器除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI等信息,实现七层负载均衡。此种负载均衡器能理解应用协议。

实现七层负载均衡的软件有:

  • haproxy:天生负载均衡技能,全面支持四层,七层代理,会话保持,标记,路径转移;
  • nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
  • apache:功能较差
  • Mysql proxy:功能尚可。

7、四层负载与七层负载的区别

四层负载均衡七层负载均衡
基于IP+PortURL或主机IP等
类似于路由器代理服务器
复杂度
性能高;因无需解析内容)中;需要算法识别URL
和HTTP head等信息
安全性
额外功能会话保持,图片压缩等

总结:从上面的对比看来四层负载与七层负载最大的区别就是效率与功能的区别。四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高,而七层负载均衡的优势则体现在功能多,控制灵活强大。在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。


二、LVS

1、LVS简介

LVS官网

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

可以通过LVS提供的负载均衡技术实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

2、LVS的优缺点

优点

高并发连接:LVS基于内核工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用

支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

缺点

工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。

3、LVS核心组件与专业术语

核心组件

LVS的管理工具和内核模块 ipvsadm/ipvs

ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;

ipvs:工作于内核上的程序,可根据用户定义的集群实现请求转发;

专业术语

VS:Virtual Server虚拟服务
Director, Balancer负载均衡器、分发器
RS:Real Server后端请求处理服务器
CIP: Client IP客户端IP
VIP:Director Virtual IP负载均衡器虚拟IP
DIP:Director IP负载均衡器真实IP
RIP:Real Server IP后端请求处理服务器IP

4、LVS工作内核模型及工作模式

当客户端的请求到达负载均衡器的内核空间时,首先会到达 PREROUTING 链。

当内核发现请求数据包的目的地址是本机时,将数据包送往 INPUT 链。

LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间。

如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往POSTROUTING链。

最后经由POSTROUTING链发往后端服务器。

5、LVS负载均衡四种工作模式

  • LVS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器/负载均衡器(IP负载均衡,他修改的是IP地址) --利用三层功能

  • LVS/DR :直接路由模式,只有进站的数据流量经过分发器/负载均衡器(数据链路层负载均衡,因为他修改的是目的mac地址)–利用二层功能mac地址

  • LVS/TUN: 隧道模式,只有进站的数据流量经过分发器/负载均衡器

  • LVS/full-nat:双向转换,通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发

6、LVS四种工作模式原理

(1) NAT模式(LVS-NAT)

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,转发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的VIP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。

  • 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

  • 缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

image-20220928132603892

(2) 直接路由(Direct Routing)模式(LVS-DR)

原理:负载均衡器和RS都使用同一个IP对外服务。但只有DB对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DB,而DB收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。

  • 优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与LVS-TUN相比,LVS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

  • 缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

image-20220928132836907

(3) IP隧道(Tunnel)模式(LVS-TUN、不常用)

原理:互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项

  • 优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理海量的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

  • 缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

image-20220928133013583

(4) FULL-NAT模式(双向转换模式、不常用)

原理:客户端对VIP发起请求,Director接过请求发现是请求后端服务。Direcrot对请求报文做full-nat,把源ip改为Dip,把目标ip转换为任意后端RS的rip,然后发往后端,rs接到请求后,进行响应,相应源ip为Rip目标ip还是DIP,又内部路由路由到Director,Director接到响应报文,进行full-nat。将源地址为VIP,目标地址改为CIP

请求使用DNAT,响应使用SNAT

lvs-fullnat(双向转换)

通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发:

  • cip:vip dip:rip

  • rip:dip vip:cip

(5)四种模式的区别

lvs-nat与lvs-fullnat:请求和响应报文都经由Director

  • lvs-nat:RIP的网关要指向DIP
  • lvs-fullnat:双向转换

lvs-dr与lvs-tun:请求报文要经由Director,但响应报文由RS直接发往Client

  • lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发
  • lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

7、LVS ipvsadm 命令的使用

安装lvs管理软件 ipvsadm

yum -y install ipvsadm
  • 1

程序包:ipvsadm(LVS管理工具)

主程序:/usr/sbin/ipvsadm

规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file

配置文件:/etc/sysconfig/ipvsadm-config

命令选项

-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录
-t #表示为tcp服务
-u #表示为udp服务
-s --scheduler #使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
例:ipvsadm -A -t 192.168.1.2:80 -s wrr

-a --add-server  #在服务器表中添加一条新的真实主机记录
-t --tcp-service #说明虚拟服务器提供tcp服务
-u --udp-service #说明虚拟服务器提供udp服务
-r --real-server #真实服务器地址
-m --masquerading #指定LVS工作模式为NAT模式
-w --weight #真实服务器的权值
-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip #指定LVS的工作模式为隧道模式
-p #会话保持时间,定义流量呗转到同一个realserver的会话存留时间
例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1

-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。
-C -clear #清除内核虚拟服务器表中的所有记录。
-R -restore #恢复虚拟服务器规则
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录
-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list #显示内核虚拟服务器表

--numeric, -n:#以数字形式输出地址和端口号
--exact: #扩展信息,精确值 
--connection,-c: #当前IPVS连接输出
--stats: #统计信息
--rate : #输出速率信息

参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero #虚拟服务表计数器清零(清空当前的连接数量等)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

8、LVS的10种调度算法

  • 静态算法:
    • (1) rr(round robin):轮询调度算法:
      轮询调度算法的原理就是依次将用户的访问请求,平均的分配到每一台web服务节点上,从1开始,到最后一台服务器节点结束,然后在开始新一轮的循环,这种算法简单,但是没有考虑到每台节点服务器的具体性能
    • (2) wrr(weight):权重调度算法
      由于每台服务器的性能会高低不同,wrr将会根据管理员设定的权重值来分配访问请求,权重值越大的,被分到的请求数也就越多,此种算法有效的解决了rr轮询算法的缺点
    • (3) sh(source hashing)源地址散列:
      主要实现会话绑定,解决session会话共享问题,源地址散列会根据请求的源ip地址,作为关键字,在静态分配的hash表中找出对应的服务器,若该服务器没有超过负荷,就将请求分配到该服务器
    • (4) dh(destination hashing)目标地址散列,把同一个ip地址的请求,发送给同一个server
      目标地址散列调度算法是针对目标ip地址的负载均衡,是一种静态映射算法,把目标ip地址作为关键字,在静态分配的hash表中找到对应的服务器,若该服务器可用并没有超过负荷,则将请求发送到该服务器
  • 动态调度算法:
    • (1) LC(least connection)最少连接:
      当有用户发起访问请求时,lc算法将会把请求分配到集群中连接数最少的服务器上
    • (2) wlc(weight least connection scheduling)加权最少连接:
      加权最少连接算法是最少连接的升级版,各个服务器用想应的权重值表示其处理连接的性能,默认权重值为1,加权最少连接调度在调度访问请求时,会尽量使服务器的已建立连接和权重值成比例
      也就是活动的连接数除以权重,谁小,挑谁
    • (3) sed(shortest expected)最短延迟调度:
      在wlc基础上进行改进,不在考虑非活动状态,把当前处于活动状态的数目+1,数目最小的,则接受下次访问请求,+1的目的是为了考虑加权的时候,非活动链接过多,当权限过大,会导致非空闲的节点一直处于无连接状态
    • (4) nq(nerver queue)永不排队,改进的sed
      无需队列,如果有rs节点的连接数为0,那么直接将访问请求分配过去,不需要进行sed运算
    • (5) LBLC(locality based leastconnection)基于局部性的最少连接
      此算法是根据请求报文的目标ip地址的负载均衡调度,目前主要用于cache集群系统,因为cache集群中的客户请求报文的目标ip地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载剧本平衡的请求下,将相同的目标ip地址的请求调度到同一个服务器,来提高整个web服务的访问局部性和主存cache的命中率,从而调整整个集群系统的处理能力
      基于局部性的最少连接调度算法根据请求的目标ip地址找出该目标地址最近使用的rs,若该rs可用,将发送请求,若该服务器不可用,则用最少连接的原则选出一台可用服务器来进行匹配
    • (6) LBLCR(Locality-Based Least Connections withReplication)带复制的基于局部性最少连接,此种算法是针对目标ip地址的负载均衡,该算法根据请求的目标地址ip找出该地址对应的服务组,按最少连接的原则从服务组中选出一台服务器,若服务器没有超载,则发送请求到该服务器,若该服务器超载或者不可用,则按照最小连接的原则从这个集群中选出一台服务器,将该服务器添加到服务组中,在将请求发送到该服务器,同时当该服务器组中有一段时间没有被修改,将最忙的服务器从组中剔除,以降低复制的程度

三、LVS负载均衡HTTP集群实战

实验环境最好是纯净的。如果你有主机是克隆的,那么网卡设备的UUID可能相同,去配置文件里把UUID那一行去掉,然后重启网卡。

LVS-NAT模式

环境说明

主机名网卡信息
(ens32是nat,ens34是仅主机)
部署的服务操作系统
DRDIP: 192.168.92.130(ens32)
VIP: 192.168.118.128(ens34)
ipvsadmCentos8
RS1RIP: 192.168.92.131(ens32)
GW: DR的DIP
httpdCentos8
RS2RIP: 192.168.92.132(ens32)
GW: DR的DIP
httpdCentos8
ClientCIP: 192.168.92.149(ens32)Centos8

1.关闭DR、RS1、RS2、的防火墙与SELinux

systemctl enable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • 1
  • 2
  • 3

2.Real Server配置

real-server所有服务器—默认网关均指向DR的DIP

RS1

[root@RS1 ~]# dnf -y install httpd
[root@RS1 ~]# echo 'RS1' > /var/www/html/index.html
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# route add default gw 192.168.92.130 dev ens32
  • 1
  • 2
  • 3
  • 4

RS2

[root@RS2 ~]# dnf -y install httpd
[root@RS2 ~]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# route add default gw 192.168.92.130 dev ens32
  • 1
  • 2
  • 3
  • 4

3.DR配置

先给LVS服务器新添一张仅主机模式的网卡,作为VIP。

#新增网卡的IP
[root@DR ~]# ip a | grep ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.118.128/24 brd 192.168.118.255 scope global dynamic noprefixroute ens34

#开启路由转发功能
[root@DR ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@DR ~]# sysctl -p
net.ipv4.ip_forward = 1

#安装ipvsadm并添加分发规则
[root@DR ~]# dnf -y install ipvsadm
[root@DR ~]# ipvsadm -A -t 192.168.118.128:80 -s rr		#rr是轮询
[root@DR ~]# ipvsadm -a -t 192.168.118.128:80 -r 192.168.92.131:80 -m
[root@DR ~]# ipvsadm -a -t 192.168.118.128:80 -r 192.168.92.132:80 -m
[root@DR ~]# 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.118.128:80 rr
  -> 192.168.92.131:80            Masq    1      0          0
  -> 192.168.92.132:80            Masq    1      0          0
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# systemctl restart ipvsadm.service
[root@DR ~]# systemctl enable ipvsadm.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

4.client测试

[root@client ~]# curl 192.168.118.128
RS2
[root@client ~]# curl 192.168.118.128
RS1
[root@client ~]# curl 192.168.118.128
RS2
[root@client ~]# curl 192.168.118.128
RS1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

LVS-DR模式:http

环境说明

DR模式要求DR的DIP 和 所有RS的RIP必须在同一个网段及广播域

所有节点网关均指定真实网关

主机名真实IPVIP部署的服务操作系统
DRDIP: 192.168.92.130lo: 192.168.92.200ipvsadmCentos8
RS1RIP: 192.168.92.131lo: 192.168.92.200httpdCentos8
RS2RIP: 192.168.92.132lo: 192.168.92.200httpdCentos8
ClientCIP: 192.168.92.149Centos8

1.关闭DR、RS1、RS2、的防火墙与SELinux

systemctl enable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • 1
  • 2
  • 3

2.DR配置

#配置lo网卡ip
[root@DR ~]# dnf -y install net-tools
[root@DR ~]# ip a s lo
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 192.168.92.200/0 brd 192.168.92.200 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

#永久生效lo网卡配置
[root@DR ~]# echo "ifconfig lo 192.168.92.200/32 broadcast 192.168.92.200 netmask 255.255.255.255 up" >> /etc/rc.d/rc.local
[root@DR ~]# chmod +x /etc/rc.d/rc.local

#安装ipvsadm并添加规则
[root@DR ~]# dnf -y install ipvsadm
[root@DR ~]# ipvsadm -A -t 192.168.92.200:80 -s rr
[root@DR ~]# ipvsadm -a -t 192.168.92.200:80 -r 192.168.92.131:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.92.200:80 -r 192.168.92.132:80 -g
[root@DR ~]# 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.92.200:80 rr
  -> 192.168.92.131:80            Route   1      0          0
  -> 192.168.92.132:80            Route   1      0          0
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# systemctl restart ipvsadm.service
[root@DR ~]# systemctl enable ipvsadm.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

3.Real Server配置

RS1

#安装httpd,配置首页
[root@RS1 ~]# dnf -y install httpd
[root@RS1 ~]# echo 'RS1' > /var/www/html/index.html
[root@RS1 ~]# systemctl enable --now httpd

#配置内核参数
[root@RS1 ~]# echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf
[root@RS1 ~]# echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf
[root@RS1 ~]# echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf
[root@RS1 ~]# echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf
[root@RS1 ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

#在lo接口上绑定VIP
[root@RS1 ~]# dnf -y install net-tools
[root@RS1 ~]# ifconfig lo 192.168.92.200/32 broadcast 192.168.92.200 netmask 255.255.255.255 up
[root@RS1 ~]# ip a s lo
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 192.168.92.200/0 brd 192.168.92.200 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
#永久生效lo网卡配置
[root@RS1 ~]# echo "ifconfig lo 192.168.92.200/32 broadcast 192.168.92.200 netmask 255.255.255.255 up" >> /etc/rc.d/rc.local
[root@RS1 ~]# chmod +x /etc/rc.d/rc.local
#添加路由
[root@RS1 ~]# route add -host 192.168.92.200/32 dev lo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

RS2

#安装httpd,配置首页
[root@RS2 ~]# dnf -y install httpd
[root@RS2 ~]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ~]# systemctl enable --now httpd

#配置内核参数
[root@RS2 ~]# echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf
[root@RS2 ~]# echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf
[root@RS2 ~]# echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf
[root@RS2 ~]# echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf
[root@RS2 ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

#在lo接口绑定VIP
[root@RS2 ~]# dnf -y install net-tools
[root@RS2 ~]# ifconfig lo 192.168.92.200/32 broadcast 192.168.92.200 netmask 255.255.255.255 up
[root@RS2 ~]# ip a s lo
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 192.168.92.200/0 brd 192.168.92.200 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
#永久生效lo网卡配置
[root@RS2 ~]# echo "ifconfig lo 192.168.92.200/32 broadcast 192.168.92.200 netmask 255.255.255.255 up" >> /etc/rc.d/rc.local
#添加路由
[root@RS2 ~]# chmod +x /etc/rc.d/rc.local
[root@RS2 ~]# route add -host 192.168.92.200/32 dev lo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

client测试访问

[root@client ~]# curl 192.168.92.200
RS1
[root@client ~]# curl 192.168.92.200
RS2
[root@client ~]# curl 192.168.92.200
RS1
[root@client ~]# curl 192.168.92.200
RS2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

LVS-DR模式:https

环境说明

DR模式要求DR的DIP 和 所有RS的RIP必须在同一个网段及广播域

所有节点网关均指定真实网关

https与http的配置差别就是多一个ssl加密,其余基本相同

主机名真实IPVIP部署的服务操作系统
DRDIP: 192.168.92.130lo: 192.168.92.210ipvsadmCentos8
RS1RIP: 192.168.92.131lo: 192.168.92.210httpd(https)Centos8
RS2RIP: 192.168.92.132lo: 192.168.92.210httpd(https)Centos8
ClientCIP: 192.168.92.149Centos8

1.关闭DR、RS1、RS2、的防火墙与SELinux

systemctl enable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • 1
  • 2
  • 3

2.Real Server配置

RS1

#配置内核参数
[root@RS1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS1 ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

#lo网卡绑定VIP
[root@RS1 ~]# dnf -y install net-tools
[root@RS1 ~]# ifconfig lo 192.168.92.210/32 broadcast 192.168.92.210 netmask 255.255.255.255 up
[root@RS1 ~]# ip a s lo
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 192.168.92.210/0 brd 192.168.92.210 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
#永久生效lo网卡配置
[root@RS1 ~]# echo 'ifconfig lo 192.168.92.210/32 broadcast 192.168.92.210 netmask 255.255.255.255 up' > /etc/rc.d/rc.local
[root@RS1 ~]# chmod +x /etc/rc.d/rc.local
#添加路由
[root@RS1 ~]# route add -host 192.168.92.210/32 dev lo

#下载httpd,配置https
[root@RS1 ~]# dnf -y install httpd mod_ssl
#配置https要有ssl模块,默认是有的
[root@RS1 ~]# cat /etc/httpd/conf.modules.d/00-ssl.conf
LoadModule ssl_module modules/mod_ssl.so

#配置ssl证书
[root@RS1 ~]# mkdir /etc/httpd/ssl
[root@RS1 ~]# cd /etc/httpd/ssl
[root@RS1 ssl]# openssl genrsa -out httpd.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
..................................................+++++
....+++++
e is 65537 (0x010001)
[root@RS1 ssl]# openssl req -new -key httpd.key -out httpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HB
Locality Name (eg, city) [Default City]:WH
Organization Name (eg, company) [Default Company Ltd]:RT
Organizational Unit Name (eg, section) []:YW
Common Name (eg, your name or your server's hostname) []:www.yefeng.com
Email Address []:yefeng@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@RS1 ssl]# openssl x509 -req -days 365 -in httpd.csr -signkey httpd.key -out httpd.crt
Signature ok
subject=C = CN, ST = HB, L = WH, O = RT, OU = YW, CN = www.yefeng.com, emailAddress = yefeng@example.com
Getting Private key
[root@RS1 ssl]# ls
httpd.crt  httpd.csr  httpd.key
#下面这两行配置不是新增而是在原有默认配置基础上作修改
[root@RS1 ssl]# vi /etc/httpd/conf.d/ssl.conf 
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

#测试能否访问
[root@RS1 ssl]# curl -k https://192.168.92.131
RS1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

RS2

[root@RS2 ~]# cat >> /etc/sysctl.conf <<EOF
> net.ipv4.conf.lo.arp_ignore = 1
> net.ipv4.conf.lo.arp_announce = 2
> net.ipv4.conf.all.arp_ignore = 1
> net.ipv4.conf.all.arp_announce = 2
> EOF
[root@RS2 ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

#配置lo网卡绑定VIP
[root@RS2 ~]# dnf -y install net-tools
[root@RS2 ~]# ifconfig lo 192.168.92.210/32 broadcast 192.168.92.210 netmask 255                                           .255.255.255 up
[root@RS2 ~]# ip a s lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaul                                           t qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 192.168.92.210/0 brd 192.168.92.210 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
#永久生效lo网卡配置
[root@RS2 ~]# echo "ifconfig lo 192.168.92.210/32 broadcast 192.168.92.210 netmask 255.255.255.255 up" >>/etc/rc.d/rc.local
[root@RS2 ~]# chmod +x /etc/rc.d/rc.local
#添加路由
[root@RS2 ~]# route add -host 192.168.92.210/32 dev lo

#下载httpd,配置https
[root@RS2 ~]# dnf -y install httpd mod_ssl
#创建ssl证书存放位置
[root@RS2 ~]# mkdir /etc/httpd/ssl
[root@RS2 ~]# cd /etc/httpd/ssl/
#将RS1的ssl证书传过来用
[root@RS2 ssl]# scp root@192.168.92.131:/etc/httpd/ssl/httpd.* .
The authenticity of host '192.168.92.131 (192.168.92.131)' can't be established.
ECDSA key fingerprint is SHA256:41MUAgoOJ7cipkGboXt2n0BlrxuPxp2IVlgXn0ahNgg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.92.131' (ECDSA) to the list of known hosts.
root@192.168.92.131's password:
httpd.crt                                     100% 1277   290.0KB/s   00:00
httpd.csr                                     100% 1033   254.8KB/s   00:00
httpd.key                                     100% 1679   494.0KB/s   00:00
[root@RS2 ssl]# ls
httpd.crt  httpd.csr  httpd.key
#下面这两行配置不是新增而是在原有默认配置基础上作修改
[root@RS1 ssl]# vi /etc/httpd/conf.d/ssl.conf 
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

#配置httpd首页,启动并设为开机自启
[root@RS2 ssl]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ssl]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

#测试访问
[root@RS2 ssl]# curl -k https://192.168.92.132
RS2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

DR配置

#配置lo网卡绑定VIP
[root@DR ~]# dnf -y install net-tools
[root@DR ~]# ifconfig lo 192.168.92.210/32 broadcast 192.168.92.210 netmask 255.255.255.255 up
[root@DR ~]# ip a s lo
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 192.168.92.210/0 brd 192.168.92.210 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
#lo网卡配置永久生效
[root@DR ~]# echo "ifconfig lo 192.168.92.210/32 broadcast 192.168.92.210 netmask 255.255.255.255 up" >> /etc/rc.d/rc.local
[root@DR ~]# chmod +x /etc/rc.d/rc.local

#安装ipvsadm并添加规则
[root@DR ~]# dnf -y install ipvsadm
[root@DR ~]# ipvsadm -A -t 192.168.92.210:443 -s rr
[root@DR ~]# ipvsadm -a -t 192.168.92.210:443 -r 192.168.92.131:443 -g
[root@DR ~]# ipvsadm -a -t 192.168.92.210:443 -r 192.168.92.132:443 -g
[root@DR ~]# 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.92.210:443 rr
  -> 192.168.92.131:443           Route   1      0          0
  -> 192.168.92.132:443           Route   1      0          0
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# systemctl restart ipvsadm.service
[root@DR ~]# systemctl enable ipvsadm.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

client测试

[root@client ~]# curl -k https://192.168.92.210
RS2
[root@client ~]# curl -k https://192.168.92.210
RS1
[root@client ~]# curl -k https://192.168.92.210
RS2
[root@client ~]# curl -k https://192.168.92.210
RS1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

LVS-TUN模式

环境说明

主机名真实IPVIP部署的服务操作系统
DRDIP: 192.168.92.130tunlo: 192.168.92.220ipvsadmCentos8
RS1RIP: 192.168.92.131tunlo: 192.168.92.220httpd(https)Centos8
RS2RIP: 192.168.92.132tunlo: 192.168.92.220httpd(https)Centos8
ClientCIP: 192.168.92.149Centos8

1.关闭DR、RS1、RS2、的防火墙与SELinux

systemctl enable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • 1
  • 2
  • 3

2.Real Server配置

RS1

#启用ipip模块,tunl0绑定VIP
[root@RS1 ~]# dnf -y install net-tools
[root@RS1 ~]# modprobe ipip 
[root@RS1 ~]# ifconfig tunl0 192.168.92.220 broadcast 192.168.92.220 netmask 255.255.255.255
[root@RS1 ~]# echo "ifconfig tunl0 192.168.92.220 broadcast 192.168.92.220 netmask 255.255.255.255" >> /etc/rc.d/rc.local 
[root@RS1 ~]# chmod +x /etc/rc.d/rc.local

#修改内核参数
[root@RS1 ~]# vim /etc/sysctl.conf 
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
[root@RS1 ~]# sysctl -p
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

#安装httpd,配置网站首页
[root@RS1 ~]# dnf -y install httpd
[root@RS1 ~]# echo "RS1" > /var/www/html/index.html
[root@RS1 ~]# systemctl enable --now httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

RS2

#启用ipip模块,tunl0绑定VIP
[root@RS2 ~]# dnf -y install net-tools
[root@RS2 ~]# modprobe ipip 
[root@RS2 ~]# ifconfig tunl0 192.168.92.220 broadcast 192.168.92.220 netmask 255.255.255.255
[root@RS2 ~]# echo "ifconfig tunl0 192.168.92.220 broadcast 192.168.92.220 netmask 255.255.255.255" >> /etc/rc.d/rc.local 
[root@RS2 ~]# chmod +x /etc/rc.d/rc.local

#修改内核参数
[root@RS2 ~]# vim /etc/sysctl.conf 
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
[root@RS2 ~]# sysctl -p
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

#安装httpd,配置网站首页
[root@RS2 ~]# dnf -y install httpd
[root@RS2 ~]# echo "RS2" > /var/www/html/index.html
[root@RS2 ~]# systemctl enable --now httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

DR配置

#修改内核参数,开启IP转发
[root@DR ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf 
[root@DR ~]# sysctl -p
net.ipv4.ip_forward = 1

#配置VIP
[root@DR ~]# dnf -y install net-tools
[root@DR ~]# ifconfig tunl0 192.168.92.220 broadcast 192.168.92.220 netmask 255.255.255.255
[root@DR ~]# ip a |grep tunl0
3: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 192.168.92.220/32 brd 192.168.92.220 scope global tunl0
[root@DR ~]# echo "ifconfig tunl0 192.168.202.201 broadcast 192.168.202.201 netmask 255.255.255.255" >> /etc/rc.d/rc.local 
[root@DR ~]# chmod +x /etc/rc.d/rc.local 

#安装ipvsadm并添加规则
[root@DR ~]# dnf -y install ipvsadm
[root@DR ~]# ipvsadm -A -t 192.168.92.220:80 -s rr
[root@DR ~]# ipvsadm -a -t 192.168.92.220:80 -r 192.168.92.131:80 -i
[root@DR ~]# ipvsadm -a -t 192.168.92.220:80 -r 192.168.92.132:80 -i
[root@DR ~]# 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.92.220:80 rr
  -> 192.168.92.220:80           Tunnel  1      0          0         
  -> 192.168.92.220:80           Tunnel  1      0          0         
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# systemctl restart ipvsadm.service 
[root@DR ~]# systemctl enable ipvsadm.service 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

client测试

[root@client ~]# curl http://192.168.92.220
RS2
[root@client ~]# curl http://192.168.92.220
RS1
[root@client ~]# curl http://192.168.92.220
RS2
[root@client ~]# curl http://192.168.92.220
RS1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/923704
推荐阅读
相关标签
  

闽ICP备14008679号