lvs负载均衡集群

目录

一、集群:

1、集群的目的:

2、集群的类型:

3、集群的可靠性指标:

4、设计集群时需要考虑的原则:

二、lvs集群:

1、lvs集群中的术语:

2、lvs访问的大致流程:

三、lvs的负载均衡方式:NAT、DR、TUN

1、NAT模式

2、DR模式:直接路由模式

3、TUN模式:隧道协议

4、如何设置lvs:

1、lvs中的调度算法(负载均衡算法)

三、LVS-NAT模式配置:

四、LSV-DR模式配置:


一、集群:

是未解决某个特定的问题将多个计算机组合起来之后形成一个单系统

如:nginx四层和七层+动静分离

1、集群的目的:

为了解决系统的性能瓶颈

垂直扩展:向上扩展,增加单个机器的性能。也就是升级硬件。硬件升级是有瓶颈的,水平扩展应运而生

水平扩展:向外扩展,增加设备,并行的运行多个服务,通过网络和算法

2、集群的类型:

负载均衡集群:LB:Load Blance多个主机组成,每个主机只承担一部分访问请求。靠负载均衡算法来实现

高可用集群:HA:High Availablity 避免SPOF(Single point of failuer)单点故障。系统中有一部分组件出现故障,可以保障整个系统继续运行。

高可用涉及主和从

现在都是复杂均衡+高可用,也就是既能满足主从也能满足同步还能实现负载均衡

HPC:High-Proformance computing 高性能集群,快速转发,快速响应

3、集群的可靠性指标:

MTBF:系统在正常运行时间无故障的平均时间,一般用小时或者天数来表示。MTBF值越高,系统的可靠性越高,出现故障的概率也越小。

MTTR:系统从发生故障到恢复正常运行的平均时间,一般用小时或者天数表示。MTTR值越小,系统恢复故障的能力越强

A:系统的可靠性指标,A值越高越好

如何计算:A=MTBF/(MTBF+MTTR)

停机时间:

计划内停机:指的是预定时间内的维护或者检修时间。是自定义的

计划外停机:运维人员关注的就是计划外。

4、设计集群时需要考虑的原则:
  1. 可扩展性:集群要有随时可以添加或者删除设备的能力。动态的扩缩容
  2. 可靠性:集群中如果有节点发生故障,可以快速检测并且自动切换。
  3. 负载均衡:合理和分配负载,避免单个节点过载,影响整体的性能
  4. 可维护性:能够方便的进行配置、部署、维护、监控。降低成本

以上原则跟运维有关系

  1. 安全性:防止恶意的攻击以及数据泄密,数据丢失。
  2. 易用性:相关的工作人员,可以方便的进入集群,能够快速的开发、部署、测试等等

二、lvs集群:

lvs:linux virtual server 是一个部署在linux系统上,通过内核层面实现负载均衡的软件。

主要作用:多个后端服务器组成一个高可用,高性能,复杂均衡的高性能集群。通过负载均衡的算法将客户端请求发送到后端服务器

阿里的SLB就是基于lvs+keepalived实现的

1、lvs集群中的术语:

vs(virtual server):lvs服务的逻辑名称,也就是外部访问lvs集群时提供的一个虚拟IP地址和端口号

ds(director server):lvs集群中的主服务器,也叫调度器,使整个lvs集群的核心,接受客户端的请求转发到后端RS

rs(real server):lvs的后端的真实服务器的IP地址,接收到了ds的请求之后,返回响应结果。

cip(client ip):客户端的IP地址

vip(virtual ip):对外提供访问的统一的虚拟IP地址

dip(director IP):调度器在ivs内部使用的IP地址。用于和真实服务器进行通信

rip:后端真实服务器的IP地址

2、lvs访问的大致流程:
  1. 客户端访问都是访问VIP
  2. 由调度器ds接收到请求,根据调度算法选择好后端服务器(rs),请求发送给rs
  3. rs真实服务器处理请求并将响应发送到ds
  4. ds调度器把rs的响应包装成自己的响应,发送到客户端

这种模式下,客户端既不知道请求的真实服务器,也不知道响应的服务器是谁

三、lvs的负载均衡方式:NAT、DR、TUN

其中NAT和DR是最常用的方式

1、NAT模式

NAT模式是最常用的lvs负载均衡方式之一

