nginx负载均衡ip-hash算法

nginx负载均衡ip-hash算法
微生物过滤我们指出:⽹络负载均衡本质上是分布式业务中调度系统的⼀种实现。作为⽹络请求分配的控制者,负载均衡器起着⾄关重要的作⽤。考虑到在任何⼀个⽹络请求中,都有⼀个源地址和⽬标地址(源IP和⽬标IP)。这样,在负载均衡器中,我们就可以利⽤这两个IP,通过⼀种散列算法把请求分配到不同的服务器上。这种算法就是⽬标散列调度(利⽤⽬标IP)和源地址散列调度(利⽤源IP)。这两种算法为静态算法。
  下⾯我们分别简要讲述⼀下。
  ⽬标地址散列调度(Destination Hashing Scheduling)算法
  ⽬标地址散列调度(Destination Hashing Scheduling)算法的基本原理是:此算法根据请求的⽬标IP地址,作为散列键(Hash Key)从静态分配的散列表出对应的服务器,若该服务器是可⽤的且未超载的,则将请求发送到该服务器,否则返回空。这⾥我们设定某个服务器的连接数⽬⼤于2倍的权值,则表⽰此服务器已超载。
  ⽬标地址散列算法流程
  假设有⼀组服务器S = {S0, S1, ..., Sn-1},W(i)表⽰服务器Si的权值,C(i)表⽰服务器Si的当前连接数。ServerNode[]是⼀个Hash表。此表⼤⼩就是服务器的数⽬,也可根据算法模块中的具体条件修改。
电路板的制作
自动启闭阀  算法的初始化是将所有服务器顺序、循环地放置到ServerNode表中。
n = ServerNode[hashkey(dest_ip)];
  if ( (n is dead) OR (W(n) == 0) OR (C(n) > 2*W(n))) then储酒罐
  return NULL;
  return n; // 如果⼀切OK
  上⾯的算法中,hashkey()为散列函数。在实现时,⼀般采⽤素数乘法Hash函数,通过乘以素数使得散列键值尽可能地达到较均匀的分布。
  Hashkey实现如下:
static inline unsigned hashkey(unsigned int dest_ip)
  {
  return (dest_ip* 2654435761UL) & HASH_TAB_MASK;
  }
  其中,2654435761UL是2到2^32 (4294967296)间接近于黄⾦分割的素数,
  (sqrt(5) - 1) / 2 = 0.618033989微型齿轮
  2654435761 / 4294967296 = 0.618033987
  源地址散列调度(Source Hashing Scheduling)算法
  源地址散列调度(Source Hashing Scheduling)算法的基本原理是:此算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表出对应的服务器,若该服务器是可⽤的且未超载的,则将请求发送到该服务器,否则返回空。这⾥我们设定某个服务器的连接数⽬⼤于2倍的权值,则表⽰此服务器已超载。、
  可以看出,这种⽅式和⽬标地址散列调度⽅法是类似的,唯⼀的区别是以源地址作为散列键。防爆voc在线监测系统
  源地址散列算法流程
  源地址散列算法流程和⽬标地址散列算法流程类似,采⽤的散列函数也⼀样。唯⼀不同的是,需要将请求的⽬标IP地址换成请求的源IP地址,所以这⾥不再赘述。
  总结
  源地址散列调度和⽬标散列调度属于两种静态的调度算法,在实际应⽤中,这两种调度算法可以结合使⽤在防⽕墙集中,它们可以保证整个系统的唯⼀出⼊⼝。

本文发布于:2024-09-22 03:36:46,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/98259.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:散列   服务器   算法   调度   请求   源地址
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议