当前位置: 首页>前端>正文

nginx多服务器负载均衡 nginx负载均衡多个微服务


文章目录

  • 一、实现负载均衡
  • 1、在克隆一个tomca的服务器
  • 2、修改主机的名称
  • 3、为了呈现效果修改两个tomcat中index.html的静态文件
  • 4、启动两个tomcat服务,检测两个服务是否可以正常访问
  • 5、修改Nginx的配置文件,增加负载均衡配置
  • 二、其他配置
  • 1、增加权重配置,权重配置值越高有可能先被执行
  • 2、检测配置和重新加载
  • 3、如果某台主机不参与配置,则将配置修改为
  • 4、如果某台主机只有在高负载量的时候才参与计算,则修改配置为


一、实现负载均衡

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

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

服务器信息:

NO

主机名称

IP地址

描述

1

tomcat-service-1

192.168.239.132

tomcat

2

nginx-service-01

192.168.239.133

nginx

3

tomcat-service-2

192.168.239.134

tomcat

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:

nginx多服务器负载均衡 nginx负载均衡多个微服务,nginx多服务器负载均衡 nginx负载均衡多个微服务_tomcat,第1张

tomcat-service-2:

nginx多服务器负载均衡 nginx负载均衡多个微服务,nginx多服务器负载均衡 nginx负载均衡多个微服务_nginx_02,第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多服务器负载均衡 nginx负载均衡多个微服务,nginx多服务器负载均衡 nginx负载均衡多个微服务_nginx_03,第3张

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

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

使用浏览器访问nginx服务器,检测是否代理两台web服务器

nginx多服务器负载均衡 nginx负载均衡多个微服务,nginx多服务器负载均衡 nginx负载均衡多个微服务_nginx多服务器负载均衡_04,第4张

nginx多服务器负载均衡 nginx负载均衡多个微服务,nginx多服务器负载均衡 nginx负载均衡多个微服务_nginx多服务器负载均衡_05,第5张

此时我们可以看到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中有记录则表示登录成功。



https://www.xamrdz.com/web/2ve1960151.html

相关文章: