lvs使用

1.前言

LVS(Linux Virtual Server)是一个基于 Linux 内核的负载均衡器,用于分发网络流量和将请求转发给后端服务器。LVS 提供了多种负载均衡算法和转发模式,以满足不同场景和需求的负载均衡需求,在LVS中定义虚拟服务的VIP(Virtual IP)和端口是为了将客户端的请求引导到负载均衡器,并进行负载均衡和请求转发,虚拟服务的VIP是一个虚拟的IP地址,对客户端而言,它是服务的入口地址。客户端将请求发送到虚拟服务的VIP地址,而不是直接发送到后端服务器的实际IP地址。这样,负载均衡器可以根据定义的负载均衡算法,将请求转发给后端服务器,实现负载均衡和流量分发的功能

2.lvs功能

LVS 提供了三种负载均衡的转发模式

NAT 模式(Network Address Translation):在LVS的NAT模式中,当客户端发送请求时,请求经过负载均衡器后,负载均衡器会对请求进行地址转换,并将请求转发给后端服务器。后端服务器处理请求后,将响应返回给负载均衡器,负载均衡器再将响应转发给客户端。这种模式下,负载均衡器扮演了中间转发角色,需要处理请求和响应的转发和转换,既要处理请求的接入,又要处理请求的响应,会存在较大性能瓶颈

DR 模式(Direct Routing):在LVS的DR模式中,负载均衡器通过修改网络的ARP表,将客户端请求直接路由到后端服务器。后端服务器直接与客户端进行通信,将响应直接返回给客户端,而不需要经过负载均衡器。在这种模式下,负载均衡器主要负责请求的路由和负载均衡,而不参与实际数据包的转发和响应,因为只负责转发消耗的资源小,因此性能高,存在的瓶颈小

TUN 模式(Tunneling):负载均衡器在网络层上对请求进行封装和解封,将请求转发给后端服务器,限制比较大,实际中较少使用

DR模式相对于NAT模式具有以下优势:

减少负载均衡器的工作量:DR模式下,负载均衡器不需要处理请求和响应的转发和转换,可以减轻负载均衡器的负担,提高性能和可扩展性

减少延迟:由于响应直接由后端服务器返回给客户端,无需经过负载均衡器的中转,可以减少延迟,提高响应速度

可扩展性:DR模式允许将负载均衡器和后端服务器分别部署在不同的子网中,提供更高的可扩展性和灵活性

lvs负载均衡策略

轮询(Round Robin):这是最常见的负载均衡策略之一。每个新的请求按照顺序分发给后端服务器。当所有后端服务器都参与负载均衡时,请求将按照相等的权重轮流分发给它们。这种策略适用于后端服务器配置相似、负载均匀的情况

加权轮询(Weighted Round Robin):类似于轮询策略,但每个后端服务器分配一个权重值,根据权重值分配请求。具有较高权重值的服务器将获得更多的请求。这个策略适用于后端服务器的性能不同,希望按照性能分配负载的情况

最少连接(Least Connection):根据后端服务器的当前连接数来选择最少连接的服务器来处理新请求。这种策略可以确保负载均衡,使得请求分布更加均匀,适用于长连接或有长时间处理请求的场景

源IP散列(Source IP Hash):根据客户端的源IP地址对请求进行散列,并将其路由到相应的后端服务器。相同的源IP地址将始终被路由到相同的服务器上,这对于需要保持会话一致性的应用程序很有用

最快响应时间(Least Response Time):根据后端服务器的响应时间来选择最快响应的服务器来处理新请求。这种策略尝试将请求发送到能够更快响应的服务器,以提供更好的用户体验

3.ipvsadm工具介绍

ipvsadm 是一个管理 Linux Virtual Server (LVS) 内核模块的命令行工具。它允许你配置和管理 IP 负载均衡器

-A--add-service:添加一个新的负载均衡服务

-C--clear:清除所有现有的负载均衡服务

-D--delete-service:删除指定的负载均衡服务

-E--set:设置负载均衡服务的属性

a--add-server:向负载均衡服务中添加一个后端服务器

-d--delete-server:从负载均衡服务中删除指定的后端服务器

-g--gatewaying:将负载均衡服务设置为网关模式

-e--expire-nodest:设置后端服务器的超时时间

-m--masquerading:将负载均衡服务设置为伪装模式

-r--scheduler:指定负载均衡服务的调度器算法

-w--weight:设置后端服务器的权重

-L--list:列出所有负载均衡服务及其相关配置

-S--save:将当前配置保存到文件

-R--restore:从文件中恢复配置

也可以通过以下命令查看

