负载均衡 接口服务(负载均衡服务器f5)

网友投稿 283 2023-03-07

本篇文章给大家谈谈负载均衡 接口服务,以及负载均衡服务器f5对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享负载均衡 接口服务的知识,其中也会对负载均衡服务器f5进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

负载均衡是怎么做的~

1、服务直接返回:这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求。

2、桥接模式:桥接模式配置简单,不改变现有网络。负载均衡的WAN口和LAN口分别连接上行设备和下行服务器。LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中。

3、路由模式:路由模式的部署方式,服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络。因此所有返回的流量也都经过负载均衡。这种方式对网络的改动小,能均衡任何下行流量。

扩展资料

负载均衡的算法:

1、随机算法:Random随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

2、哈希算法:一致性哈希一致性Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

3、URL散列:通过管理客户端请求URL信息的散列,将发送至相同URL的请求转发至同一服务器的算法。

参考资料

百度百科-负载均衡

H3C路由器WAN口负载均衡怎么设置

NO1:主备链路

顾名思义主备链路就是一条链路处于使用状态,另一条链路处于未使用的备份状态。这样做的好处是提高了网络的可靠性,当一条线路发生故障的时候另外一条链路立即启动,使网络不会中断。缺点是另外一条线路的带宽不能被充分利用导致浪费。

MSR系列路由器设置主备路由的方法



在“高级设置””路由设置”中设置,通过改变路由优先级实现。路由表中优先级数值低的路由条目优先生效,所以上图中优先级为60的路由条目优先生效。

ER系列路由器设置主备路由的方法



ER路由器设置则更为简单直接,在”接口设置””WAN设置””双WAN工作模式”中选择为“主备模式”,并选择主链路接口。

NO2:路由方式

均衡路由表

均衡路由表用于不同运营商接入,能够实现访问移动的数据流量走移动链路、访问电信的流量走电信链路。但这种负载均衡方式需要获知运营商准确的路由信息,目前公网路由信息有几十万条之多,存在路由信息不准确、维护难度大等问题。

MSR系列路由器需要在路由信息中逐条加入



所需要的路由信息可以通过运营商获取,上图表示如果要访问1.1.1.0这个网段,路由的下一跳指向2.2.2.2。

ER系列路由器使用网通电信路由表的配置方法



在“双WAN工作模式”中选择为“手动模式”,点击“添加导入”导入路由表。ER路由器负载均衡路由表链接:http://www.h3c.com.cn/Service/Software_Download/Router/Catalog/ER/ER_WAN/

b.策略路由

策略路由可以实现让内网中一部分用户走WAN1,另一部分用户走WAN2。但配置前需要对局域网流量走向有具体规划。

MSR系列路由器策略路由设置方法

(MSR路由器只能在命令行下设置)

案例:内网为192.168.1.0网段,实现奇数IP用户流量走WAN1接口,偶数IP用户流量走WAN2接口。

命令行设置:

acl number 3000

\\创建ACL匹配奇数流量

rule 0 permit ip source 192.168.1.1 0 0.0.0.254

acl number 3001

\\创建ACL匹配偶数流量

rule 0 permit ip source 192.168.1.0 0.0.0.254

policy-based-route 1 permit node 10

\\策略路由匹配奇数后流量下一跳为1.1.1.1

if-match acl 3000

apply ip-address next-hop 1.1.1.1

policy-based-route1 permit node 20

\\策略路由匹配偶数后流量下一跳为2.2.2.1

if-matchacl 3001

apply ip-address next-hop 2.2.2.1

interface Vlan-interface 1

\\在内网接口上调用策略路由“1”

ip policy-based-route 1

使用MSR路由器实现策略路由需要对H3C路由器命令行调试有一定熟程度,网络新手不建议配置哦!

ER系列路由器策略路由设置方法

上图配置表示192.168.1.2到192.168.1.120的用户流量从WAN1接口转发,同时还可以设置策略路由的生效时间。

NO3:自动分流

自动分流实现内网用户流量通过路由器计算后将数据按比例分摊到外网链路上,这种方法流量负载较为平均,多WAN接入情况下推荐配置。

MSR系列路由器自动分流设置方法


在“高级配置””基于用户的负载分担”选择外网接口,”修改接口配置”中开启基于负载分担功能。 并填写外网实际带宽值,这个带宽值决定了WAN口流量的负载比例。需要注意配置仅需要在外网口进行使能,内网口不需要使能。

温馨提示:如果出现下面情况请更换浏览器进行再设置。


ER系列路由器自动分流设置方法


在“接口设置”“WAN设置”“双WAN工作模式”中选择“均衡模式”,对于负载比例进行调整。建议根据比例按照带宽值进行配置,例如WAN1 100兆带宽,WAN2 50兆带宽,那么流量比例为2:1。

负载均衡是什么?有什么用

负载均衡实际上是一种网络技术负载均衡 接口服务,主要是基于现有负载均衡 接口服务的网络结构负载均衡 接口服务,增加吞吐量加强网络数据处理能力、提高应用系统的灵活和可用性。它可以优化算法,支持轮询均衡(Round Robin)、最少连接数均衡(Least Connection)和Sourse IP 等转发策略,合理分配用户流量。同时后端HTTP、TCP健康检查,一旦发现后端服异常,自动暂停分发。正常后自动启用,保证可用性。当局部节点出现故障,其余节点仍可支持用户访问。消除单点故障,保障网站的可靠性。就是可以提升企业业务系统的响应速度、保证业务系统的安全稳定,提升业务平台的可靠性,提升业务系统的伸缩性。华云的负载均衡技术就做的很好,今年还获得负载均衡 接口服务了可信云本地负载均衡认证。

负载均衡的详细信息

算法
提供多个WAN ports可作多种负载平衡算法则,企业可依需求自行设定负载平衡规则,而网络存取可参照所设定的规则,执行网络流量负载平衡导引。算法则有:
◎ 依序Round Robin
◎ 比重Weighted Round Robin
◎ 流量比例Traffic
◎ 使用者端User
◎ 应用类别Application
◎ 联机数量Session
◎ 服务类别Service
◎ 自动分配Auto Mode
Inbound Load Balancing
内建Inbound Load Balance 功能,可让企业透过多条ISP线路,提供给浏览者更实时、快速与稳定不断线的因特网在线服务;
Inbound负载平衡算法包括:Round Robin/ Weighted Round Robin/Auto Back Up;
功能
内建DNS服务器,可维护多个网域(domain),每个网域又可以新增多笔纪(A/CNAME/MX),达到Inbound Load Sharing的功能。
■Server Load Balancing
AboCom服务器负载均衡提供了服务级(端口)负载均衡及备援机制。主要用于合理分配企业对外服务器的访问请求,使得各服务器之间相互进行负载和备援。
AboCom服务器负载与服务器群集差异:
一旦有服务器故障,群集技术只对服务器的硬件是否正常工作进行检查;AboCom服务器负载则对应用服务端口进行检查,一旦服务器的该应用服务端口异常则自动将访问请求转移到正常的服务器进行响应。
■VPN Trunk 负载均衡
支持同时在多条线路上建立VPN连接,并对其多条VPN线路进行负载。不仅提高了企业总部与分支机构的VPN访问速度,也解决了因某条ISP线路断线造成无法访问的问题。进行VPN负载均衡时VPN访问数据将同时在多条VPN线路上进传输。当一条VPN线路故障时,所有流量将自动切换到正常的VPN线路上进行传输。
QoS(带宽管理)
个人带宽管理:可实现每个人的网络带宽分配、管理,可以设置保证带宽用以保障个人应用不受整体环境影响。每日带宽配额:可以针对个人、群组或部门等分别设置带宽配额,这样可以合理利用带宽资源,杜绝资源的浪费,也杜绝员工干与工作无关的事,如看在线电影,下载大容量文件资料等等。
内容过滤
网络信息过滤:采用关键字进行内容过滤,可保护内网不受色情、暴力、反动、迷信等信息的入侵和干扰。
聊天软件、P2P软件控制:可针对QQ、MSN、YAHOO、SKYPE、GOOGLE TALK等聊天通讯软件进行管控和限制,还可限制或禁止如BT、电驴、迅雷等P2P软件的使用。
SSL VPN
提供最佳远程安全存取解决方案,企业仅需透过最熟悉的网络浏览器接口(Web Browser),即可轻松连接到企业内部网络;即使未携带企业管控的笔记型计算机,利用家用计算机、公用计算机、PDA等,甚至是通过无线局域网络,都不影响安全联机的建立。
其他功能
实时图形化统计分析:记录所有网络封包的进出流量信息,可用做网络使用监控及统计记录;提供事件警报 (Event Alert)及日志记录管理功能;
支持3A认证:Authentication、Authorization、Accounting,即认证、授权、审计;
交换机联合防御:利用指定交换机进行联合防护,提升整个网络的安全系数和安全强度;
HA双机热备:支持双机备援,防止设备故障造成网络瘫痪,提升整个网络的可靠性;
远程唤醒(Wake on Lan):远程启动计算机。 软/硬件
软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。
软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。
硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。
负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。
一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。
本地/全局
负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。
本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。
全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。
全局负载均衡有以下的特点:
实现地理位置无关性,能够远距离为用户提供完全的透明服务。
除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。
解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。 负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。
路由模式(推荐)
路由模式的部署方式如上图。服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络。因此所有返回的流量也都经过负载均衡。这种方式对网络的改动小,能均衡任何下行流量。
桥接模式桥接模式配置简单,不改变现有网络。负载均衡的WAN口和LAN口分别连接上行设备和下行服务器。LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中。参见下图:
由于这种安装方式容错性差,网络架构缺乏弹性,对广播风暴及其他生成树协议循环相关联的错误敏感,因此一般不推荐这种安装架构。
服务直接返回模式
如上图,这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求。因此对于客户端而言,响应他的IP不是负载均衡机的虚IP(VIP),而是服务器自身的IP地址。也就是说返回的流量是不经过负载均衡的。因此这种方式适用大流量高带宽要求的服务。 基础网络配置:
AX1000(config)#clock timezone Asia/Shanghai//设置时区
AX1000(config)#vlan 10//创建VLAN10
AX1000(config-vlan:10)# untagged ethernet 1 to 2//划分接口到VLAN10中
AX1000(config-vlan:10)# router-interface ve 10 //设置路由接口为Ve10,后面会给Ve10 配置地址的,这点和传统的二、三层交换不一样。
AX1000(config-vlan:10)# name “Web-Server-Outside”//也可以设置的备注
AX1000(config-vlan:10)#end//完成VLAN10的内容,和Cisco的命令一样。
AX1000(config)#vlan 20
AX1000(config-vlan:20)# untagged ethernet 3 to 4
AX1000(config-vlan:20)# router-interface ve 20
AX1000(config-vlan:20)# name “Web-Server-Inside”
AX1000(config-vlan:10)#end
AX1000(config)#interface ethernet 1//进入eth1口
AX1000(config-if:ethernet1)# enable //激活该接口
AX1000(config-if:ethernet1)# interface ethernet 2
AX1000(config-if:ethernet2)# enable
AX1000(config-if:ethernet2)#interface ethernet 3
AX1000(config-if:ethernet3)# enable
AX1000(config-if:ethernet3)#interface ethernet 4
AX1000(config-if:ethernet4)# enable
AX1000(config-if:ethernet4)#end
AX1000(config)#interface ve 10//进入Ve10接口并为其配置地址
AX1000(config-if:ve10)# ip address 116.255.188.2 255.255.255.0
AX1000(config-if:ve10)# ip nat outside//这和传统的路由交换设置一直,是需要做NAT处理的。
AX1000(config-if:ve10)#end
AX1000(config)#interface ve 20
AX1000(config-if:ve20)# ip address 192.168.1.1 255.255.255.0
AX1000(config-if:ve20)# ip nat inside
AX1000(config-if:ve20)#end
首先添加服务器:
AX1000(config)#slbserver Web1192.168.1.11//添加服务器Web1,其IP地址为192.168.1.11
AX1000(config-real server)#port 80tcp//指定服务器开放的端口及端口类型
AX1000(config-real server-node port)#exit
AX1000(config-real server)#exit
AX1000(config)#slb server Web2192.168.1.12
AX1000(config-real server)#port 80tcp
AX1000(config-real server-node port)#end
检查添加的服务器状态是否正常:
AX1000#showslbserver //查看SLB信息
Total Number of Services configured: 2
Current = Current Connections, Total = Total Connections
Fwd-pkt = Forward packets, Rev-pkt = Reverse packets
Service Current Total Fwd-pkt Rev-pkt Peak-conn State
—————————————————————————————
Web1:80/tcp 0 0 0 0 0 Up
Web1: Total 0 0 0 0 0 Up
Web2:80/tcp 0 0 0 0 0 Up
Web2: Total 0 0 0 0 0 Up
发现全Up以后,则表示服务器的健康检查通过。
默认的健康检查方式是Ping检查服务器的存活状态。只有服务器状态为Up时,负载均衡器才会把会话分发给该服务器处理,从而最大可能性的保障用户的请求得到服务器的正常应答,这也是负载均衡器的基本功能之一。
在很多时候服务器作了安全策略,比如说防止Icmp的报文等等,就需要调整服务器的健康检查方式,具体内容后期提供。
创建服务组
AX1000(config)#slb service-group Webtcp
AX1000(config-slbsvc group)#member Web1:80
AX1000(config-slbsvc group)#member Web2:80
AX1000(config-slbsvc group)#end验证服务组工作正常
AX1000#show slb service-group
Total Number of Service Groups configured: 2
Current = Current Connections, Total = Total Connections
Fwd-p = Forward packets, Rev-p = Reverse packets
Peak-c = Peak connections
Service Group Name
Service Current Total Fwd-p Rev-p Peak-c
——————————————————————————-
*Web State:All Up
Web1:80 0 0 0 0 0
Web2:80 0 0 0 0 0创建虚拟服务器:
其地址为:116.255.188.235,即对外公布的真实的服务地址
AX1000(config)#slbvirtual-server VIP-WEB 116.255.188.235//创建VIP
AX1000(config-slbvserver)#port 80http//指定VIP对公共用户开放的端口及端口类型,Web页面选择http
AX1000(config-slbvserver-vport)#service-group Web//该端口对应的服务组为Web
AX1000(config-slbvserver-vport)#end查看虚拟服务器状态
AX1000#showslbvirtual-server
Total Number of Virtual Services configured: 1
Virtual Server Name IP Current Total Request Response Peak
Service-Group Service connection connection packets packets connection
—————————————————————————————-
*VIP-WEB(A) 116.255.188.235 Up
port 80 http 0 0 0 0 0
Web 80/http 0 0 0 0 0
Total received conn attempts on this port: 0
域名的解析记录已设置为116.255.188.235,所以只要直接访问即可看到效果。
验证:
AX1000#show session | in 116.255.188.235//查看当前设备上访问116.255.188.235的详细会话
Traffic Type Total
——————————————–
TCP Established 17
TCP Half Open 8
UDP 0
Non TCP/UDP IP sessions 0
Other 681295
Reverse NAT TCP 0
Reverse NAT UDP 0
Free Buff Count 0
Curr Free Conn 2031387
Conn Count 6926940
Conn Freed 6926870
TCP SYN Half Open 0
Conn SMP Alloc 103137
Conn SMP Free 102986
Conn SMP Aged 0
Conn Type 0 Available 6225920
Conn Type 1 Available 3112960
Conn Type 2 Available 2015155
Conn Type 3 Available 778240
Conn SMP Type 0 Available 6225920
Conn SMP Type 1 Available 3112960
Conn SMP Type 2 Available 1572712
Conn SMP Type 3 Available 778240
Prot Forward Source Forward Dest Reverse Source Reverse Dest Age Hash Flags
—————————————————————————————————————-
Tcp 110.152.232.139:1927 116.255.188.235:80 192.168.1.11:80 110.152.232.139:80 0 1 OS
Tcp 110.152.232.139:1927 116.255.188.235:80 192.168.1.12:80 110.152.232.139:80 0 1 OS
类型 源地址 目的地址服务器地址 服务器回报地址

