目录
[3.基于IP HASH的负载均衡](#3.基于IP HASH的负载均衡)
一:负载均衡介绍
nginx 是一个高性能的 Web 服务器和反向代理服务器,可以用来实现负载均衡。nginx 的负载均衡功能是通过配置upstream块来实现的。在upstream块中,可以配置多个后端服务器,并且可以通过各种算法来选择其中一个服务器来处理请求。
二、负载均衡具备的功能
1.提高服务器性能
负载均衡可以将请求分配到多个服务器上,从而提高服务器的处理能力和响应速度。
2.提高系统可用性
当一台服务器出现故障时,负载均衡可以将请求自动转移到其他正常的服务器上,从而避免系统停机。
3. 提高系统的可伸缩性
当系统负载增加时,可以通过添加更多的服务器来扩展系统的处理能力。
4. 实现流量均衡
负载均衡服务器通过某种调度算法将流量分配到不同的应用程序服务器,以确保每个服务器都能得到合理的工作量,避免过载。
三、 示例配置 , 如何 使用nginx实现负载均衡
XML
http {
upstream backend {
server 192.168.116.12:8081;
server 192.168.116.12:8082;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
在上面的配置中,我们定义了一个名为backend 的upstream 块,其中列出了三个后端服务器:backend1.example.com、backend2.example.com和backend3.example.com。然后,在server块中,我们将请求代理到backend,这样nginx就会从这三个后端服务器中选择一个来处理请求。
nginx提供了多种负载均衡算法,例如:权重(weight)、轮询(round-robin)、IP哈希(ip-hash)。可以通过在upstream块中使用相应的配置指令来实现不同的算法。
四、负载均衡策略配置
1. 基于轮询的负载均衡(默认)
每个请求,按时间顺序逐一分配到不同的后端应用服务器节点,如果后端服务出现故障,nginx能够自动剔除该节点,具体配置方式如上述demo示例配置;
2.基于权重( weight)的负载均衡
权重(weight )默认值为1,权重越高,被分配的请求数量越多。
例如:A节点权重=2,B节点权重=1,则请求会按照A:B=2:1的方式轮询。
配置参考如下:
3.基于 IP HASH的负载均衡
每个请求,按照访问IP的hash结果分配,由于hash值为不重复的唯一值,因此每个请求能够固定访问同一个后端服务器,这样可以做到会话保持,解决session同步问题。
配置参考如下:
XML
http {
ip_hash;
upstream backend {
server 192.168.116.12:8080;
server 192.168.116.12:8081;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
4.实现主备服务
通过 Nginx 实现在 192.168.116.12:8080 服务器挂掉的情况下自动切换到 192.168.12:8081 服务器,可以使用 Nginx 的代理模块和负载均衡功能。
XML
http {
upstream backend {
server 192.168.116.12:8080 fail_timeout=10s;
server 192.168.116.12:8081 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
在上述示例中:
upstream 块定义了服务器组 backend,其中 192.168.116.12:8080 被指定为主服务器,并设置了 fail_timeout=10s,表示当服务器不可用时,Nginx 会在 10 秒后重新尝试连接。
192.168.116.12:8081 被指定为备用服务器,使用 backup 参数标记,表示只有在主服务器不可用时才会被使用。
location 块中的 proxy_pass 指令将请求转发到服务器组 backend,而 proxy_set_header Host $host; 则会将原始请求的 Host 头部信息传递给后端服务器。
当 192.168.116.12:8080 服务器不可用时,Nginx 会自动将请求转发到备用服务器 192.168.116.12:8081这样,用户在不知情的情况下可以继续访问可用的服务器。
请确保在每个服务器上的 Nginx 配置文件中进行正确的配置,并根据您的实际情况进行调整。
五、后端配合
对于后端来说,配合相对简单,只需要启动多个后端服务即可;
注意:后端启动的端口号要和上方配置nginx的端口保持一致。