ipvsadm --help

4.lvs使用

以下就通过使用nat模式和dr模式分别来展示lvs的使用,负载均衡策略这里我们统一使用轮询模式

主机信息

nameipportservice
A10.1.60.115、10.1.60.116(虚拟地址)80lvs
B10.1.60.11280nginx
C10.1.60.11480nginx

nat模式

 

所有主机均关闭selinux和防火墙

在A主机执行以下配置

开启内核转发

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

执行以下命令使配置生效

sysctl -p

增加虚拟网卡(模拟真实环境中的外网ip)

ifconfig ens160:1 10.1.60.116/24

需要删除的话可以使用down参数

ifconfig ens160:1 down

安装ipvsadm工具,用于配置ipvs规则

yum -y install ipvsadm

配置lvs负载均衡服务

ipvsadm -A -t 10.1.60.116:80 -s rr

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.114:80 -m

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.112:80 -m

-m:配置为nat模式   -r:配置后端真实地址 -t:配置虚拟地址 -s:配置负载均衡策略为rr轮询策略

查看lvs策略

 在B、C主机执行以下配置

将网卡的网关配置为A主机的地址,即10.1.60.115

 vi /etc/sysconfig/network-scripts/ifcfg-ens160 

 重启网络服务

systemctl restart network

查看路由信息

route -n

更改nginx的默认页面

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak

D主机则将C改为D即可

echo "this is C" >> /usr/share/nginx/html/index.html

启动nginx服务并配置开机启动

systemctl start nginx

systemctl enable nginx
 

使用其它主机访问可以发现访问正常,不能用同网段的主机访问

RD模式

所有主机均关闭selinux和防火墙

在A主机执行以下配置

配置一个虚拟网卡

ifconfig ens160:1 10.1.60.116/24

ip add

配置lvs规则

ipvsadm -A 10.1.60.116:80 -s rr                     #配置负载均衡服务

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.112:80 -g     #为负载均衡服务添加后端的转发地址

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.114:80 -g     #为负载均衡服务添加后端的转发地址

-g:配置为DR模式   -r:配置后端真实地址 -t:配置虚拟地址 -s:配置负载均衡策略为rr轮询策略

查看lvs规则

ipvsadm -Ln

在B、C主机执行以下配置

增加虚拟网卡配置为A主机的虚拟网卡地址,但是只用于接收客户数据,不能被外部访问,在此就引用lo网卡配置

ifconfig lo:1 10.1.60.116 netmask 255.255.255.255

ip add

优化内核arp参数配置

vi /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

执行以下命令使配置生效

sysctl -p

配置路由

route add -host 10.1.60.116 dev lo:1

route -n

 在其它主机访问测试

curl 10.1.60.116

可以看到访问虚拟地址可以正常被轮询转发到后端的服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/37560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023- itwangyang - mac mysql 终端启动命令

在mac上使用mysql终端进行操作时,需要先启动mysql服务。以下是启动mysql服务的命令: sudo /usr/local/mysql/support-files/mysql.server start执行该命令后,会出现一些提示信息,等待一段时间后mysql服务就启动成功了。 接下来&…

SSM框架最新整合保姆级教程(IDEA版)

SSM框架最新整合保姆级教程(IDEA版) 一、环境要求 ​ 环境: IDEAMySQL 5.7.19Tomcat 9Maven 3.6 要求: 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识; 完整代码:…

通信算法之177: 基于Matlab的OFDM通信系统关键基带算法设计7-流程