ribbon负载均衡详解

服务端负载均衡:在客户端和服务端中间使用代理,lvs  和 nginx。

硬件负载均衡的设备或是软件负载均衡的软件模块都会维护一个下挂可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候,该设备按某种算法(比如线性轮询、按权重负载、按流量负载等)从维护的可用服务端清单中取出一台服务端端地址,然后进行转发。

客户端负载均衡:根据自己的情况做负载。Ribbon。

客户端负载均衡和服务端负载均衡最大的区别在于 服务端地址列表的存储位置,以及负载算法在哪里。

2、Spring Cloud的负载均衡机制的实现

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让负载均衡 接口服务我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Ribbon实现客户端的负载均衡,负载均衡器提供很多对http和tcp的行为控制。Spring cloud Feign已经集成Ribbon,所以注解@FeignClient的类,默认实现了ribbon的功能。

Ribbon主要包括如下功能

1.支持通过DNS和IP和服务端通信

2.可以根据算法从多个服务中选取一个服务进行访问

3.通过将客户端和服务器分成几个区域(zone)来建立客户端和服务器之间的关系。客户端尽量访问和自己在相同区域(zone)的服务,减少服务的延迟

4.保留服务器的统计信息,ribbon可以实现用于避免高延迟或频繁访问故障的服务器

