运维学习————LVS集群和Keepalived+LVS高可用

news2024/11/15 12:12:26

目录

官网:LVS中文官网

一、概念

二、组成及软件工作层次图 

​编辑 三、整体架构

四、名词解释

五、三种工作模式 

1、LVS-NAT

2、LVS-TUN

 3、LVS-DR

六、DR模式的实现

1、克隆出LVS,配置虚拟IP

2、配置Nginx的虚拟IP

Nginx1的配置

Nginx2的配置

3、配置ARP行为 

3.1、什么是 ARP? 

3.2、什么是 arp_ignore?

3.3、什么是 arp_announce? 

4、添加路由 

5、搭建集群

5.1、添加一个虚拟服务,使用轮询调度算法 (rr) 将请求分发到后端服务器

 5.2、添加真实服务器

 七、Keepalived+lvs高可用

LVS-2上操作

master配置

LVS-1上操作

backup配置

测试


官网:LVS中文官网

一、概念

 LVS(Linux Virtual Server) 是 Linux Virtual Server 的简写,意即Linux虚拟服务器,是一个基于Linux操作系统的虚拟服务器技术,用于实现负载均衡和高可用性。1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一

二、组成及软件工作层次图 

LVS由2部分程序组成,包括ipvs和ipvsadm     adm=admin

 

IPVS:LVS 是一个负载均衡框架,它定义了如何使用负载均衡器来分发网络请求的基本规则和架构。IPVS 是 LVS 中实现负载均衡的核心模块,它负责具体的负载均衡任务。 安装于 Director Server(相当于代理服务器) 上,并在 Director Server  上虚拟出一个 VIP(Virtual IP)。 用户的访问请求通过 VIP 到达负载调度器,然后由负载调度器从 Real Server  列表中选取一个服务节点响应用户的请求。

ipvsadm是一个Linux内核中的IP负载均衡工具,它对应的用户控制程序也是ipvsadm。ipvsadm是IPVS(IP Virtual Server)的管理器,用于配置和管理Linux内核中的IPVS负载均衡器。

 
三、整体架构

 LVS的整体架构主要包括负载均衡器(Load Balancer)、后端服务器(Real Server)和客户端三部分。客户端的请求首先到达负载均衡器,然后由负载均衡器根据一定的调度算法将请求转发到后端服务器进行处理,处理结果再返回给客户端

 

四、名词解释

VIP:虚拟IP地址(Virtual  Ip Address)

RIP:真实IP地址(Real Server Ip Address)

DIP:Director的IP地址(Director Ip Address)用于连接内外网络的IP地址,物理网卡上的P地址。是负载均衡器上的IP。

CIP:客户端主机P地址(Client Ip Address)

五、三种工作模式 

官网:三种工作模式

1、LVS-NAT

 LVS-NAT(Network Address Translation):在该模式下,负载均衡器不仅需要修改请求报文的目标地址,还需要修改响应报文的源地址,适用于小规模集群

详解:

客户端发起请求

1)客户端 发送一个请求到虚拟服务 IP (VIP) 地址,例如 192.168.1.10。

2)负载均衡器 收到这个请求后,将数据包的目标 IP 地址从 192.168.1.10 修改为其中一个真实服务器的 IP 地址,比如 192.168.1.21。同时,负载均衡器还会记录这次修改,以便后续处理响应时能够正确地将数据包发回给客户端。

3)真实服务器 收到请求后处理数据并生成响应。

服务器响应

1)真实服务器 将响应发回给负载均衡器,此时响应数据包的源 IP 地址是 192.168.1.21。

2)负载均衡器 收到响应后,将数据包的源 IP 地址从 192.168.1.21 修改为虚拟服务 IP 地址 192.168.1.10。

3)负载均衡器 最后将修改后的响应转发给原始的客户端。

总结

请求阶段:客户端 -> 负载均衡器 -> 真实服务器

请求时负载均衡器修改目标 IP 地址。

响应阶段:真实服务器 -> 负载均衡器 -> 客户端

响应时负载均衡器修改源 IP 地址

lvs可以处于公网     Real Server  可以是内网

2、LVS-TUN

LVS-TUN(IP Tunneling):又叫隧道模式。该模式通过IP隧道将请求转发到后端服务器,后端服务器直接将响应报文发回客户端,适用于地理位置分散的集群

请求过程和NAT一样,响应过程不再走LVS,直接给客户端。LVS的压力就降低。上行大,下行小,大大提高并发和吞吐量。但Real Server的IP需要暴露给公网,有安全隐患

 3、LVS-DR

 LVS-DR(Direct Routing):在该模式下,负载均衡器只修改请求报文的目标MAC地址,而不修改IP地址,后端服务器直接将响应报文发回客户端,适用于大规模集群。

和TUN相比,Real Server不会直接返回结果给客户端,而是通过Router中转后给客户端,这样Real Server的真实IP就不会暴露给公网  即支持高并发和解决了安全隐患问题。

下面就演示最好的DR模式  

六、DR模式的实现

实现LVS对nginx的负载均衡,因为当时当时nginx对tomcat实现了负载均衡,为了体现LVS的负载均衡,就和nginx使用,这样,就是可以实现对tomcat1-6的轮询,如果直接演示对tomcat的负载均衡的话,可能效果看不出来,因为当时为了方便1-3部署在了tomcat1,4-6部署在了tomcat2,并且端口不一样,所以显示不出来效果

1、克隆出LVS,配置虚拟IP

关闭网络管理服务

systemctl stop NetworkManager
systemctl disable NetworkManager

配置虚拟IP(虚拟ip为:192.168.37.189)

cp  /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens33:1

vim /etc/sysconfig/network-scripts/ifcfg-ens33:1
#保留5行:
BOOTPROTO="static"
DEVICE="ens33:1"
ONBOOT="yes"
IPADDR=192.168.37.189
NETMASK=255.255.255.0


#重启网络服务
service network restart
ip  a

让多出来的IP作为VIP

2、配置Nginx的虚拟IP

Nginx1的配置

cp /etc/sysconfig/network-scripts/ifcfg-lo  /etc/sysconfig/network-scripts/ifcfg-lo:1
vim /etc/sysconfig/network-scripts/ifcfg-lo:1

#刷新lo网卡
ifup lo


#查看
ip a

Nginx2的配置

和上面一样

3、配置ARP行为 

在Nginx1和Nginx2上同时进行

vim /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

3.1、什么是 ARP? 

ARP (Address Resolution Protocol) 是一种网络协议,用于将 IP 地址解析为物理地址(MAC 地址)。当你尝试与另一台设备通信时,如果只知道它的 IP 地址而不知道它的 MAC 地址,ARP 协议就会帮助你找到这个 MAC 地址

3.2、什么是 arp_ignore?

arp_ignore 是 Linux 内核中的一个配置参数,用于控制系统如何处理接收到的 ARP 请求。简单来说,它可以帮助系统决定是否应该忽略某些 ARP 请求,以提高安全性

arp_ignore 的类型:

        arp_ignore = 0:

        这是默认设置,意味着系统会正常处理所有接收到的 ARP 请求。

        arp_ignore = 1:

        当系统收到一个 ARP 请求时,如果这个请求的目标 IP 地址是本机的一个 IP 地址,但这个请求不是通过与该 IP 地址关联的接口接收到的,那么这个请求将被忽略。

 

通俗说:请求的目标地址到达对应的网络接口,才会响应请求

例如,如果你的电脑有两个网络接口 eth0 和 eth1,eth0 上有一个 IP 地址 192.168.1.10。如果一个 ARP 请求的目标 IP 地址是 192.168.1.10 但这个请求是通过 eth1 接收的,那么这个请求将会被忽略。

其他两个忽略

3.3、什么是 arp_announce? 

arp_announce 是 Linux 内核中的一个配置参数,用于控制系统的 ARP 行为,特别是系统何时发送 ARP 应答。简而言之,它告诉系统在什么情况下应该发送 ARP 应答,以提高网络的安全性和稳定性。

