Nginx–负载均衡(hash一致性)
1,Nginx负载均衡–hash一致性模块
详细配置参数可参考官网
Nginx哈希一致性模块官网
2,上生产环境配置
部分涉密信息隐去
upstream dns1{
hash $remote_addr;
server 192.168.1.30:12345 max_fails=3 fail_timeout=3s;
server 192.168.1.31:12345 max_fails=3 fail_timeout=3s;
server 192.168.1.33:12345 max_fails=3 fail_timeout=3s;
server 192.168.1.33:8888 backup;
}
server {
listen 12346 udp;
proxy_pass dns1;
proxy_timeout 10s;
proxy_respinse 1;
error_log logs/dcloud.log;
}
3,Hahs和Hash一致性
3.1,hash
nginx的负载均衡时有一个hash $request_uri的选项,这个是类似于LVS的dh。是针对客户端访问的uri来做的绑定。这样客户端访问同一个uri的时候,会被分配到同一个服务器上去。这样提高了缓存的命中率。
过程:每个uri进行hash计算得到一个数值,这个数值除以整个节点数量取余数。(取模算法)
缺点:如果一个节点挂了,那么整个全局都会乱掉。因为整个的节点数变了,因为除数变了。
该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器,比如:
hash $remote_addr:可以根据客户端ip映射
hash $request_uri: 根据客户端请求的uri映射
hash $args:根据客户端携带的参数进行映射
3.2,一致性hash
参考以下两篇文章:
1,https://blog.csdn.net/liquantong/article/details/105351398
2,https://blog.csdn.net/publicv/article/details/104732046