LVS介绍与配置
LVS(Linux Virtual Server)
我会先写工作原理然后再写配置步骤,配置步骤不懂的可以再返回来看一下工作原理
1. 概述
1.1 LVS简介
LVS(Linux Virtual Server)是一种基于Linux操作系统的负载均衡解决方案。它通过将请求分发到多个后端服务器上,实现高可用性和可扩展性。LVS常用于网站、数据库等需要高并发访问的场景。
1.2 LVS架构
IPVS(IP Virtual Server): LVS的核心组件,负责实现负载均衡功能。
调度器(Director): LVS中的负载均衡器,接收来自客户端的请求,并根据调度算法将请求转发到真实服务器。
真实服务器(Real Server): 实际处理客户端请求的服务器。
虚拟IP(VIP): 提供给客户端访问的IP地址,实际由调度器管理。
2. LVS工作模式
2.1 NAT模式(Network Address Translation)
- 工作原理
- 在NAT模式下,负载均衡器(调度器)接收客户端的请求,然后将请求转发给真实服务器,真实服务器处理请求后,将响应数据发送回负载均衡器,再由负载均衡器返回给客户端。负载均衡器充当了中间人的角色,类似于邮递员收集信件并分发给不同的地址,再将回复的信件送回给发件人。
- 优缺点:
- 优点: 适用于私有网络,配置简单。可以隐藏真实服务器的IP,增加安全性。
- 缺点: 由于所有流量都经过负载均衡器,负载均衡器的性能和带宽成为瓶颈。
- 配置步骤
- 添加虚拟服务
- 添加真实服务器
- 设置真实服务器的网关
2.2 DR模式(Direct Routing)
- 工作原理
- 在DR模式下,客户端请求通过负载均衡器发送到真实服务器,但真实服务器的响应直接返回给客户端,而不经过负载均衡器。可以将其类比为一个快递公司的调度中心(负载均衡器),负责将快递单(请求)分配给不同的快递员(真实服务器),但快递员直接将快递(响应)送到客户手中。
- 优缺点:
- 优点: 高性能,因为响应数据不经过负载均衡器,减少了负载均衡器的负担,适合大流量场景。
- 缺点: 网络配置复杂,要求负载均衡器和真实服务器在同一物理网络中。
- 配置步骤
- 添加虚拟服务
- 添加真实服务器
- 配置真实服务器的回环接口(lo)
2.3 TUN模式(IP Tunneling)
- 工作原理: 在TUN模式下,客户端请求通过IP隧道(如GRE隧道)从负载均衡器发送到真实服务器,真实服务器处理请求后,直接将响应数据返回给客户端。这类似于通过地下通道(隧道)将信件送到目标地点,目标地点直接回复信件。
- 优缺点:
- 优点: 适用于跨网络负载均衡,负载均衡器和真实服务器可以在不同的物理网络中。
- 缺点: 网络配置复杂,需要隧道支持,增加了网络管理的复杂性。
- 配置步骤
- 添加虚拟服务
- 添加真实服务器
- 配置真实服务器的隧道接口(tunl0)
3. LVS调度算法
3.1 轮询(Round Robin)
- 简介: 将请求依次分发给每个真实服务器,循环进行。
- 工作原理: 类似于轮流发牌,每个服务器依次收到一个请求。
- 适用场景: 适用于负载较为均衡的场景。
3.2 最小连接数(Least Connections)
- 简介: 将请求分发给当前连接数最少的服务器。
- 工作原理: 类似于选择最空闲的售货员来处理顾客。
- 适用场景: 适用于服务器处理时间差异较大的场景。
3.3 加权轮询(Weighted Round Robin)
- 简介:根据服务器权重进行轮询,权重高的服务器分配更多的请求。
- 工作原理: 类似于根据员工的工作能力分配任务,能力强的分配更多任务。
- 适用场景: 适用于服务器性能差异较大的场景
3.4 加权最小连接数(Weighted Least Connections)
- 简介: 将请求分发给当前连接数最少且权重最高的服务器。
- 工作原理: 类似于在最空闲的售货员中选择最有经验的来处理顾客。
- 适用场景: 适用于服务器性能和处理时间差异都较大的场景。
3.5 基于局部性的最少连接数(Locality-Based Least Connections)
- 简介: 优先将请求分配给之前处理过相同客户端请求的服务器。
- 工作原理: 类似于优先选择熟悉客户需求的售货员。
- 适用场景: 适用于需要会话保持的场景,如购物车、在线交易等。
3.6 基于局部性的最少连接数(带复制)(Locality-Based Least Connections with Replication)
- 简介: 在基于局部性的最少连接数基础上,考虑了服务器复制问题,防止某一服务器过载。
- 工作原理: 类似于多个售货员同时处理同一客户的需求,但优先选择最空闲的。
- 适用场景: 适用于大规模分布式系统。
3.7 目标地址散列(Destination Hashing)
- 简介: 根据请求的目标地址计算哈希值,并将其分配到对应的服务器。
- 工作原理: 类似于将邮件按邮政编码分发到不同的邮局。
- 适用场景: 适用于固定的目标地址请求分配。
3.8 源地址散列(Source Hashing)
简介: 根据请求的源地址计算哈希值,并将其分配到对应的服务器。
工作原理: 类似于将邮件按发件人地址分发到不同的邮局。
适用场景: 适用于固定的源地址请求分配。
4. LVS配置示例
4.1 NAT模式配置示例
节点 | IP |
---|---|
LVS | 192.168.200.170(public) 192.168.100.164(internal) |
Nginx01 | 192.168.100.163 |
Nginx02 | 192.168.100.162 |
通过这个规划表大家就可以看出来,提供服务的Nginx是在一个内网里面,客户端不可能访问到的,接下来看需求
- 需求:LVS有2个网卡,一个为对外提供服务的网卡,网段为
192.168.200.0/24
,另一个是连接内部真实服务器的IP段192.168.100.0/24
,现在要求配置LVS,使得客户端访问192.168.200.170:80,然后LVS会根据轮询策略来将请求转发到对应的Nginx服务器上
4.1.1 安装LVS工具,开启内核转发模块
[root@oe01 ~]# yum install ipvsadm -y
[root@oe01 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
安装就只需要安装这个包就可以了,不需要启动任何服务
4.1.2 关闭所有节点的防火墙,selinux
# 所有节点执行这些命令
[root@oe01 ~]# systemctl disable --now firewalld
[root@oe01 ~]# setenforce 0
4.1.3 配置LVS
# 1. 添加虚拟服务
[root@oe01 ~]# ipvsadm -A -t 192.168.200.170:80 -s rr
# 2. 添加真实服务器
[root@oe01 ~]# ipvsadm -a -t 192.168.200.170:80 -r 192.168.100.163:80 -m
[root@oe01 ~]# ipvsadm -a -t 192.168.200.170:80 -r 192.168.100.162:80 -m
# 查看
[root@oe01 ~]# 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.200.170:80 rr
-> 192.168.100.162:80 Masq 1 0 0
-> 192.168.100.163:80 Masq 1 0 0
这样LVS就配置好了,我们来解释一下参数
- 第一步添加服务里面的参数解释
- -A : 创建一个虚拟服务(service)
- -t :指定协议为tcp 地址为192.168.200.170:80,这个就是对外提供服务的地址+端口,如果是UDP的话就是 -u
- -s :指定工作模式为轮询,rr就是轮询
- 第二步的参数:
- -a:这是是小写a,指定的是添加一个服务器(server)
- -t:这个还是与之前的一样,可以换一个理解方式,把他理解成服务名,因为在LVS里面这个就可以代表服务名
- -r:real-server真实服务器的地址+端口
- -m:指定NAT模式
到这里,我们LVS上的操作就做完了,然后我们需要到Nginx上配置
4.1.4 配置nginx
我们将2个nginx的index.html文件改为hello,nginx01
和hello nginx02
# 第一台nginx
[root@oe02 ~]# echo "hello nginx01" > /usr/share/nginx/html/index.html
# 第二台nginx
[root@oe03 ~]# echo "hello nginx02" > /usr/share/nginx/html/index.html
这样我们的Nginx就配置好了,但是你现在使用客户端去访问192.168.200.170
这个地址的话是出不来的,我们还需要给nginx配置网关,网关指向LVS的192.168.100.164
这个地址
4.1.5 配置网关
[root@oe02 ~]# ip route add default via 192.168.100.100 dev ens33
[root@oe03 ~]# ip route add default via 192.168.100.100 dev ens33
这样我们的配置也完成了,我们来使用客户端访问一下
4.1.6 访问集群
C:\Users\86156>curl 192.168.200.170
hello nginx01
C:\Users\86156>curl 192.168.200.170
hello nginx02
C:\Users\86156>curl 192.168.200.170
hello nginx01
C:\Users\86156>curl 192.168.200.170
hello nginx02
看这个命令提示符就可以看出来,我们访问已经被轮询到不同的节点上了,我们可以在LVS节点上看见连接
[root@oe01 ~]# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:04 TIME_WAIT 192.168.200.1:56457 192.168.200.170:80 192.168.100.162:80
TCP 01:04 TIME_WAIT 192.168.200.1:56455 192.168.200.170:80 192.168.100.163:80
TCP 01:02 TIME_WAIT 192.168.200.1:56453 192.168.200.170:80 192.168.100.162:80
TCP 01:05 TIME_WAIT 192.168.200.1:56458 192.168.200.170:80 192.168.100.163:80
到这里NAT模式就配置结束了
LVS介绍与配置的更多相关文章
- LVS 介绍以及配置应用
1.负载均衡集群介绍 1.1.什么是负载均衡集群 负载均衡集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据的处理能力.提高网络的灵活性和可用性 搭建负 ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- Linux负载均衡软件LVS之三(配置篇)
LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置. 一. Director ...
- 负载均衡软件LVS分析三(配置)
LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置. 一. Director ...
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...
- Linux centosVMware 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
一.负载均衡集群介绍 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做 ...
- LVS结合keepalived配置测试
LVS/DR + keepalived配置 注意:前面虽然我们已经配置过一些操作,但是下面我们使用keepaliave操作和之前的操作是有些冲突的,所以若是之前配置过DR,请首先做如下操作: 三 ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- python学习第二讲,pythonIDE介绍以及配置使用
目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...
随机推荐
- linux下的开机启动
使用systemctl命令,systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 据说在CentOS7.0后,不再使用service, ...
- SpringBoot-RSA加密
前言 最近由于工作业务的需要,需要对指定的字段信息进行非对称加解密:由于需要加密的内容过于庞大:自己执行程序会出现:Data must not be longer than 117 bytes 的异常 ...
- ABP-VNext 用户权限管理系统实战06---实体的创建标准及迁移
在apb-vnext的实体的创建中可以确实字段的长度.说明.对应的表.表中给字段加的索引 以项目中的订单表为例,如下: [Comment("订单主表")] [Table(" ...
- ShareConnect即将寿终正寝 Splashtop远程桌面会是最好的替代品
大家好,我是没有感情的翻译机器人,又见面了.同类产品ShareConnect即将退市,官方大大搞了个新闻稿.君叫臣翻,臣不得不翻.------没有感情的分割线------ShareConnect的使用 ...
- OpenNESS & OpenVINO Demo 部署
目录 文章目录 目录 部署架构 部署 Edge Controller 基础配置 配置 Proxy 配置防火墙 Install necessary package Install MySQL Insta ...
- PageOffice在线打开编辑Word文件获取指定区域的数据并且保存整篇文件
一.首先在word文件中给需要在后台获取数据的区域设置以PO_开头的书签. 二.通过pageoffice在线打开文件并编辑保存.有两种打开文件的模式 1.普通编辑模式(docNormalEdit) 普 ...
- 【活动访谈】发力数字基座 推动物联创新—航天科技控股集团AIRIOT4.0平台发布会活动专访
近日,由航天科技控股集团股份有限公司主办的"数字基座 智慧物联-AIRIOT4.0平台发布会"在北京圆满落幕.航天三院科技委总工程师王连宝应邀出席本次会议并接受媒体采访,共同参与访 ...
- 【漏洞复现】用友NC-Cloud系统uploadChunk存在任意文件上传漏洞
阅读须知 花果山的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站.服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作.利用此 ...
- MySQL查询某个字段含有字母数字的值
1.正则表达式(REGEXP) 查询MySQL表中某个字段含有字母和数字的值,可以使用正则表达式(REGEXP)来匹配这样的模式.在MySQL中,正则表达式是一个强大的工具,可以用来搜索和匹配字符串中 ...
- flutter开发环境的搭建
下载flutter开发包,有670M左右. github的下载地址:https://github.com/flutter/flutter 或者官方下载地址:https://flutter.dev/do ...