arp_announce 的类型

arp_announce = 0:

这是默认设置,意味着系统会正常发送 ARP 应答。

arp_announce = 1:

当系统收到一个 ARP 请求时,如果这个请求的目标 IP 地址是本机的一个 IP 地址,只有当这个请求是通过与该 IP 地址关联的接口接收到的,才会发送 ARP 应答。

通俗说:避免本网卡与不匹配的目标进行通告

例如,如果你的电脑有两个网络接口 eth0 和 eth1,eth0 上有一个 IP 地址 192.168.1.10。如果一个 ARP 请求的目标 IP 地址是 192.168.1.10 且这个请求是通过 eth0 接收的,那么系统会发送 ARP 应答。但如果这个请求是通过 eth1 接收的,则不会发送 ARP 应答。

arp_announce = 2:

在 arp_announce = 1 的基础上进一步增强了安全性。

除了要求 ARP 请求必须通过正确的接口接收到以外,还要求请求中的源 MAC 地址必须与接收该请求的接口的 MAC 地址相匹配,才会发送 ARP 应答。

通俗说:只在本网卡通告

继续上面的例子,如果一个 ARP 请求的目标 IP 地址是 192.168.1.10 并且是通过 eth0 接收的,但是如果这个请求中的源 MAC 地址与 eth0 的 MAC 地址不匹配,那么系统也不会发送 ARP 应答

4、添加路由 

route 命令用于查看和管理系统的路由表。route 命令非常强大,可以让你查看当前的路由表、添加新路由、删除现有路由等

现代 Linux 系统通常使用 ip 命令来管理路由

使用旧版route的话,需要先通过yun安装一个

yum install net-tools

 Nginx1和Nginx2上都操作

查看路由表

route -n

 

结果详解:

Destination: 目标网络地址。这是路由的目的地。如果是:0.0.0.0: 这个 IP 地址通常表示“任何”或“所有”目的地。

Gateway: 网关地址。这是到达目的地的下一跳地址。如果目的地是在同一子网内,则网关为 0.0.0.0。

Genmask: 子网掩码。用于确定目标网络的范围。

Flags: 标志位。这些标志描述了路由的特性:

U: 可用(Up)

G: 网关(Gateway),表示需要通过网关到达目的地

H: 主机(Host),表示目的地是一个特定的主机

R: 重定向(Redirect),表示该路由是从另一个路由器重定向过来的

D: 动态(Dynamic),表示该路由是动态路由协议发现的

M: 修改(Modified),表示该路由已被修改

!: 不可达(Unreachable),表示该路由不可达

>: 默认路由(Default),表示该路由是默认路由

!G: 禁用网关(No Gateway),表示该路由不使用网关

!C: 禁用缓存(No Cache),表示该路由不使用高速缓存

!A: 禁用广告(No Advertise),表示该路由不会被通告给其他路由器

Metric: 路由度量值。用于决定哪条路由被优先使用。数值越小,优先级越高。

Ref: 引用计数。表示有多少进程引用该路由。

Use: 使用次数。表示该路由被使用的次数。

Iface: 接口名称。表示该路由对应的网络接口

添加路由 

这条命令会添加一条路由规则,该规则指定所有发往 IP 地址 192.168.170.15 的数据包都应该通过本地环回接口 lo 的第二个别名 (lo:1) 发送

route add  -host   192.168.37.189  dev  lo:1

防止重启失效:

echo "route add  -host   192.168.37.189  dev  lo:1">>/etc/rc.local

查看/etc/rc.d/rc.local的权限,如果不是可执行文件,就无法启动执行。

#查看权限
ll /etc/rc.d/rc.local

#增加可执行权限

chmod +x /etc/rc.d/rc.local

rc.local 是 Linux 系统中一个传统的脚本文件,用于在系统启动完成时执行一些自定义任务。

删除操作:

route del  -host   192.168.37.189  dev  lo:1

5、搭建集群

在LVS-1上操作

