8分钟Nginx实现负载均衡

一、实现负载均衡

在上面的介绍中只实现了nginx的代理一台wen服务器,在现实的开发中不可能一个Nginx服务器代理一个web服务器的情况,而是代理多台的web服务器。

1、在克隆一个tomca的服务器

服务器信息:

NO主机名称IP地址描述
1tomcat-service-1192.168.239.132tomcat
2nginx-service-01192.168.239.133nginx
3tomcat-service-2192.168.239.134tomcat

2、修改主机的名称

root@tomcat-service-1:~# vim /etc/hostname
tomcat-service-2

3、为了呈现效果修改两个tomcat中index.html的静态文件

tomcat-service-1
<h1>192.168.239.132</h1>
tomcat-service-2
192.168.239.134

4、启动两个tomcat服务,检测两个服务是否可以正常访问

tomcat-service-1:
在这里插入图片描述
tomcat-service-2:
在这里插入图片描述
以上结果显示两台web服务可以正常访问,下面使用Nginx代理两台服务器

5、修改Nginx的配置文件,增加负载均衡配置

  upstream appserver{
        server 192.168.239.132:8080;
        server 192.168.239.134:8080;
  		}
  location / {
        proxy_pass http://appserver;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        index  index.html index.htm;
        }

添加upstream appserver 配置项实现负载均衡操作,添加完毕后在修改代理的路径proxy_pass http://appserver,在修改完nginx.conf文件后必须检查是否配置成功

nginx -t

显示如下信息标识配置成功
在这里插入图片描述

成功之后重启nginx的服务,观察是否配置成功

root@ubuntu:/usr/local/nginx/conf# /usr/local/nginx/sbin/nginx -s reload

使用浏览器访问nginx服务器,检测是否代理两台web服务器
在这里插入图片描述
在这里插入图片描述
此时我们可以看到nginx实现了两台web服务器的代理,当用户发送请求的时候是实现循环访问,这就实现了web服务器的负载均衡

二、其他配置

1、增加权重配置,权重配置值越高有可能先被执行

upstream appserver{
        server 192.168.239.132:8080 weight=5;
        server 192.168.239.134:8080 weight=1;
        }

2、检测配置和重新加载

/usr/local/nginx/sbin/nginx -t
root@ubuntu:/usr/local/nginx/conf# /usr/local/nginx/sbin/nginx -s reload

3、如果某台主机不参与配置,则将配置修改为

server 192.168.239.130   down;

4、如果某台主机只有在高负载量的时候才参与计算,则修改配置为

server 192.168.239.130  backup;

以上操作会导致一个问题,当用户登录的时候访问的是第一台服务器,但是第二次访问的时候被代理第二胎服务器,此时登录信息就无效了,需要重新登录,此时其中的一种解决方案是让用户访问的时候一直访问到登录的web服务器。此时针对以上的问题我们可以使用Nginx的ip_hash配置实现,该特征是用户在以后的访问中只能访问第一次访问的服务器,该配置很简单,直接在upstream节点中添加一个ip_hash就可以实现

 upstream appserver{
        server 192.168.239.132:8080;
        server 192.168.239.134:8080;
        ip_hsah;
        }

以上的方案并非是最好的解决方案,最后的方案是将用户的信息保存在redis中,之后再次访问的时候先到redis中进行查询在确定用户是否登录,如果redis中有记录则表示登录成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值