NAT是地址转换的方式

实验图:

NAT模式:

  1. 在调度器上配置网卡,一个指内,一个指外
  2. 配置一个可以和公网进行通信的vip(12.0.0.1)
  3. 配置转发策略,如果访问vip就会把请求的数据转发到rs真实服务器

请求的格式:报文。调度器会修改请求的目标IP地址和端口

  1. rs处理完请求之后响应客户端,先到调度器,调度器再进行地址转换,把内网地址转换成公网地址,响应给用户

192.168.233.30:80-------调度器---------nat转换----------------12.0.0.10:80-------------客户端

数据请求进入调度器做的是请求报文中IP地址的修改

数据响应进入调度器,根据NAT配置进行地址转换

进入请求报文,出去地址转换

调度器的内网IP地址和rs真实服务器的IP地址要在同一网段。否则要利用路由器转发

NAT:对于客户端来说请求地址始终不变,客户端不需要修改任何配置。换发由调度器通过算法完成,后端服务器只管接收响应,也不需要修改任何配置。

缺点:可能会造成性能损失和单点故障

2、DR模式:直接路由模式

请求由调度器完成,但是响应客户端由rs真是服务器直接响应,不需要通过调度器。

好处是性能高:而且可以配置代理地址vip的高可用。不存在单点故障。

3、TUN模式:隧道协议

使用隧道协议把请求转发到后端服务器,需要在后端服务器配置隧道协议

4、如何设置lvs:

ipvsadm工具:管理ipvs内核模块的命令行工具,可用于配置和管理lvs集群。

ipvsadm

-A:添加虚拟服务器

-D:删除整个虚拟服务器

-s(小写):指定负载调度算法

1、lvs中的调度算法(负载均衡算法)

静态调度(固定调度):

rr:默认算法轮询

wrr:加权轮询

dh:目的地址hash

sh:原地址hash

dh和sh都是根据IP地址查找静态hash表,获取需要的真实的rs地址

动态调度:

lc:最小连接数调度

wlc:加权最小连接数调度

权重高的转发的就多,为了避免性能瓶颈,在跟上最小连接数分配,可以把请求往连接数量较小的服务器继续转发

lblc:基于地址的最小连接数调度

将来自同一个目的地址的请求分配给rs,如果这台服务器尚未满负荷,就会把请求分配给连接数最小的rs,而且在下一次转发时,优先考虑这rs

-a:添加真实服务器

-d:删除真实服务器

-t:指定vip地址的端口号

-r:指定rid(real server ip)的端口号

-m:表示使用的是nat模式

-g;表示使用DR模式

-i:表示使用隧道模式

-w:设置真实服务器的权重

-p 60:设定链接保持的时间,单位秒(默认不保持需要指定)

-ln:以数字以及列表的形式查看lvs的配置信息

三、LVS-NAT模式配置:

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

nat模式的部署方式:

负载调度器:配置双网卡:20.0.0.21(内网) 12.0.0.1(ens36)

两台后端web真实服务器:20.0.0.22   20.0.0.23

一台NFS共享服务器:20.0.0.3010

客户端:20.0.0.40

先关防火墙:

配置共享服务:20.0.0.30

安装软件

yum install nfs-utils rpcbind -y #安装nfs服务

vim /etc/exports

#设置共享策略

exportfs -rv   #发布服务

启动NFS网络共享时注意:要先启动网络再启动服务

配置两个后端服务器RS1、RS2:

先检查目录是否共享:

showmount -e NFS主机ip

安装nginx

之后挂载nginx访问目录

两个共享目录分别挂载后端服务器访问目录:

打开两边nginx服务

用curl访问一下看是否正常

配置RS1、RS2网卡

将DNS解析注释

内网网关要和调度器的内网网卡ens33的IP地址一样

(路由器离终端最近的点,IP地址配置网段的网关)

配置完网卡之后一定要重启网卡

systemctl restart network

调度器配置:

配置网卡:

网卡的IP地址要和距离最近的网段的网关一样

先ifconfig查看新建的网卡名(ens36),再去网卡配置

cd /etc/sysconfig/network-scripts

cp -a ifcfg-ens33 ifcfg-ens36

重启网卡

配置防火墙策略:

先安装iptables和ipvsadm:

yum -y install iptables-services.x86_64 iptables

