了解LVS,配置LVS

news2024/9/20 14:55:32

项目一、LVS

1.集群Cluster

Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统

LB:负载均衡

HA:高可用

HPC:高性能计算

2.分布式

分布式是将一个请求分成三个部分,按照功能拆分,使用微服务,分布式的静态资源放在不同的存储集群上

3.集群和分布式

集群:是同一个业务系统,部署在多台主机上,且这多台主机实现的功能没有差别,都能独立完成访问请求,且数据代码都是一样的

分布式:一个业务被拆成多块,部署在多台主机上,每一个主机完成一块内容

而一般来说集群和分布式是放在一起去使用的

4.lvs功能介绍

lvs:负载调度器,内核集成

四层与七层的区别:lvs只有四层(四层负载),最多只到传输层(端口管理),它可以mac地址以及ip和端口,也就是说lvs无法将请求数据报文拆开看里面的访问请求,也就无法知道是动态还是静态,无法进行调度

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

nat模式客户的ip不变要变的是目的地址的ip

首先准备四台主机,分别做lvs,以及realserver(三台)

VS(负责调度)根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

VS:调度器

RS:后端真实主机

CIP:客户IP

VIP:客户访问LVS的接口IP

DIP:lvs访问内部的接口IP

5.1lvs配置

添加两块网卡,一块nat,一块仅主机

然后给两块网卡配IP,nat网卡(eth0)配172.25.254.100,仅主机(eth1)配192.168.0.100,然后进入eth1的网卡配置文件将网关以及dns删除

然后打开lvs中的核路由功能

[root@lvs ~]# sysctl -a | grep ip_forward

-a:显示所有的内核参数

将过滤出的net.ipv4.ip_forward = 1写入/etc/sysctl.conf中

执行sysctl -p生效

在lvs中安装lvs软件

dnf install ipvsadm -y

ipvsadm -Ln#查看策略

此时的ipvsadm的策略文件是没有东西的,cat /etc/sysconfig/ipvsadm,于是我们要自己写

ipvsadm -A -t 172.25.254.100:80 -s rr#-A:增加虚拟服务器,-t:协议,客户访问100的时候开始调度,-s:指定调度的算法,rr:轮循算法

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m#-m:模式是nat,-r:realserver,-w:指定权重

pvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

5.2原理

客户把流量发到了vip上,vip得到流量后去读取lvs规则,看是给谁的,给自己的则去看调度算法,按照调度算法,对后端的RS进行调度,rr轮循调度,数据流量通过DIP扔向RS1一次,RS2一次,扔过来后RS看到请求,RS此时看到的请求时DIP访问,但源IP不会改变,还是cip,但rs无法扔向cip于是它只能扔向自己的网关,网关会处理数据请求最后通过VIP发到真实的客户

保存策略

ipvsadm-save > /etc/sysconfig/ipvsadm

5.3两台RS主机配置

将这两台主机改为仅主机的网卡

配置ip地址分别为192.168.0.10和192.168.0.20,然后进入网卡配置文件将网关改为192.168.0.100然后重启网卡服务nmcli connection reload;nmcli connection up eth0,然后在这两台主机下载httpd,并开器服务,在默认发布目录/var/www/html下写要发布的内容写在index.html

6.lvs-DR模式

减轻VS的压力

6.1dr的工作模式详解

ant模式下调度器压力过大,于是RS不再由vs(调度器)返回数据,而是直接返回给客户机

DR模式数据传输过程

LVS以及RS1、RS2都需要配置vip,LVS的VIP用于响应客户端请求,RS1和RS2的vip用于将数据传给后端主机,在进行配置时,要将RS1和RS2中的arp广播关闭,抑制arp请求(不关闭的话就有三个vip响应请求)

6.2LVS-DR模式的实现

首先准备5台虚拟机,一台为client,一台为router,一台为LVS,剩下两台为Realserver

client配置

配置ip地址为172.25.254.200,编辑网卡配置文件vim /etc/NetworkManager/system-connection/eth0.nmconnection,修改网关为172.25.254.100

router配置

先给路由器添加一块仅主机的网卡,然后分别给这两块网卡配置iP,nat的ip为172.25.254.100,仅主机的IP是192.168.0.100,然后将仅主机网卡的网关删除,IP配置完后,要开启内核中的路由功能