5.保留区域(zone)的统计数据,ribbon可以实现避免可能访问失效的区域(zone)
Ribbon负载均衡主要是通过LoadBalancerClient类实现的,而LoadBalancerClient又将具体处理委托给ILoadBalancer处理负载均衡 接口服务

每个服务都有一个ILoadBalancer,ILoadBalancer里面有该服务列表。

每个服务 Map<服务名,ILoadBalancer

ILoadBalancer通过配置IRule、IPing等信息,并通过ServerList获取服务器注册列表的信息,默认以每10s的频率想服务列表中每个服务实例发送ping请求,检测服务实例是否存活,最后使用负责均衡策略对ServerListFilter过滤得到最终可用的服务实例列表进行处理,然后交给服务调用器进行调用负载均衡 接口服务

ILoadBalance也是一个接口,提供了3个具体实现,分别是DynamicServerListLoadBalancer、ZoneAwareLoadBalancer和NoOpLoadBalancer负载均衡 接口服务

DynamicServerListLoadBalancer继承自ILoadBalancer基础实现BaseLoadBalancer,在基础的负载均衡功能上增加了运行期间对服务实例动态更新和过滤的功能;

NoOpLoadBalancer没有操作的实现;
ZoneAwareLoadBalancer(ILoadBalancer的默认的实现类是:ZoneAwareLoadBalancer。)则是继承DynamicServerListLoadBalancer,在此基础上增加防止跨区域访问的问题;

首先它会剔除符合这些规则的Zone区域:所属实例数位零的Zone区域;Zone区域内实例等平均负载小于零,或者实例故障率(断路器断开次数/实例数)大于等于阀值(默认为0.99999)。

然后根据Zone区域等实例平均负载计算出最差的Zone区域,这里的最差指的是实例平均负载最高的Zone区域。

如果在上面的过程中没有符合剔除要求的区域,同时实例最大平均负载小于阀值(默认为20%),就直接返回所有Zone区域为可用区域。否则,从最坏Zone区域集合中随机选择一个,将它从可用Zone区域集合中剔除。

 ▪️当获得的可用Zone区域集合不为空,并且个数小于Zone区域总数,就随机选择一个Zone区域。

▪️在确定了某个Zone区域后,则获取了对应Zone区域的服务均衡器,并调用chooseServer来选择具体的服务实例,而在chooseServer中将使用IRule接口的choose函数来选择具体的服务实例。在这里,IRule接口的实现会使用ZoneAvoidanceRule来挑选出具体的服务实例。
服务列表就是客户端负载均衡所使用的(同一注册中心集群)各服务的服务实例列表。Ribbon在实现上支持以下几种服务列表方式

静态服务器列表:通过Ribbon的BaseLoadBalancer所提供的setServerList()方法,初始化时直接进行动态设置指定;

基于配置的服务器列表:需要在项目配置文件中通过<服务名称.ribbon.listOfServers进行设置。(如user-service.ribbon.listOfServers=,)

基于服务发现的服务器列表:同时使用Ribbon和Eureka时,默认使用该方式,在应用启动时Ribbon就会从Eureka服务器中获取所有注册服务的列表数据,并保持同步。

该组件会对原始服务列表使用一定策略进行过滤返回有效可用的服务器列表给客户端负载均衡器使用。常用服务列表过滤器如下:ZoneAffinityServerListFilter:基于区域感知的方式,实现对服务实例的过滤,仅返回与本身所处区域一直的服务提供者实例列表;ServerListSubsetFilter:该过滤器继承自ZoneAffinityServerListFilter,在进行区域感知过滤后,仅返回一个固定大小的服务列表。默认将返回20个服务实例,可以通过ribbon.ServerListSubsetFilter.size进行设置;

