1. nginx负载均衡
图片.png
2.哈希算法的逻辑示例
图片.png
使用
upstream tomcats {
ip_hash;
server 192.168.121.166:8080 weight=1 max_conns=2;
server 192.168.121.167:8080 weight=2 max_conns=2;
server 192.168.121.167:8088 weight=5 max_conns=2;
}
3.详细了解哈希算法是如何实现的
可以查看nginx的源码,找到nginx的软件目录,我本地的在home//nginx-1.18/src/http/下的.c中
图片.png
可以查询到的值为3,而从这个关键代码中我们大致可以了解到,其实这个hash值是根据前三个IP段来计算的,比如192.168.1.12、192.168.1.13、192.168.1.14。而nginx计算出来的hash值,是基于192 168 1这个IP段来计算的。所以如果在本地虚拟机中使用这种负载均衡方式,那么192.168.1.12、192.168.1.13、192.168.1.14这三个IP,其实访问的是一台机器。
4.注意事项
如果集群中某个服务器发生故障,我们想将其从 nginx 集群配置中移除,那么我们不能简单地删除那一行,例如 192.168.121.167:8080 =2 =2;。如果直接删除,会导致 nginx 的哈希算法重新计算,用户的 或者缓存就会失效。所以如果我们这里不用这台服务器,那么就直接比对为 down,也就是 192.168.121.167:8080 down
这就是你所需要做的。
upstream tomcats {
ip_hash;
server 192.168.121.166:8080 weight=1 max_conns=2;
server 192.168.121.167:8080 weight=2 max_conns=2;
server 192.168.121.167:8088 weight=5 max_conns=2;
}
5.那么第四点提到的问题该如何解决呢?
如果某台机器出现问题,必须重新计算哈希值,用户的缓存会话就丢失了,那么用户的请求时间就会长很多,这时候我们就需要使用一致性哈希算法了:
图片.png
这样的哈希算法有一个好处,就是可以保证在服务器发生故障的情况下,绝大多数用户不会遇到任何问题。以前因为节点不足,节点数量减少,所以每次请求都要重新计算,分配到哪个节点,但是一致性哈希算法不会,它只会影响到靠近更新节点的一小部分位置。比如节点 3 因为故障被移除,那么上游的两个用户请求就会到节点 4,其他用户不会发生改变。
扫一扫在手机端查看
-
Tags : 负载均衡 nginx负载均衡配置 nginx集群
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。