sysctl -a | grep ip_forward#找到IP转发功能

vim /etc/sysctl.conf #将net.ipv4.ip_forward = 1(开启IP转发功能)写入设置内核参数的配置文件

Realserver配置

配置rip为192.168.0.10与192.168.0.20网关为192.168.0.100,并在这两台realserver中关闭arp请求

[root@webs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #关闭arp请求

[root@webs1 ~]# echo 2> /proc/sys/net/ipv4/conf/all/arp_announce

[root@webs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@webs1 ~]# echo 2> /proc/sys/net/ipv4/conf/lo/arp_announce

然后分别在这两台主机中添加vip:ip a a 192.168.0.200/32 dev lo(环回用32)

7.TUN模式

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部 (源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP 是CIP)

7.1TUN模式数据传输过程

1.客户端发送请求数据包,包内有源IP+vip+dport

2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含 TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1

3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIP(CIP) +port,响应数据包通过网络直接回传给client

7.3TUN模式特点

1.DIP, VIP, RIP都应该是公网地址

2.RS的网关一般不能指向DIP

3.请求报文要经由Director,但响应不能经由Director

4.不支持端口映射

5.RS的OS须支持隧道功能

8.fullnet模式

fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发 CIP --> DIP VIP --> RIP

1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP

2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client

3.请求和响应报文都经由Director 4.支持端口映射

9.lvs算法

9.1lvs静态调度算法

弊端:服务器配置不一致,可能会导致某一个服务器崩溃(一个服务器很忙,一个服务器很闲)

session:客户端与服务建立的沟通,保存在服务器

1.RR:roundrobin轮询rs分别调度,当rs配置有差别时不推荐(你一个我一个)

2.WRR:weight rr加权轮询(权重:给谁多点给谁少点)

3.SH:source Hashing对源进行Hash,将来自于同一个IP地址的请求始终发往第一次挑中的rs,从而实现会话绑定(对源地址进行Hash运算运算出一个值后LVS的session就会记录下来,来源的ip经过运算和记录的Hash一致就打到同一个服务器上)

4.DH:destinationHash,目的地址Hash,第一次轮询调度至rs,后续将发往同一个目标地址的请求始终发送至第一次挑中的rs,典型使用场景是正向代理缓存场景中的负载均衡(对目的地址进行Hash,同一个目的地址调度到同一个主机)

9.2lvs动态调度算法

1.LC(最少链接):活动链接数x256+非活动链接数

2.WLC(权重最少链接):默认调度方法=活动链接数x256+非活动链接数/weight(第一次可能打到性能不好的服务器)

3.SED(初始链)接高权重优先):(活动链接数+1+非活动链接数)x256/weight(虽然第一次能打到好的服务器但是经过几轮后它还是会持续将流量打到这个服务器)

4.NQ:第一轮均分,后续SED

5.LBLC:动态DH算法,根据负载均衡实现正向代理

6.LCLBR:带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

7.FO(灰度发布):当服务器承接大量链接,我们可以对服务器进行过载标记,那么vs调度器就不会把链接调度到有过载标记的主机中(当服务需要更新时,可以通过污点标记,使流量前往下一个服务器)

8.OVF

10.lvs-火墙mark标记解决调度问题

10.1为什么打标记

在lvs中加入443端口的集群,加入后现在有两个集群80和443,且这两个集群调度的主机时同一个,那么这个调度时有问题的,比如现在访问80的集群调度到10,而访问443应该调度到20上,然而它并没有这样去调度,根本原因是因为这两个是分开控制的,所有我们可以通过火墙标记来解决轮询调度问题

10.2参数说明

iptables -t mangle(附加说明) -A PEROUTING(表示在进厂前就要做的事) -d(目的地) $vip -p(协议) $tcp/Udp -m multiport(为多个端口打上一个标记,把这个端口变为一个组,访问这个组里的端口视为访问同一个标记) --dports $port1,port2 -i MARK --set-mark $number

10.3配置

首先在后端服务器rs1,rs2安装mod_ssl(ssl加密模块让rs支持https)

yum install mod_ssl -y

安装完后给这两台rs重启httpd服务

