nginx负载均衡策略
产品型号:ThinkPad E15系统版本:CentOS 8Nginx 负载均衡策略:1. 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除。 ``` upstream backserver { server 192.168.1.62; server 192.168.1.64; } ```2. 指定权重 指定了轮询的几率,weight 权重大小和访问比率成正比,用于后端服务器性能不均的情况。 ``` upstream backserver { server 192.168.1.62 weight=1; server 192.168.1.64 weight=2; } ```3. IP哈希 每个请求,按访问IP的哈希结果进行分配,这样每个访客,会固定访问同一个后端服务器,可以解决session的问题
使用Nginx实现负载均衡
nginx负载均衡-普通hash和一致性hash负载均衡实现
负载均衡原理中,ngx_http_upstream_hash_module支持两种算法:普通hash和一致性hash。默认使用普通hash进行负载均衡。在普通hash算法中,可以配置HTTP变量值作为hash值计算的key,计算出的hash值与总权重的余数决定选择哪个server。而一致性hash算法则更加复杂,主要用于解决后端服务器数量变化导致请求不均匀分配的问题。一致性hash算法原理在于改进hash算法,确保服务器数量变化时,请求的分配更加均衡。若后端服务器数量增加,普通hash算法可能使部分服务器负载过重,导致效果不佳。一致性hash通过计算虚拟节点的hash值,并基于此值顺时针查找,将请求定向到最近的服务器上。这种机制使得服务器数量变化时,只影响计算出的key值与最近虚拟节点之间的映射,避免了全局影响。这样,即使服务器数量调整,请求分布仍然保持均匀。一致性hash点结构和虚拟节点集合描述了算法的核心概念
CentOS环境下Nginx实现3台虚拟机负载均衡
负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可。 测试环境 在VMware里安装了三台。 A服务器IP :192.168.0.219 (主) B服务器IP :192.168.0.119 C服务器IP :192.168.0.109 部署思路 A服务器做为主服务器,域名直接解析到A服务器(192.168.0.219)上,由A服务器负载均衡到B服务器(192.168.0.119)与C服务器(192.168.0.109)上。 在A服务器上,upstream指令——分配负载 vi /etc/nginx/conf.d/default.conf upstream
nginx如何实现负载均衡、限流、缓存、黑白名单和灰度发布
1.负载均衡配置 2.失败重试配置 在fail_timeout时间内失败了max_fails次请求后,认为上游服务器不可用,就会将服务地址剔除掉,fail_timeout时间后会再次将服务器加入存活列表进行重试。 limit_req_zone指令设置参数 参数说明 limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。 Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,例子区域可以存储160000个IP地址。 Rate定义最大请求速率。示例中速率不能超过每秒10个请求。 设置限流 burs排队大小,nodelay不限制单个请求间的时间