首页 > 编程知识 正文

常用的负载均衡算法,萤火虫算法与负载均衡

时间:2023-05-05 23:14:47 阅读:130131 作者:3449

1 .简要说明负荷分散。 如果您的nginx服务器代理两台web服务器,而负载均衡算法采用轮询,那么如果一台机器的web程序在火星寒风中停止,无法访问web,nginx服务器仍然会出现问题如果此处的响应连接时间过长,则客户端页面正在等待响应,这将损害用户的体验。 这里怎么才能避免这样的事态呢?这里附上图表说明问题。

如果web2在负载平衡期间出现这种情况,nginx会首先向web1发送请求;但是,如果配置不正确,nginx会继续向web2发送请求,并等待web2响应,直到响应时间超时。 如果此处的响应时间过长,则用户等待的时间会变长。

提供三台带nginx的虚拟机,一台作为反向代理服务器,另两台作为实时服务器模拟负载平衡。

192.168.13.129 #反向代理服务器192.168.13.133 #实际服务器192.168.13.139 # 3.3台配置反向代理服务器配置如下: [Roor] conf.d/default.conf清空,upstream test _ server { server 192.168.13.133:8080; server 192.168.13.139:8080; } server { listen 80; server_name localhost; 位置/{ proxy _ pass http://test _ server; } [ root @ server (] # nginx-t [ root @ server ] ] # nginx-s reload第一个实际服务器配置(192.168.13.133 ) ) root @ real-serverved 位置/{ root/usr/share/nginx/html/log in; 索引索引. html index.html; }创建[ root @ real-server (] # nginx-t [ root @ real-server ] ] # nginx-s reload #目录和文件,并写入测试数据(root @ echo ' thisisfirstreal-server '/usr/share/nginx/html/log in/index.html第二台实际服务器配置vim/etc/nginx/conf.d/server_name localhost; 位置/{ root/usr/share/nginx/html/log in; 索引索引. html index.html; }创建[ root @ real-server (] # nginx-t [ root @ real-server ] ] # nginx-s reload #目录和文件,并写入测试数据(root @ echo ' thisissecondreal-server '/usr/share/nginx/html/log in/index.html测试:打开

振作起来

4 .负载均衡算法upstream支持四种负载均衡调度算法:

答:轮询(默认) :每个请求按时间顺序分配给不同的后端服务器。

b,ip_hash:每个请求被分配给访问IP的每个混列结果,其中同一IP客户端固定访问后端服务器。 可以确保来自同一ip的请求命中固定的计算机,从而解决session问题。

c,url_hash:根据访问url的hash结果分配请求,以便每个url发送到同一后端服务器。 如果后台服务器是缓存,则效率很高。

d,fair:这是一种比上面两个更智能的负载均衡算法。 该算法可以根据页面大小和加载时间的长短智能地平衡负载。 这意味着根据后端服务器的响应时间分配请求,并提供响应时间短的优先分配。 Nginx本身不支持fair。 如果需要使用此调度算法,则必须下载Nginx的upstream_fair模块。

配置实例

1、热备盘:有两台服务器时,第一台服务器发生事故时,启用第二台服务器提供服务。

upstream test _ server { server 192.168.13.13:80; 服务器192.168.13.139336080 backup; }然后,再次访问方向代理服务器ip

2 .轮询:默认情况下,nginx的所有轮询权重都为1,访问服务器的顺序为第一台服务器、第二台、第一台、第二台,然后再次循环。 (由于默认值为轮询,因此不需要添加参数。 )

3、加权轮询:根据配置的加权大小向不同的服务器发布不同数量的请求。 如果不设置,则默认值为1。

ustream test _ server { server 192.168.13.13:80 weight=1; server 192.168.13.139336080重量=3; } 4、ip_hash:nginx要求同一客户端ip请求同一服务器。

upstream test _ server { server 192.168.13.13:80; 服务器192.168.13.139:80; ip_hash; (5、nginx负载均衡配置状态参数

down,表示当前服务器暂时不参与负载平衡。 backup,预约的备份机。 由于所有其他非backup计算机都出现故障或繁忙时请求backup计算机,因此该计算机的压力最小。 max_fails,允许请求失败的次数。 默认值为1。 如果超过最大次数,则返回错误。 经历fail_timeout、max_fails失败后,暂停服务的时间单位秒。 max_fails可与fail_timeout一起使用。 ustream test _ server { server 192.168.13.13:80 weight=2max _ fails=2fail _ time out=2; #加权轮询权重为2,在请求失败两次后,可以暂停服务2秒钟。 server 192.168.13.139336080 weight=3max _ fails=3fail _ time out=3; #加权轮询权重为3,请求失败3次后,可以暂停服务3秒钟}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。