在lvs中为端口做标记

iptables -t mangle -A PREROIUTING -d 192.168.0.200 -p tcp -m muliport --dports 80,443 -j MARK --set-mark 66#打标记

iptables -nL#查看有没有打上标记

接下来进行调度

先清空ipvsadm -C

ipvsadm -A -f 66 -s rr

ipvsadm -a -f 66 -r 192.168.0.10 -g(直连路由)-i(隧道)-m(nat)

ipvsadm -a -f 66 -r 192.168.0.20 -g

做完后就可以进行测试了

11.lvs持久链接(session会话问题解决)

主要是为了在访问一个网址时,za会话会中断导致数据丢失

解决方案

对调度进行时间设定,不管用什么算法,在同一时间内的数据打到同一台主机,这个时间过了以后就打到另一台主机上

配置

在lvs调度器中设定

[root@lvs ~]# ipvsadm -E -f 66 -s rr -p [3000]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL的InnoDB的页里面存了些什么 --InnoDB存储梳理(三)

文章目录 创建新表页的信息新增一条数据根据页号找数据信息脚本代码py_innodb_page_info根据地址计算页号根据页号计算起始地址 主要介绍表空间索引页里面有哪些内容,数据在表空间文件里面是怎么组织的 创建新表页的信息 CREATE TABLE test8 (id bigint(20) NOT N…

Nginx Web UI 部署

目录 1. 安装Docker 2. 拉取镜像 3. 启动程序 4. 访问测试 1. 安装Docker 准备一台虚拟机,关闭防火墙和selinu,进行时间同步 下载docker并配置加速器 # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persisten…

8B 端侧小模型 | 能力全面对标GPT-4V!单图、多图、视频理解端侧三冠王,这个国产AI开源项目火爆全网

这两天, Github上一个 国产开源AI 项目杀疯了!一开源就登上了 Github Trending 榜前列,一天就获得将近600 star。 这个项目就是国内大模型四小龙之一面壁智能最新大打造的面壁「小钢炮」 MiniCPM-V 2.6 。它再次刷新端侧多模态天花板&#xf…

Cobalt Strike 4.8 用户指南-第一节-Cobalt Strike介绍及安装

一、欢迎使用Cobalt Strike Cobalt Strike 是一个用于对手模拟和红队行动的平台。用于执行有针对性的攻击并模拟高级威胁行为者的后渗透行动。本节介绍 Cobalt Strike 功能集支持的攻击过程。本手册的其余部分将详细讨论了这些功能。 # 概述 图中的 Intrumentation & Tel…

数据重塑之数据去重

下面内容摘录自: 4章7节:用R做数据重塑,数据去重和数据的匹配-CSDN博客文章浏览阅读23次。数据重塑是数据分析和数据清洗中的重要步骤,其中包括数据去重和数据匹配。理解这两个概念以及它们的实现方法对于有效处理和分析数据至关重…

告别转换难题,四款PDF转CAD工具分享

CAD很难搞,将PDF转换为CAD更难搞,想要快速且完整的将PDF文件转换为CAD,自然不是靠一点点的复制重做,直接用PDF转CAD工具就能搞定。那用什么工具呢?我这就给你们捋捋几个神器是怎么帮我们搞定这个难题的。 1.PDF365在线…

milvus helm k8s开启权限管理,attu管理

version:2.4.5 apiVersion: v1 kind: ConfigMap metadata: name: my-release-milvus 该configMap 添加 ,然后重启milvus 集群可生效 user.yaml: |-common:security:authorizationEnabled: true或者直接在value.yaml 中添加该配置 extraConfigFiles:user.yaml: |com…

程序员 10 个摸鱼神器分享给大家

问:程序员该不该上班摸鱼? 答:认真上班是劳动换取报酬,上班摸鱼才是从老板那赚钱。 曝光,程序员的 10 个摸鱼神器 摸鱼一时爽,一直摸一直爽 方案一:实物摸鱼方案二:命令行斗地主方案…

抖音用户主页视频数据爬虫详解(点赞,收藏,分享等)

一. 首先进行抓包分析,,,随便找个主页,f12,关键词搜索,发现这个包是以post开头 二.查看请求参数: 我们复制curl在spiderbox里面快速形成请求 对headers,params进行尝试删减&#x…

Linux下用gdb找到cpu占用率最高的线程

我们调试程序的时候,有时候会发现当程序运行时,会出现cpu占用率很高的情况。 一般情况下,程序执行时,cpu占用率比较高的话,就会影响其它程序的执行,所以就需要对程序进行优化,查找程序运行时&a…

亚马逊云科技产 Amazon Neptune 图数据库服务体验

目录 图数据库为什么使用图数据库Amazon Neptune实践登陆创建 S3 存储桶notebook图神经网络快速构建加载数据配置端点Gremlin 查询删除环境删除 S3 存储桶 总结 图数据库 图数据库是一种专门用于存储和处理图形数据结构的数据库管理系统。图形数据结构由节点(Node&…

轻松打造:基于本地知识库的私有GPT助手定制教程”

背景知识 众所周知,目前大模型 LLM 的能力已经非常强大,chatgpt 已经可以很好的解决通用型问题,但是对于垂直专业领域的问题处理的还不够好。如果要利用 LLM 大模型根据已有的特定领域的知识,推理出该领域特定问题的答案&#xf…

node.js part1

Node.js Node.js 是一个跨平台JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序。作用:使用Node.js编写服务器端程序 编写数据接口,提供网页资源浏览功能等等 前端工程化:为后续学习Vue和React等框架做铺垫. …

51单片机学习记录-数码管操作

这里实现了静态数码管的显示。51单片机一共有可以显示4个数字&#xff0c;可以通过控制P2(4-2)的端口选择8个数字显示器中的一个显示数字&#xff0c;控制P0端口写入显示的数值信息。将操作的逻辑使用了函数Nixie进行了封装。 #include <8051.h>unsigned char NixieTabl…

PHP汽车保养维修信息管理系统小程序源码

&#x1f697;爱车守护神器&#xff01;揭秘“汽车保养维修信息管理系统”全攻略&#x1f50d; &#x1f525;【开篇揭秘&#xff1a;为何你需要它&#xff1f;】&#x1f525; 在这个快节奏的时代&#xff0c;爱车不仅是代步工具&#xff0c;更是生活品质的象征。但你是否曾…

C++_基本语法笔记_继承和多态

继承 思想与Java差不多 基本语法 语法&#xff1a;class 子类 : 继承方式 父类 继承方式 将访问权限&#xff0c;上升到保护权限&#xff0c;上升到更高的私有权限 继承哪些部分 继承过程中&#xff0c;即使权限不能访问&#xff0c;也会全部继承下来&#xff08;非静…

Liunx搭建Rustdesk远程桌面服务

1、环境准备 Linux&#xff1a;centos7.9 rustdesk server安装包 很多新服务器并没有 wget 和unzip 可以通过yum自行安装下&#xff0c;如果系统中有wget但不能使用&#xff0c;直接卸载重装即可。 yum install wget wget --no-check-certificate https://github.com/rust…

商家福音!阿里巴巴1688又一线下选品中心落地!

7月31日&#xff0c;阿里旗下1688台州选品中心正式开园。后续1688将在核心产业带陆续开设线下选品中心。选品中心的运营模式为“四位一体”&#xff1a;政府搭台&#xff0c;1688提供技术、销售渠道和数字化能力&#xff0c;本地产业链的链主负责运营&#xff0c;本地源头工厂入…

跟着iMeta学做图|ggplot2绘制多个饼图展示菌群物种组成

原始教程链接&#xff1a;https://github.com/iMetaScience/iMetaPlot/tree/main/221017multi-pieplot 写在前面 饼图 (Pie Plot) 在微生物组研究中可以用来展示菌群物种组成&#xff0c;可以起到与堆叠柱状图相同的展示效果。本期我们挑选2022年4月5日刊登在iMeta上的The imp…

浅谈大模型私有化+精调:面向垂直行业与特定场景之需

今天将继续“AI技术”系列&#xff0c;探讨大模型的私有化和精调&#xff0c;以便让预训练的通用模型更好地适应特定的任务或行业需求。 当然&#xff0c;从产品经理的视角出发&#xff0c;我们不会非常深入&#xff08;鄙人能力也有限&#xff09;&#xff0c;而是建立相关的…