#安装adm:
yum -y install ipvsadm

#查看帮助文档
ipvsadm -h

#查看集群信息
ipvsadm -Ln

-L 选项表示列出(List)当前配置的服务组和服务状态,

-n 选项则表示输出 IP 地址而不是主机名或域名

当前是空,需要搭建集群

5.1、添加一个虚拟服务,使用轮询调度算法 (rr) 将请求分发到后端服务器

ipvsadm -A -t 192.168.37.189:8088 -s rr

-A 添加服务器

-t   tcp服务器

-s  调度算法(负载均衡算法)

Round Robin (rr):

简称 RR,是最简单的调度算法之一,按顺序将请求分发到后端服务器。

Weighted Round Robin (wrr):

简称 WRR,是 RR 的加权版本,根据后端服务器的权重来分配请求。

Least Connections (lc):

简称 LC,将请求分发给当前连接数最少的后端服务器。

Weighted Least Connections (wlc):

简称 WLC,是 LC 的加权版本,根据后端服务器的权重和当前连接数来分配请求。

Destination Hash (dh):

简称 DH,根据客户端 IP 地址的哈希值来分发请求,以实现会话粘性。

Source Hash (sh):

简称 SH,根据源 IP 地址的哈希值来分发请求,以实现会话粘性。

Weighted Destination Hash (wdh):

简称 WDH,是 DH 的加权版本,根据客户端 IP 地址的哈希值和后端服务器的权重来分发请求。

Weighted Source Hash (wsh):

简称 WSH,是 SH 的加权版本,根据源 IP 地址的哈希值和后端服务器的权重来分发请求。

也可以删除:

ipvsadm -D -t 192.168.37.189:8081

 5.2、添加真实服务器

ipvsadm -a -t 192.168.37.189:8088 -r 192.168.37.183:8088 -g

ipvsadm -a -t 192.168.37.189:8088 -r 192.168.37.184:8088 -g

查看集群信息:

ipvsadm -Ln
查看发现,如果是处于同一个服务器上的,三个tomcat实例,比如8081,8082,8083,但是虚拟ip设置端口之后和真实服务ip进行映射,会覆盖掉8082,8083服务,,,,,所以负载均衡的时候,应保证服务在不同的服务器上

ipvsadm -Ln --stats

多次请求多次查看,会看到不同

会看到只有上行,没有下行,下行不过LVS服务器。也就是LVS-DR模式

通过虚拟ip访问:即可一致刷新页面,就会发现可以轮询访问tomcat

其它的细节就不演示,可以上网查查,比如超时时间什么的

 七、Keepalived+lvs高可用

利用LVS-1克隆一个LVS-2,这个时候虚拟IP:189.168.37.189只有LVS-2有效,你的可能是LVS-1上有虚拟IP,因为同一个网段下,IP不能重复

LVS-1:

LVS-2:

LVS-2上操作

安装keepalived

yum -y install   keepalived

现在虚拟IP在LVS-2上,所以咱用LVS-2做master

master配置

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_YSY
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.37.189
    }
}

#配置集群IP和端口  和nginx保持一致
virtual_server 192.168.37.189 8088 {
    #健康检查的时间  单位秒
    delay_loop 6
    #负载均衡算法rr是轮询
    lb_algo rr
    #LVS的模式
    lb_kind DR
    #会话持久化时间
    persistence_timeout 50
    #请求协议方式
    protocol TCP


    #真实服务器配置  和nginx对应
    real_server 192.168.37.183 8088 {
        #权重
        weight 1
    #健康检查
        #检查端口
        connect_port 8088
        #超时时长5秒
        connect_timeout 5
        #重试次数
        nb_get_retry 2
        #间隔时间
        delay_before_retry 3
    }


    #真实服务器配置  和nginx对应
    real_server 192.168.37.184 8088 {
        #权重
        weight 1
    #健康检查
        #检查端口
        connect_port 8088
        #超时时长5秒
        connect_timeout 5
        #重试次数
        nb_get_retry 2
        #间隔时间
        delay_before_retry 3
    }
}