ZonePreferenceServerListFilter:使用Eureka和Ribbon时默认的过滤器。实现通过配置或者Eureka所属区域来过滤出同区域的服务实例列表。

它实现了通过配置或者Eureka实例元数据的所属区域(Zone)来过滤出同区域的服务实例。如下面的源码所示,它的实现非常简单,首先通过父类ZoneAffinityServerListFilter的过滤器来获得“区域感知”的服务实例列表,然后遍历这个结果,取出根据消费者配置预设的区域Zone来进行过滤,如果过滤掉结果是空就直接返回父类获取的结果,如果不为空就返回通过消费者配置的Zone过滤后的结果。
用来检测一个微服务实例是否存活是否有响应,Ribbon通过该组件来判断所持有的服务实例列表中各服务可用情况,如果检测到某服务实例不存在/一定时间未响应,则会从持有服务列表中及时移除。

PingUrl:通过定期访问指定的URL判断;

PingConstant:不做任何处理,只返回一个固定值,用来表示该服务是否可用,默认值为true;

NoOpPing:不做任何处理,直接返回true,表示该服务器可用,默认策略;

DummyPing:直接返回true,但实现了initWithNiwsConfig方法;

NIWSDiscoverPing:根据DiscoveryEnabledServer中InstanceInfo的InstanceStatus属性判断,如果该属性的值为InstanceStatus.UP,则表示服务器可用;

作用就是选择一个最终服务实例地址作为负载均衡处理结果。Ribbon提供的选择策略有随机 (Random)、轮询 (RoundRobin)、一致性哈希 (ConsistentHash)、哈希 (Hash)、加权(Weighted)。

IRule负载均衡策略:通过实现该接口定义自己的负载均衡策略。它的choose方法就是从一堆服务器列表中按规则选出一个服务器。

默认实现:

ZoneAvoidanceRule(区域权衡策略):复合判断Server所在区域的性能和Server的可用性,轮询选择服务器。

负载均衡 接口服务他规则:

BestAvailableRule(最低并发策略):会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。逐个找服务,如果断路器打开,则忽略。

RoundRobinRule(轮询策略):以简单轮询选择一个服务器。按顺序循环选择一个server。

RandomRule(随机策略):随机选择一个服务器。

AvailabilityFilteringRule(可用过滤策略):会先过滤掉多次访问故障而处于断路器跳闸状态的服务和过滤并发的连接数量超过阀值得服务,然后对剩余的服务列表安装轮询策略进行访问。

WeightedResponseTimeRule(响应时间加权策略):据平均响应时间计算所有的服务的权重,响应时间越快服务权重越大,容易被选中的概率就越高。刚启动时,如果统计信息不中,则使用RoundRobinRule(轮询)策略,等统计的信息足够了会自动的切换到WeightedResponseTimeRule。响应时间长,权重低,被选择的概率低。反之,同样道理。此策略综合了各种因素(网络,磁盘,IO等),这些因素直接影响响应时间。

RetryRule(重试策略):先按照RoundRobinRule(轮询)的策略获取服务,如果获取的服务失败则在指定的时间会进行重试,进行获取可用的服务。如多次获取某个服务失败,就不会再次获取该服务。主要是在一个时间段内,如果选择一个服务不成功,就继续找可用的服务,直到超时。

1. <clientName:这是调用ribbon的客户端名称,如果此值为没有配置,则此条属性会作用到所有的客户端。

2. <nameSpace:默认值为 “ribbon”

3. <propertyName:所有的可用的属性都在com.netflix.client.conf.CommonClientConfigKey。

<clientName.<nameSpace.NFLoadBalancerClassName=xx

<clientName.<nameSpace.NFLoadBalancerRuleClassName=xx

<clientName.<nameSpace.NFLoadBalancerPingClassName=xx

<clientName.<nameSpace.NIWSServerListClassName=xx

<clientName.<nameSpace.NIWSServerListFilterClassName=xx

com.netflix.client.config.IClientConfig:Ribbon的客户端配置,默认采用com.netflix.client.config.DefaultClientConfigImpl实现。

com.netflix.loadbalancer.IRule:Ribbon的负载均衡策略,默认采用com.netflix.loadbalancer.ZoneAvoidanceRule实现,该策略能够在多区域环境下选出最佳区域的实例进行访问。