一. 接收算法流程 1.1 粗同步(分组检测) 1.2 载波同步(精细频偏估计) 多普勒频偏和晶振。频率偏差,会破坏子载波间的正交性,且这种频差对相位的影响还具有累加性。 1.3 精同步(OFDM起始&…

【Spring Cloud系列】Hystrix应用详解

【Spring Cloud系列】Hystrix应用详解 文章目录 【Spring Cloud系列】Hystrix应用详解一、概述二、什么是Hystix三、Hystrix作用四、Hystrix设计原则五、Hystrix实现原理5.1 隔离5.2 熔断5.3 降级服务降级主要用于什么场景呢实现服务降级需要考虑几个问题降级分类 5.4 缓存请求…

如何使用3D转换工具HOOPS Exchange与LibConverter进行流缓存导出?

如果您正在使用HOOPS Communicator,您可能想在生成流缓存模型之前利用HOOPS Exchange的高级功能和转换选项。 申请HOOPS试用 HOOPS中文网 如何使用 如您所知,LibConverter是HOOPS Communicator软件包中包含的一个简单的API,conver…

单片机第一季:零基础8——蜂鸣器

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 想要压电式蜂鸣器发声&…

spring AOP中pointcut表达式详解

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

从零开始理解Linux中断架构(19)--中断线程化irq_thread

前面一节讲到的中断流处理流程是在hard_irq 流程上,工作在中断堆栈上。还有一种情况是使用中断线程的情形。request_threaded_irq参数中有两个处理函数handler,thread_fn是有区别的。handler主中断处理例程,运行hard_irq 流程上。而如果驱动程序填写thre…

Java程序员需要掌握的前端知识(一)

对于前端知识,需要进一步巩固和加强,进入企业之后,要具备一定的接口调试,参数接收的能力,以及单体页面的开发,这里我学习一下前端知识巩固一下自身的技术栈和水平。本次笔记是跟学黑马的同名课程&#xff0…

Bash 有效电话号码

193 有效电话号码 给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个单行 bash 脚本输出所有有效的电话号码。 你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。&…

通识强化学习,初步了解强化学习的运行规则和估值方法

1.强化学习的发展及应用现状 1.1.强化学习的由来 目前,大家认为强化学习(Reinforcement Learning, RL)的来源与两个领域密切相关:即心理学的动物试错学习和最优控制的优化理论。 这里都是有相应的共性的,在environme…

HCIP第七天

题目 拓扑图 1.所有路由器各自创建一个环回接口,合理规划IP地址 测试 2. R1-R2-R3-R4-R6之间使用OSPF协议,R4-R5-R6之间使用RIP协议 3. R1环回重发布方式引入OSPF网络 4. R4/R6上进行双点双向重发布 将OSPF中的环回接口改成broadcast 因为华为默认环回接…

阿里云AliYun物联网平台使用-客户端API获取设备传感数据

一、前言 上一篇文章中,已经实现了虚拟数据上云,本文我们将进行上位机客户端的开发,即通过调用阿里云IOT物联网云平台的SDK,开发能获取传感器的遥感数据。 二、云平台操作 调用API需要用户的AccessKey Secret,这意味着…

KaiwuDB CTO 魏可伟:多模架构 —“化繁为简”加速器

以下为浪潮 KaiwuDB CTO 魏可伟受邀于7月4日在京举行的可信数据库发展大会发表演讲的实录,欢迎大家点赞、收藏、关注! 打造多模引擎,AIoT数据库探索之路 01 何为“繁”? 工业 4.0 时代, 物联网产业驱动数据要素市场不…

国产芯片——单片机32位mcu的应用

随着物联网与人工智能和智能制造的发展,单片机作为嵌入式系统的核心控制器,在各类行业应用中占据重要位置。其中32位MCU在芯片设计、制造工艺、封装技术上等取得显著突破,以高性能的技术条件被广泛应用在智能物联等行业的方案开发中。今天我们…

windows安装mysql8.0.23版本成功示例-免安装

windows安装mysql8.0.23版本成功示例 一.通过mysql-installer-*.msi安装包的方式1.安装准备1.1 官网下载地址1.2 选择合适的版本点击下载 2.安装mysql 二.通过mysql-8.0.23-winx64.zip压缩包免安装方式1.安装准备1.1 下载官网压缩包1.2 解压后配置文件my.ini信息1.3 配置my.ini…

java ajax

1.ajax定义:异步刷新技术 2.ajax语法 3.ajax实战 在不需要点击刷新按钮时达到局部刷新显示,如下图所示 步骤一:创建工程/包/js 步骤二:数据库/表创建 步骤三:实体类 步骤四:UserDao package cn.kgc.dao;import cn…

Linux下JDK版本与安装版本不一致问题

目录 一. 🦁 前言二. 🦁 操作流程三. 🦁 总结四. 🦁 Happy Ending 一. 🦁 前言 最近重新安装了centos7.9,针对以前遇到的Java版本不一致的情况, 提出了另一种方法,该方法简单易行,容易理解。 二. 🦁 操作…

银行安全用电监管平台可行性研究及解决方案

2017年4月26日,国务院安全生产委员会印发《国务院安全生产委员会关于开展电气火灾综合治理工作的通知》(安委〔2017〕4号),强调用三年时间综合治理电气火灾工作,提高社会单位发现和处置消防电气安全隐患能力&#xff0…

vue2 element-ui el-cascader地址省市区分开单独写

使用 npm 或 yarn 安装 element-china-area-data 包&#xff1a; npm install element-china-area-data 在你的代码中导入 element-china-area-data import { regionData } from element-china-area-data let that; 完整代码 <template><div><el-form ref&quo…