LVS-1上操作

也同样安装一个keepalived

backup配置

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_SY
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.37.189
    }
}

virtual_server 192.168.37.189 8088 {
    #健康检查的时间 单位 秒
    delay_loop 6
    #负载均衡算法rr是轮询
    lb_algo rr
    #LVS的模式
    lb_kind DR
    #会话持久化时间
    persistence_timeout 5
    #请求协议方式
    protocol TCP

    
    #真实服务器配置  和nginx对应
    real_server 192.168.37.183 8088 {
        #权重
        weight 1
    #健康检查
        #检查端口
        connect_port 8088
        #超时时长5秒
        connect_timeout 5
        #重试次数
        nb_get_retry 2
        #间隔时间
        delay_before_retry 3
    }


    #真实服务器配置  和nginx对应
    real_server 192.168.37.184 8088 {
        #权重
        weight 1
    #健康检查
        #检查端口
        connect_port 8088
        #超时时长5秒
        connect_timeout 5
        #重试次数
        nb_get_retry 2
        #间隔时间
        delay_before_retry 3
    }
   
}

测试

一直刷新页面,会发现页面内容轮询,就没有问题

杀死LVS-1上的keepalived 看是否切换!测试和前面相同!

arp  -a  192.168.170.15

查看mac地址,看真正在哪台机子上

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

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

相关文章

Linux的一些实例

# 1.编写脚本,让用户输入firstname和lastname,最后在屏幕上显示your full name is: #!/bin/bash read -p "please input firstname:" var1 read -p "please input lastname:" var2 echo "your full name is:$var1…

【机器学习】线性回归的概念以及如何从最小二乘法推导到正规方程和实际线性回归实例(含python代码)

引言 线性回归是一种广泛应用于统计分析、经济预测、机器学习等领域的建模方法。它旨在通过自变量(解释变量)来预测因变量(响应变量)的值 文章目录 引言一、线性回归的概念1.1 线性回归的基本概念1.2 最小二乘法1.2.1 最小二乘法的…

来了!!!来了!!!--我需要在Docker中运行Java应用程序,但是没有Docker经验,你能给我一个简单的入门指南吗?

在Docker中运行Java应用程序的简单入门指南: 1.安装Docker 首先,确保你的系统上安装了Docker。你可以从Docker官网下载并安装适合你操作系统的Docker版本。 Windows10 安装 Docker,每个步骤作者亲测,细节记录最全教程 2. 编写D…

Sublime Text 配置 Terminal (CMD)

1. 安装package 按住 【ctrlshiftp】 , 在弹出的输入框中输入“install”,选择“install package”,回车,等待20秒左右 2. 安装terminal 按住 【ctrlshiftp】 , 在弹出的输入框中输入“install”,选择“install package”,回车,等待新弹窗出来&#…

稀土长余辉发光剂在陶瓷中的应用

稀土长余辉发光剂是一种特殊的发光材料,主要由稀土元素(如镧、铈、钕、铽、镝等)掺杂而成,基于电子陷阱机理,可实现长余辉效果,发光时间长达6-8小时。 稀土长余辉发光材料在陶瓷上的应用主要利用了其在激…

不相交的线(Lc1035)——动态规划

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足: nums1[i] nums2[j]且绘制的直线不与任何其他连线(非水平线)相…

论文翻译:ChatGPT passing USMLE shines a spotlight on the flaws of medical education

ChatGPT passing USMLE shines a spotlight on the flaws of medical education https://journals.plos.org/digitalhealth/article?id10.1371/journal.pdig.0000205 ChatGPT 通过美国执业医师执照考试(USMLE)凸显了医学教育的缺陷 阿马拉奇B姆巴克韦1…

你不知道的100个国外搜索引擎升级版

首先是要支持国产品牌磁力狐-cilih.com DMOZ – 一个多语种、开放式网站目录。 Food Blog Search -可以让你从上千个博客和网站查找菜谱。 Swoogle – 一个语义、文件、术语和数据的搜索引擎,不同于普通的搜索引擎。 SimilarSiteSearch – 帮你找到相似…