yum -y install ipvsadm*

用iptables配置nat转换:

iptables -nL -t nat

#查看策略

iptables -t nat -F

#清空nat策略

iptables -t nat -A POSTROUTING -s 192.168.233.0/24 -o ens36 -j SNAT --to 12.0.0.1

#添加策略

iptables -nL -t nat

#查看策略

modprobe ip_vs

cat /proc/net/ip_vs

#加载内核模块

配置ipvsadm:

ipvsadm -A -t 12.0.0.1:80 -s rr

#指定IP地址 外网的入口  -s rr  轮询

 ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.61:80 -m

#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式,两个都配置

ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.62:80 -m

ipvsadm -ln

#查看配置情况

ipvsadm-save >/etc/sysconfig/ipvsadm

#配置完 保存配置文件

systemctl restart ipvsadm.service

#重启服务

vim /etc/sysctl.conf打开转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

#开启服务器的转发功能

sysctl -p刷新

打开新的机器,做客户端

重启网卡

虚拟机浏览器访问

12.0.0.1

四、LSV-DR模式配置:

lvs-DR模式:是最常用的lvs负载方式,DR DIRECT ROUTING 直接路由模式

负载均衡器lvs调度器,只负责请求和转发到后端的真实服务器,但是响应结果由后端服务器直接转发给客户端,不需要经过调度器处理,减轻lvs调度器的负担,提高性能和稳定性

lvs-DR模式的工作原理:

是根据mac地址进行转发数据,是二层转发

  1. 客户端发送请求到vip虚拟ip地址
  2. lvs调度器接受请求之后根据算法选择一台后端的真实服务器,把请求转发到后端RS,请求报文的目录mac地址修改成后端真实服务器的mac地址,然后转发
  3. 后端真实服务器接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的的mac地址修改成客户端的mac地址。直接把响应报文转发到客户端
  4. 调度器,后端真实服务器都有vip地址,调度器的地址和后端真实服务器的地址在同一网段。

vip的作用:代理

  1. 标识后端的真实服务器
  2. 保证调度器和后端服务器之间的通信,保证请求可以正确的转发到后端服务器
  3. 实现高可用

DR模式的特点:

  1. 调度器的ip和真实服务器的ip必须在同一个物理网络(网段)中
  2. 真实服务器的IP地址可以是私有地址,也可以是公网地址,如果配置公网就可以通过互联网直接访问RIP
  3. 调度器只作为访问入口,但是不作为网关。要把服务器的转发功能关闭。
  4. 后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器。
  5. 后端真实服务器上,基于LO回环接口配置vip的IP地址

ARP协议:(网络层协议)将ip地址解析为mac地址。

ARP请求:主机A和主机B

ARP核心:解决局域网内部的通信。IP地址和mac地址之间的映射

DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现局域网内部通信

问题一:

由于调度器和后端服务器都有相同的vip地址,导致响应冲突,ARP通信紊乱。

vip100和RIP 20会冲突,不知道响应哪个

解决方案:

要对后端真实服务器进行处理,真实服务器不响应针对vip的ARP请求

vip地址使用LO的虚拟地址:arp_ignore=1

后端真实服务器只响应目的ip为本地ip,也就是RIP,后端服务器的真实IP地址。ens33网卡提供的地址。

问题二:

返回报文使用的源地址还是vip地址100,调度器也是vip地址100。怎么把响应返回到客户端不经过调度器呢?

解决方案:

要对后端真实服务器做一个内核参数的优化:arp_announce=2  系统不使用ip数据包的源地址来设置ARP的请求,而是用真实的物理网卡地址。

发送:12.0.0.10(cip)----20.0.0.100(vip)---20.0.0.20(RIP)

返回:20.0.0.20(RIP)----12.0.0.10(cip)

实验过程:

如何实现DR模式的负载均衡:

四台:

vip虚拟地址:20.0.0.100

调度器:20.0.0.22

后端服务器web集群:

web集群1:20.0.0.21

web集群:20.0.0.23

nfs机器:20.0.0.30

客户端:随机选择

先关闭防火墙

调度器:

现在调度器上加载ipvs内核:

安装ipvsadm

创建虚拟网卡:

ifconfig ens33:0 20.0.0.100/24

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

调度器的内核优化

net.ipv4.ip_forward = 0

#关闭服务器作为网关的转发功能