com.netflix.loadbalancer.IPing:Ribbon的实例检查策略,默认采用com.netflix.loadbalancer.NoOpPing实现,该检查策略是一个特殊的实现,实际上它并不会检查实例是否可用,而是始终返回true,默认认为所有服务实例都是可用的。

com.netflix.loadbalancer.ServerList:服务实例清单的维护机制,默认采用com.netflix.loadbalancer.ConfigurationBasedServerList实现。

com.netflix.loadbalancer.ServerListFilter:服务实例清单过滤机制,默认采org.springframework.cloud.netflix.ribbon.ZonePreferenceServerListFilter,该策略能够优先过滤出与请求方处于同区域的服务实例。

com.netflix.loadbalancer.ILoadBalancer:负载均衡器,默认采用com.netflix.loadbalancer.ZoneAwareLoadBalancer实现,它具备了区域感知的能力。

上面的配置是在项目中没有引入spring Cloud Eureka,如果引入了Eureka和Ribbon依赖时,自动化配置会有一些不同。

通过自动化配置的实现,可以轻松的实现客户端的负载均衡。同时,针对一些个性化需求,我们可以方便的替换上面的这些默认实现,只需要在springboot应用中创建对应的实现实例就能覆盖这些默认的配置实现。

@Configuration

public class MyRibbonConfiguration {

    @Bean

    public IRule ribbonRule(){

        return new RandomRule();

    }

}

这样就会使用P使用了RandomRule实例替代了默认的com.netflix.loadbalancer.ZoneAvoidanceRule。

也可以使用@RibbonClient注解实现更细粒度的客户端配置
对于Ribbon的参数通常有二种方式:全局配置以及指定客户端配置

全局配置的方式很简单

只需要使用ribbon.<key=<value格式进行配置即可。其中,<key代表了Ribbon客户端配置的参数名,<value则代表了对应参数的值。比如,我们可以想下面这样配置Ribbon的超时时间

ribbon.ConnectTimeout=250

ribbon.ServerListRefreshInterval=2000   ribbon获取服务定时时间

全局配置可以作为默认值进行设置,当指定客户端配置了相应的key的值时,将覆盖全局配置的内容

指定客户端的配置方式

<client.ribbon.<key=<value的格式进行配置.<client表示服务名,比如没有服务治理框架的时候(如Eureka),我们需要指定实例清单,可以指定服务名来做详细的配置,

user-service.ribbon.listOfServers=localhost:8080,localhost:8081,localhost:8082

对于Ribbon参数的key以及value类型的定义,可以通过查看com.netflix.client.config.CommonClientConfigKey类。

当在spring Cloud的应用同时引入Spring cloud Ribbon和Spring Cloud Eureka依赖时,会触发Eureka中实现的对Ribbon的自动化配置。这时的serverList的维护机制实现将被com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList的实例所覆盖,该实现会讲服务清单列表交给Eureka的服务治理机制来进行维护。IPing的实现将被com.netflix.niws.loadbalancer.NIWSDiscoveryPing的实例所覆盖,该实例也将实例接口的任务交给了服务治理框架来进行维护。默认情况下,用于获取实例请求的ServerList接口实现将采用Spring Cloud Eureka中封装的org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList,其目的是为了让实例维护策略更加通用,所以将使用物理元数据来进行负载均衡,而不是使用原生的AWS AMI元数据。在与Spring cloud Eureka结合使用的时候,不需要再去指定类似的user-service.ribbon.listOfServers的参数来指定具体的服务实例清单,因为Eureka将会为我们维护所有服务的实例清单,而对于Ribbon的参数配置,我们依然可以采用之前的两种配置方式来实现。

此外,由于spring Cloud Ribbon默认实现了区域亲和策略,所以,可以通过Eureka实例的元数据配置来实现区域化的实例配置方案。比如可以将不同机房的实例配置成不同的区域值,作为跨区域的容器机制实现。而实现也非常简单,只需要服务实例的元数据中增加zone参数来指定自己所在的区域,比如:

eureka.instance.metadataMap.zone=shanghai

在Spring Cloud Ribbon与Spring Cloud Eureka结合的工程中,我们可以通过参数禁用Eureka对Ribbon服务实例的维护实现。这时又需要自己去维护服务实例列表了。