排序------快速排序(C语言实现)

目录 快速排序算法 例题 题目描述 具体代码: 代码分析 函数定义: 主函数: 快速排序算法 快速排序(QuickSort)是一种高效的排序算法,它采用分治策略,通过选择一个“基准”元素并将其他元素…

计算机网络面试真题总结(五)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 说一说HTTP1.0,1.1,2.0 的区别 HTTP/1.0 H…

国际篮球联合会(FIBA)标准篮球比赛记录表

相关资源 下载地址>>https://download.csdn.net/download/boomcode/89675132 篮球比赛计时计分展示管理系统开发及使用手册>>

3D渐变的轮播图效果,有点儿意思!

阅读原文:原文地址 一、前言 在Web开发中,轮播图(Carousel)是一种非常常见的功能,用于展示图片或内容,通过自动或手动的方式切换不同的视图,在网页设计中扮演着重要的角色。 吸引注意力&…

用Python给英语单词批量划分音节

一、问题的缘起 最近,有网友在我的视频下面留言,问我可否把英语单词进行音节的划分?我以前也有同样的想法,但是始终没有得到解决。但是,我想使用python,学习英语的人都很多,说不定有人已经编写…

微信左滑删除聊天记录怎么恢复?记录找回秘籍,第一种更有效!

在日常的指尖滑动间,微信成为了我们生活中不可或缺的一部分,记录着与朋友、家人的温馨对话,以及工作中的重要信息。然而,当不小心的向左滑动,珍贵的聊天记录就会悄然消失。那么,微信左滑删除聊天记录怎么恢…

给儿童掏耳朵用什么工具好?2024四款精品合集汇总

在为儿童掏耳朵时,选择合适的工具非常重要。普通的金属挖耳勺太过坚硬,容易弄伤儿童脆弱的耳道,并不适合。柔软的小棉签虽然相对安全一些,但也只能清理外耳道比较浅处的耳垢,而且若使用不当同样存在风险。 相比之下&am…

大数据驱动的数字化营销策略,开启营销新征程

​在当今这个数字化时代,大数据正以崭新的大力量重塑着企业的营销策略。今天,就让我们一同深入探讨大数据驱动的数字化营销策略究竟有着怎样的魅力。用蚓链获数据资产,享大数据福利! 大数据,精准定位目标客户的神器。…

【FPGA】HDMI参数信息汇总

文章列举已知大部分个人电脑屏幕尺寸信息,主要包括720p 1080p 2k 1440p 4k 5k以及8k屏幕。屏幕水平一行包括同步脉冲、后沿间隔、活跃像素、前沿间隔;屏幕垂直包括同步脉冲、后沿间隔、活跃行数、前沿间隔。 1. 720p (1280x720) 水平总像素 (HSYNC): 16…

element-plus 新增一行合计。除了用summary-method还可以用append的插槽

:summary-method"getSummaries" <el-table:data"reformtableData"style"width: 100%"show-summary:summary-method"getSummaries"ref"reformtableRef" > <el-table-column label"序号" type"index…

ArcGIS中怎么批量计算多个点到线最近距离,以及这些点到线的纬度差?

最近&#xff0c;我接到了一个关于批量计算多个点到线最近距离&#xff0c;以及这些点到线的纬度差的咨询。 下面是我对这个问题的解决思路&#xff1a; 先解决的如何计算是纬度差的问题&#xff0c;因为纬度差直接在地理坐标系下计算即可。 1,第一步对线要素转折点 2.接着在…

AI赚钱秘籍:如何利用大模型在2024年轻松月入过万?

随着人工智能技术的飞速发展&#xff0c;大模型已成为推动行业革新的重要力量。2024年&#xff0c;利用大模型技术月入过万已不再是遥不可及的梦想。本文将揭示AI赚钱的秘籍&#xff0c;帮助您在新的一年里通过大模型技术轻松实现月入过万的目标。 一、大模型技术概述 大模型技…