同一局域网内终端使用ip_hash负载均衡策略,访问全部分发到同一个后端服务器

同一局域网内终端使用ip_hash负载均衡策略,访问全部分发到同一个后端服务器
原文:https://blog.csdn.net/sd4493091/article/details/54894479

现象:

Nginx和客户端处于同一个局域网,使用ip_hash负载均衡策略,不同客户端的请求全部都分发到同一个后台服务器

原因:

将客户端ip转化成C类网络地址,然后将该网络地址当作hash关键字,来保证这个客户端请求总是被转发到一台服务器上

C类网络:C类IP地址是指,在IP地址的4段号码中,前3段号码为网络号码,剩下的1段号码为本地计算机的号码

Nginx的ip_hash算法都将一个ip地址的前三段作为hash的关键字。

解决:

修改 nginx源码文件重新编译运行。nginx-1.8.1.tar.gz/src/http/modules/ngx_http_upstream_ip_hash_module.c

80 static u_char ngx_http_upstream_ip_hash_pseudo_addr[3];
//3改成4 static u_char ngx_http_upstream_ip_hash_pseudo_addr[3];

121 case AF_INET:
122    sin = (struct sockaddr_in *) r->connection->sockaddr;
123    iphp->addr = (u_char *) &sin->sin_addr.s_addr;
124    iphp->addrlen = 3;//3改成4 iphp->addrlen = 4;
125    break;

135    default:
136        iphp->addr = ngx_http_upstream_ip_hash_pseudo_addr;
137        iphp->addrlen = 3;//3改成4 iphp->addrlen = 4;
138    }

编译运行:
https://www.cnblogs.com/kenshinobiy/p/9118010.html
按照上述编译运行可能出现的问题:

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such

https://blog.csdn.net/weixin_44297303/article/details/89505398?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值