ribbon.eureka.enabled=false.

由于Spring Cloud Eureka实现的服务治理机制强调了cap原理的ap机制(即可用性和可靠性),与zookeeper这类强调cp(一致性,可靠性)服务质量框架最大的区别就是,Eureka为了实现更高的服务可用性,牺牲了一定的一致性,在极端情况下宁愿接受故障实例也不要丢弃"健康"实例。

比如说,当服务注册中心的网络发生故障断开时候,由于所有的服务实例无法维护续约心跳,在强调ap的服务治理中将会把所有服务实例剔除掉,而Eureka则会因为超过85%的实例丢失心跳而触发保护机制,注册中心将会保留此时的所有节点,以实现服务间依然可以进行互相调用的场景,即使其中有部分故障节点,但这样做可以继续保障大多数服务的正常消费。

在Camden版本,整合了spring retry来增强RestTemplate的重试能力,对于我们开发者来说,只需要简单配置,即可完成重试策略。

spring.cloud.loadbalancer.retry.enabled=true

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000

user-service.ribbon.ConnectTimeout=250

user-service.ribbon.ReadTimeout=1000

user-service.ribbon.OkToRetryOnAllOperations=true

user-service.ribbon.MaxAutoRetriesNextServer=2

user-service.ribbon.maxAutoRetries=1

spring.cloud.loadbalancer.retry.enabled:该参数用来开启重试机制,它默认是关闭的。

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:断路器的超时时间需要大于Ribbon的超时时间,不然不会触发重试。

user-service.ribbon.ConnectTimeout:请求连接超时时间。

user-service.ribbon.ReadTimeout:请求处理的超时时间

user-service.ribbon.OkToRetryOnAllOperations:对所有操作请求都进行重试。

user-service.ribbon.MaxAutoRetriesNextServer:切换实例的重试次数。

user-service.ribbon.maxAutoRetries:对当前实例的重试次数。

根据以上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由maxAutoRetries配置),如果不行,就换一个实例进行访问,如果还是不行,再换一个实例访问(更换次数由MaxAutoRetriesNextServer配置),如果依然不行,返回失败
项目启动的时候会自动的为我们加载LoadBalancerAutoConfiguration自动配置类,该自动配置类初始化条件是要求classpath必须要有RestTemplate这个类,必须要有LoadBalancerClient实现类。

LoadBalancerAutoConfiguration为我们干了二件事,第一件是创建了LoadBalancerInterceptor拦截器bean,用于实现对客户端发起请求时进行拦截,以实现客户端负载均衡。创建了一个

RestTemplateCustomizer的bean,用于给RestTemplate增加LoadBalancerInterceptor拦截器。

每次请求的时候都会执行org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor的intercept方法,而LoadBalancerInterceptor具有LoadBalancerClient(客户端负载客户端)实例的一个引用,

在拦截器中通过方法获取服务名的请求url(比如http://user-service/user),及服务名(比如user-service),然后调用负载均衡客户端的execute方法。

执行负载客户端RibbonLoadBalancerClient(LoadBalancerClient的实现)的execute方法,得到ILoadBalancer(负载均衡器)的实现ZoneAwareLoadBalancer,并且通过调用其chooseServer方法获得服务列表中的一个实例,比如说user-service列表注册到eureka中一个实例。然后向其中的一个具体实例发起请求,得到结果。
Ribbon详解 

https://www.jianshu.com/p/1bd66db5dc46

Spring cloud系列六 Ribbon的功能概述、主要组件和属性文件配置  

https://blog.csdn.net/hry2015/article/details/78357990

Ribbon的ZoneAwareLoadBalancer  

https://blog.csdn.net/chengqiuming/article/details/81209131

Ribbon的实际使用

https://www.jianshu.com/p/f86af82fa782

本人有道云笔记中记录的参考文章

文档:04_ribbon 负载均衡.note

链接:http://note.youdao.com/noteshare?id=74e2434f21c3e96fb106be44fd8ed0b9⊂=2516B0E6DFEE4786B26D9528AF522928 关于负载均衡 接口服务和负载均衡服务器f5的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 负载均衡 接口服务的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于负载均衡服务器f5、负载均衡 接口服务的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:修改及反编译可运行Jar包实现过程详解
下一篇:网贷平台数据分析(网贷行业数据)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~