网络高并发负载均衡
2021-01-13 09:39:21 4 举报
网络 高并发 负载均衡
作者其他创作
大纲/内容
lo:2192.168.150.100
节点
传输控制层
下一跳
配置LVS安装ipvsadmyum install ipvsadm设置入包规则 ipvsadm -A -t 192.168.150.100:80 -s rr设置出包规则ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.12 -g -w 1ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.13 -g -w 1ipvsadm -ln验证浏览器访问 192.168.150.100 看到负载的返回查看是否握手netstat -natpnode1 : 看不到stocket连接node2,node3:能看到stocket连接ipvsadm -lnc 查看统计结果TCP 00:57 FIN_WAIT 192.168.150.1:51287 192.168.150.100:80 192.168.150.12:80FIN_WAIT:连接过,偷窥了所有的包SYN_RECV:lvs记录了,证明lvs没问题,一定是后面的网络层出问题了
baidu.com
表示层
动态
VIP
server1
httpd80
路由器
四层负载均衡
应用层
client
LVS4keepalived4
CIP->VIP
浏览器192.168.150.100:80GET / HTTP/1.0\
服务端
8.8.8.8
高可用 keepalived
计算机1 192.168.1.2
https://blog.csdn.net/mindfloating/article/details/51020767https://www.cnblogs.com/happy-king/p/9192185.htmlLVS:负责 4 层,使用集群技术,实现在linux操作系统层面的一个高性能、高可用、负载均衡服务器。Nginx:负责 7 层,一个高性能的web-server和实施反向代理的软件。HAProxy:负责 7 层,提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。其自身并不能提供web服务。DNS:负责 7 层,域名系统(Domain Name System)通过在DNS-server上对一个域名设置多个ip解析,来扩充web-server性能及实施负载均衡的技术。
RIP
192.168.1.0192.168.1.2路由表1、192.168.1.0 eth0 2、0.0.0.0 192.168.1.1
负载均衡算法
二层交换机
静态调度算法:rr:轮询wrr:加权轮询dh:sh:动态调度算法:lc:最少连接wls:加权最少连接sed:最短期望延迟nq:never queue(永不排队)LBLC:基于本地的最少连接DH:LBLCR:基于本地的带复制功能的最少连接
物理层
lo:3192.168.150.100
负载均衡应用的具体方案
加权响应(Weighted Response)流量的调度是通过加权轮循方式。加权轮循中所使用的权重是根据服务器有效性检测的响应时间来计算。每个有效性检测都会被计时,用来标记它响应成功花了多长时间。但是需要注意的是,这种方式假定服务器心跳检测是基于机器的快慢,但是这种假设也许不总是能够成立。所有服务器在虚拟服务上的响应时间的总和加在一起,通过这个值来计算单个服务物理服务器的权重;这个权重值大约每15秒计算一次。
链路层
隐藏VIP对外隐藏对内可见
主要应用
CIP->VIP | RIP@MAC
主备
eth0:1192.168.150.100
交换机
8.8.8.9
源IP地址 -> 目标IP地址
ARP缓存IP地址-->MAC地址3.1 --> 3.1@mac
LVS
netstat [选项]-a或--all:显示所有连线中的Socket; -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址; -c或--continuous:持续列出网络状态; -C或--cache:显示路由器配置的快取信息; -e或--extend:显示网络其他相关信息; -F或--fib:显示FIB; -g或--groups:显示多重广播功能群组组员名单; -h或--help:在线帮助; -i或--interfaces:显示网络界面信息表单; -l或--listening:显示监控中的服务器的Socket; -M或--masquerade:显示伪装的网络连线; -n或--numeric:直接使用ip地址,而不通过域名服务器; -N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称; -o或--timers:显示计时器; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -r或--route:显示Routing Table; -s或--statistice:显示网络工作信息统计表; -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况; -v或--verbose:显示指令执行过程; -V或--version:显示版本信息; -w或--raw:显示RAW传输协议的连线状况; -x或--unix:此参数的效果和指定\"-A unix\"参数相同; --ip或--inet:此参数的效果和指定\"-A inet\"参数相同。
OSI的基本概念OSI是Open System Interconnect的缩写,意为开放式系统互联。OSI七层参考模型的各个层次的划分遵循下列原则:1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。3、七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。4、不同节点的同等层按照协议实现对等层之间的通信。第一层:物理层(PhysicalLayer),规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、ISO2110、IEEE802、IEEE802.2等。第二层:数据链路层(DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、SLIP、CSLIP、ARP、RARP、MTU、帧中继等。第三层是网络层在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、ICMP、RIP、OSPF、BGP、IGMP等。第四层是处理信息的传输层第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。第五层是会话层这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。第六层是表示层这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。第七层应用层应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:TFTP、HTTP、SNMP、FTP、SMTP、DNS、Telnet等。
负载均衡服务器
通过DNS轮询扩充入口性能
6.6.6.2
服务层
192.168.3.0192.168.3.4
https://blog.csdn.net/ymeng9527/article/details/97045386
DIP->RIP
DIP
会话层
静态
CIP
NAT模式
eth0192.168.150.11
node 01
基于代理的自适应负载均衡(Agent Based Adaptive Balancing)负载主机包含一个自适用逻辑用来定时监测服务器状态和该服务器的权重。对于非常强大的\"基于代理的自适应负载均衡\"方法来说,负载主机以这种方式来定时检测所有服务器负载情况:每台服务器都必须提供一个包含文件,这个文件包含一个0~99的数字用来标明改服务器的实际负载情况(0=空前,99=超载,101=失败,102=管理员禁用),而服务器同构http get方法来获取这个文件;同时对集群中服务器来说,以二进制文件形式提供自身负载情况也是该服务器工作之一,然而,并没有限制服务器如何计算自身的负载情况。根据服务器整体负载情况,有两种策略可以选择:在常规的操作中,调度算法通过收集的服务器负载值和分配给该服务器的连接数的比例计算出一个权重比例。因此,如果一个服务器负载过大,权重会通过系统透明的作重新调整。和加权轮循调度方法一样,不正确的分配可以被记录下来使得可以有效的为不同服务器分配不同的权重。然而,在流量非常低的环境下,服务器报上来的负载值将不能建立一个有代表性的样本;那么基于这些值来分配负载的话将导致失控以及指令震荡。因此,在这种情况下更合理的做法是基于静态的权重比来计算负载分配。当所有服务器的负载低于管理员定义的下限时,负载主机就会自动切换为加权轮循方式来分配请求;如果负载大于管理员定义的下限,那么负载主机又会切换回自适应方式。
通过Keepalived保证高可用
6.6.6.6
ARP目标MAC地址:FFFFFF源MAC地址:1.2@mac目标IP:192.168.1.1源IP:192.168.1.2
网络层:路由表 下一跳机制,路由的判定掩码按位与计算,通过路由表链路层:链路表结论:TCP/IP 是基于下一跳机制,IP是端点间的,MAC地址是节点间的
速度特别快数据包转发级别不会和client握手后端服务器是镜像的
网络层
8.8.8.3
三种负载均衡技术路由方式以及做一个区别:VS/NAT模式:客户机-->请求分发服务器-->Real Server-->请求分发服务器--->客户机。VS/DR模式:客户机-->请求分发服务器-->Real Server-->客户机。VS/TUN模式:客户机-->请求分发服务器-->Real Server-->客户机。由此可以看出,NAT模式的请求分发服务器会成为这个模式的瓶颈所在,因为所有请求与响应走要经过他转发。那么IP隧道模式与DR模式的区别在于,DR模式与IP隧道模式相比,DR模式没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在同一个物力网段中。
调节协议cd /proc/sys/net/ipv4/conf/cd eth0ls 显示所有协议定义接收到ARP请求时的响应级别cat arp_ignoreecho 1 > arp_ignoreecho 2 > arp_announce调节所有的都生效cd /proc/sys/net/ipv4/conf/allecho 1 > arp_ignoreecho 2 > arp_announce配置还回接口-设置隐藏VIPifconfig lo:2 192.168.150.100 netmask 255.255.255.255
现有的负载均衡算法主要分为静态和动态两类。静态负载均衡算法以固定的概率分配任务,不考虑服务器的状态信息,如轮转算法、加权轮转算法等;动态负载均衡算法以服务器的实时负载状态信息来决定任务的分配,如最小连接法、加权最小连接法等。
计算机3 192.168.3.2
baidu.com8.8.8.88.8.8.9
1、二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。2、 三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而象路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。
端点
ARP目标MAC地址:3.4@mac源MAC地址:3.1@mac目标IP:192.168.3.4源IP:192.168.3.1
虚拟网络WMware 8 NAT192.168.150.2windows: WMware -NAT
VIP->CIP
virtual IP
负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间建立一条虚拟链路以传递数据的方式。使用隧道传递的数据可以是不同协议的PDU,隧道将其他协议的PDU重新封装后通过网络发送,新的PDU提供路由信息,以便通过互联网传递被封装的数据。由于PDU经过重新封装,使得数据的发送方和接收方就像在一条专有“隧道”中进行数据传输和通信,隧道技术因此得名。一般来说,隧道是在高层(或同等层)分组中携带低层数据。例如,在一个IPv4或IPv6分组中携带IPv4数据,在一个UDP、IPv4或IPv6分组中携带以太网数据。隧道转变了在头部中协议严格分层的思路,并允许形成覆盖网络(即这些“链路”实际是其他协议实现的虚拟链路,而不是物理连接的网络)。通过隧道的建立,可实现将数据强制送到特定的地址、隐藏私有的网络地址、在IP网上传递非IP数据包、提供数据安全支持等功能。
SNAT,DNAT就是对数据包的源地址和目的地址进行修改,并且保存修改前后的映射关系,并且根据需要进行还原操作。SNAT:出去的时候改 变原地址(snat),回来的时候改变目的地(un_snat)。DNAT:进来的时候改变目的地址(dnat),出去的时候改变源地址 (un_dnat)。例如回环,就用到了SNAT和DNAT。NAT模式基本上都是工作在网络层上(三层)
浏览器
下一跳路由判定,按位与 目标ip与路由表中的掩码按位于,与前面的目标地址匹配,如果匹配上,目标地址就是下一跳地址
lvs是四次层的,数据包级别转发,不会参与握手,速度快,无连接限制nginx反向代理服务器是七层的,参与握手,速度相对慢,并且有连接限制5w前端 -> lvs ->nginx -> 服务
LVS1keepalived1
目标地址不是自己的地址,丢弃数据包
RIP->CIP
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 根据负载均衡技术实现在OSI七层模型的不同层次,是可以给负载均衡分类的。常见的实现方式中,主要可以在应用层、传输层、网络层和数据传输层做文章。所以,工作在应用层的负载均衡,我们通常称之为七层负载均衡、工作在传输层的我们称之为四层负载均衡。大致可以分为以下几种,其中最常用的是四层和七层负载均衡:二层负载均衡 :负载均衡服务器对外依然提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。三层负载均衡:和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。四层负载均衡 :四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。七层负载均衡 :七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
LVS3keepalived3
keepalived
以太网本地连接192.168.1.33
客户端
windows
node 04
三次握手/四次挥手
加权轮循(Weighted Round Robin)这种算法解决了简单轮循调度算法的缺点:传入的请求按顺序被分配到集群中服务器,但是会考虑提前为每台服务器分配的权重。管理员只是简单的通过服务器的处理能力来定义各台服务器的权重。例如,能力最强的服务器A给的权重是100,同时能力最低的服务器给的权重是50。这意味着在服务器B接收到第一个请求之前前,服务器A会连续的接受到2个请求,以此类推。
源IP哈希(Source IP Hash)这种方式通过生成请求源IP的哈希值,并通过这个哈希值来找到正确的真实服务器。这意味着对于同一主机来说他对应的服务器总是相同。使用这种方式,你不需要保存任何源IP。但是需要注意,这种方式可能导致服务器负载不平衡。
源端口号 -> 目标端口号
wmnet-8192.168.150.1
加权最少连接(Weighted Least Connection)如果服务器的资源容量各不相同,那么\"加权最少连接\"方法更合适:由管理员根据服务器情况定制的权重所决定的活跃连接数一般提供了一种对服务器非常平衡的利用,因为他它借鉴了最少连接和权重两者的优势。通常,这是一个非常公平的分配方式,因为它使用了连接数和服务器权重比例;集群中比例最低的服务器自动接收下一个请求。但是请注意,在低流量情况中使用这种方法时,请参考\"最小连接数\"方法中的注意事项。
TCP/IP 分层模型的分层以以太网上传输 UDP 数据包
eth0192.168.150.14
192.168.1.8:12121 -> 8.8.8.8:80
网卡2:192.168.3.1
用户
eth0192.168.150.13
node 03
路由表123: 192.168.1.8:12121321: 192.168.1.5:12121
DR模式
192.168.1.1
nginx2keepalived2
nginx1keepalived1
IP隧道原理:在原有的IP报文之外再封装一层IP首部,内部IP首部(源地址为CIP,目标IP为VIP),外部IP首部(源地址为DIP,目标IP为RIP)IP隧道模式应该是工作在数据链路层上(二层)。
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。LVS的主要特点有以下几个方面: 高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。 成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。 配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。 支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用 支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。 应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等缺点:工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。
系统调用
计算机2 192.168.1.3
反向代理层
RS中的服务:node2 - node3 yum install httpd -y service httpd start
6.6.6.6:123 -> 8.8.8.8:80
server2
TCP/UDP协议TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复 用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、 流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要 有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系 统)、TFTP(通用文件传输协议)等.TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点
高并发高可用架构
内核
ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。 为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。静态项目一直保留在缓存中,直到重新启动计算机为止。
轮循(Round Robin)这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及负载形同的应用程序。如果所有的服务器有相同或者相近的性能那么选择这种方式会使服务器负载形同。基于这个前提,轮循调度是一个简单而有效的分配请求的方式。然而对于服务器不同的情况,选择这种方式就意味着能力比较弱的服务器也会在下一轮循环中接受轮循,即使这个服务器已经不能再处理当前这个请求了。这可能导致能力较弱的服务器超载。
网卡1:192.168.1.1
192.168.1.5
route -n192.168.1.0192.168.3.0
natstat -natpVIP -> CIP
交换机获取目标MAC地址全是FFFFFF会进行广播,除入口之外的其他设备都会收到
浏览器层
cd /proc/$$/fdexec 8<> /dev/tcp/www.baidu.com/80echo -e 'GET / HTTP/1.0\' >& 8cat <& 8打开当前程序的文件描述符目录:$$ 表示当前解释程序的进程号 fd 表示文件描述第一步:创建8号文件描述符(输入,输出),建立连接第二步:将请求头发送出去,传输数据(http协议:规范标准)第三步:使用cat读取8号文件描述符返回的数据
192.168.3.0192.168.3.2
192.168.1.5:12121 -> 8.8.8.8:80
RAP协议
固定权重(Fixed Weighted)最高权重只有在其他服务器的权重值都很低时才使用。然而,如果最高权重的服务器下降,则下一个最高优先级的服务器将为客户端服务。这种方式中每个真实服务器的权重需要基于服务器优先级来配置。
car-server
1、DNS负载均衡 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。2、代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。3、地址转换网关负载均衡 支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。4、协议内部支持负载均衡除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层。5、NAT负载均衡NAT(Network Address Translation网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。6、反向代理负载均衡普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。7、混合型负载均衡在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。
8.8.8.8:80百度
TCP/IP 协议族常用协议应用层:HTTP,SMTP,SNMP,FTP,TFTP,DNS,Telnet 等等传输层:TCP,UDP网络层:IP,ICMP,OSPF,EIGRP,IGMP数据链路层:SLIP,CSLIP,PPP,MTU
DS和RS不需要在同一网段VPN,翻墙
在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。 VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。 工作原理:http://www.linuxvirtualserver.org/zh/lvs3.html
均衡技术
eth0192.168.150.12
同一路由器下多设备同时访问一个服务时的处理
192.168.1.8
natstat -natpCIP -> RIP
https://www.cnblogs.com/rexcheny/p/10778567.html
IP地址隐藏:对外隐藏,对内可见kernel parameter:目标MAC地址全是F,交换机触发广播 /proc/sys/net/ipv4/conf/*IF*arp_ignore:定义接收到ARP请求时的响应级别:0:只要本地配置有相应地址,就给予响应;1:仅在请求的目标MAC地址配置请求到达接口上时才给予响应;arp_announce:定义将自己地址向外通告是的通告级别:0:将本地任何接口上的任何地址向外通告1:试图仅向目标网络通告与其网络匹配的地址2:仅向与本地接口上地址匹配的网络进行通告
NAT路由器
DNS-Server
掩码要配置成255.255.255.255因为IP要跟掩码进行一次按位与存到路由表中,如果配置成255.255.255.0那么从还回接口也能抵达192.168.150.0这个网络,那么eth0和lo:2都能到达192.168.150.0这个网络,如果ping 192.168.150.1对内核来说物理网卡eth0和虚拟网卡lo:2对比,虚拟网卡lo:2更近,就会走lo:2,还回接口调出去又还回自己,这个请求永远发不出去
TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
D-NAT 非对称带宽称为瓶颈消耗算力
一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。具体说:物理层:网卡,网线,集线器,中继器,调制解调器数据链路层:网桥,交换机网络层:路由器网关工作在第四层传输层及其以上
源MAC地址 -> 目标MAC地址
yum install keepalived ipvsadm -y修改配置cd /etc/keepalived/cp keepalived.conf keepalived.conf.bakvim keepalived.conf vrrp:虚拟路由冗余协议
node 02
基于二层MAC地址欺骗速度快成本低负载和RS要在同一局域网
三次握手 > 数据传输 > 四次分手称为最小粒度,不可被分隔netstat -natp
计算机4 192.168.3.4
internetISP运营商
192.168.1.0192.168.1.2
LVS2keepalived2
Keepalived本质就是为ipvs服务的,它也不需要共享存储。IPVS其实就是一些规则,Keepalived主要的任务就是去调用ipvsadm命令,来生成规则,并自动实现将用户需要访问的地址转移到可用LVS节点实现。所以keepalive的高可用是属于具有很强针对性的高可用,它和corosync这种通用性HA方案不同。Keepalived的主要目的就是它自身启动为一个服务,它工作在多个LVS主机节点上,当前活动的节点叫做Master备用节点叫做Backup,Master会不停的向Backup节点通告自己的心跳,这种通告是基于VRRP协议的。Backup节点一旦接收不到Master的通告信息,它就会把LVS的VIP拿过来,并且把ipvs的规则也拿过来,在自己身上生效,从而替代Master节点。Keepalived除了可以监控和转移LVS资源之外,它还可以直接配置LVS而不需要直接使用ipvsadm命令,因为它可以调用,也就是说在LVS+KEEPALIVED模型中,你所有的工作在Keepalived中配置就可以了,而且它还有对后端应用服务器健康检查的功能。直接一句话Keepalived就是VRRP协议的实现,该协议是虚拟冗余路由协议。Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
https://www.cnblogs.com/knowledgesea/p/6407018.html
最少连接数慢启动时间(Least Connection Slow Start Time)对最少连接数和带权重的最小连接数调度方法来说,当一个服务器刚加入线上环境是,可以为其配置一个时间段,在这段时间内连接数是有限制的而且是缓慢增加的。这为服务器提供了一个'过渡时间'以保证这个服务器不会因为刚启动后因为分配的连接数过多而超载。这个值在L7配置界面设置。
6.6.6.6:321 -> 8.8.8.8:80
ARP缓存IP地址-->MAC地址1.2 --> 1.2@mac
CIP->RIP
最少连接数(Least Connection)以上两种方法都没有考虑的是系统不能识别在给定的时间里保持了多少连接。因此可能发生,服务器B服务器收到的连接比服务器A少但是它已经超载,因为服务器B上的用户打开连接持续的时间更长。这就是说连接数即服务器的负载是累加的。这种潜在的问题可以通过\"最少连接数\"算法来避免:传入的请求是根据每台服务器当前所打开的连接数来分配的。即活跃连接数最少的服务器会自动接收下一个传入的请求。接本上和简单轮询的原则相同:所有拥有虚拟服务的服务器资源容量应该相近。值得注意的是,在流量率低的配置环境中,各服务器的流量并不是相同的,会优先考虑第一台服务器。这是因为,如果所有的服务器是相同的,那么第一个服务器优先,直到第一台服务器有连续的活跃流量,否则总是会优先选择第一台服务器。
DS: 调度器,lvs的前端设备RS: Real Server 后端请求处理服务器CIP: 源IP(客户端的IP)VIP: 目的IP(设置的统一入口),对外公布的ip,客户请求进来的ipDIP: 调度器和后端服务器通信的ipRIP: 后端服务器的ip地址
通过lvs可以扩展多个nginx
IP隧道模式
0 条评论
下一页