net.ipv4.conf.all.send_redirects = 0

#控制是否发送ICMP的重定向消息,禁止重定向

net.ipv4.conf.default.send_redirects = 0

#禁止默认网络接口,也就是调度器网卡,发送icmp重定向消息

net.ipv4.conf.ens33.send_redirects = 0

#指明网卡设备,ens33不发送重定向消息

ipvsadm:

nfs服务端共享服务:

systemctl start rpcbind

systemctl start nfs

exportfs -rv

去两个后端服务器:

安装nginx

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo ifcfg-lo:0

DEVICE=lo:0

IPADDR=20.0.0.100

NETMASK=255.255.255.255

ONBOOT=yes

重启网卡

ifup lo:0

route add -host 20.0.0.100 dev lo:0

把vip的地址绑定到lo:0,作为整个lvs的vip地址。标识,告诉调度器进行转发请求的IP地址寻址

vim /etc/sysctl.conf

只有请求到后端服务器真实ip的响应才会接收,其他的一律不接受

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

~                                     

net.ipv4.conf.lo.arp_ignore = 1

#设置lo接口忽略来自任何接口的ARP请求

net.ipv4.conf.lo.arp_announce = 2

设置lo接口仅会响应本地的IP地址,其他的接口ARP请求,全部忽略

net.ipv4.conf.all.arp_ignore = 1

所有接口忽略来自任何接口的ARP请求

net.ipv4.conf.all.arp_announce = 2

# 所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略

sysctl -p

重启

两边后端服务器操作相同,nginx都要启动

用客户机访问vip20.0.0.100

DR模式:vip只做表示代理和转发请求到后端服务器还有高可用,其他一律没用

总结:

DR模式核心:响应客户端是后端真实服务器来完成,不需要经过调度器二次处理

vip地址:调度器和后端服务器都要有vip地址。

作用:

1、暴露访问地址

2、调度器转发请求的标识

3、调度器和后端服务器之间进行通信

4、基于DR模式的高可用

只有以上四个作用,其他所有的请求和响应都被禁用。

lvs的负载均衡算法设置:

ipvsadm -In

IP Virtual Server version 1.2.1(size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.233.100:80 wrr

-> 192.168.233.20:80 Route 1   1  0      0

-> 192.168.233.30:80 Route 1 1  0 0

TCP 192.168.233.100:80 wrr

表示VIP地址,wrr 负载均衡器的调度算法

-> 192.168.233.20:80 Route 1  0 0

-> 192.168.233.30:80 Route 1 0 0

指向后端的真实服务器

Forward: 负载均衡算法和负载均衡方式。route 就是DR模式

ACtiveConn:活跃连接,表示调度器正在处理的活动连接数,表示这些链接正在进行传输数据或者正在进行交互。

InActConn:表示当前处于非活动状态的连接数。已建立连接但是目前没有数据传输,第二个

可以修改VIP的调度算法:

ipvsadm -E -t 192.168.233.100:80 -s wrr

修改策略的轮询权重:

ipvsadm -e -t 192.168.233.100:80 -r 192.168.233,30:80 -w

换负载均衡算法:

修改完之后要先保存再重启

总结题:

1、lvs负载均衡的工作方式:

三种:NAT、DR、TUN最常用的就是DR模式

NAT模式:

优点:配置简单

缺点:性能瓶颈

真实服务器的要求:所有都可以作为真实服务器

后端服务器支持的网络模式:私网

能配置的真实服务器的数量:最多10-20台,超过性能下降

DR模式:

优点:性能最好(响应不走调度器直接到客户端)

缺点:调度服务器和后端真实服务器不能夸网段

真实服务器的要求:NO ARP(请求只能到真实服务器)

后端服务器支持网络:公网、私网

真实服务器数量:100台

TUN 公司不用(需要VPN隧道,要钱)

2、lvs调度器中常用的算法(负载均衡策略):

rr

wrr

dh

sh

wlc

lc

lblc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于PyTorch的Embedding和LSTM的自动写诗实验LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的这个代码主要是研究手写数字的识别效率,用卷积神经网络算法来实现,用的是官方手写字体数据,能够显现百分之九十以上的识别率+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
基于LSTM+CNN的自然语言处理,基于单维LSTM、多维LSTM时序预测算法和多元线性回归算法的预测模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值