蚊子的nginx笔记 - nginx实现负载均衡

实现服务代理

继上一篇 nginx基础命令 后,这次讲一下如何用nginx实现负载均衡。

场景说明:
当用户输入http://manage.jt.com/index时,访问对服务器页面。

前期准备:

1.编辑nginx配置文件
server {
	listen		80;
	server_name  manage.jt.com;

	location / {
	
		proxy_pass http://localhost:8091;
	}
}
2.Tomcat集群部署

Windows中部署tomcat集群
准备3台tomcat

在这里插入图片描述

修改配置文件

启动3台tomcat服务器.修改对应的端口号

  1. 修改8005端口
    2

  2. 修改8080端口. 在这里插入图片描述

  3. 修改8009端口. 在这里插入图片描述

项目发布

将原有的ROOT文件删除,部署新的war包(目的是输入localhost:8080能直接访问到工程).之后重启tomcat服务

在这里插入图片描述

3.基于Nginx实现负载均衡

重点来了!!负载均衡常用的又轮询策略,权重策略,及hash_ip。下面将依次讲讲各种策略的配置!

3.1 轮询策略

特点:根据配置文件的顺序,依次访问不同的tomcat服务器.
配置:

#配置tomcat负载均衡  1.轮询	
upstream jt {
	server localhost:8091;
	server localhost:8092;
	server localhost:8093;
}
#后台管理系统
server {
	listen		80;
	server_name  manage.jt.com;

	location / {
		proxy_pass http://jt;
	}
}

说明:
upstream是轮询策略的关键字,jt是给这个轮询策略起的一个名字;
使用轮训策略,proxy_pass就不能像基础配置内那样写死某台服务器的地址,proxy_pass http://jt表示拦截用户访问manage.jt.com,会使用jt的轮询策略。

3.2 权重策略

特点:根据服务器处理能力不同,动态划分请求,处理能力越高,所处理的请求越多.
配置文件:

#配置tomcat负载均衡  1.轮询  2.权重
upstream jt {
	server localhost:8091 weight=6;
	server localhost:8092 weight=3;
	server localhost:8093 weight=1;
}

说明:权重的关键字 weight

3.3 IP_HASH

实际问题:
采用集群的方式不能实现用户Session共享.因为不同的tomcat之间是物理隔离.如何解决???
专业术语:
Session黏着:指Session共享
解决方案:
A:采用SessionId进行URL重写.
优点:可以实现Session共享,Cookie禁用
缺点:效率太低
B:使用Nginx中IP_HASH技术.能够根据用户的IP动态的绑定到一台服务器中.变向的实现Session共享.IP_HASH中优先级最高.配置后轮询和权重不生效.
缺点:

  1. 如果服务器宕机,用户访问受限

  2. 使用IP_hash导致负载不均.

  3. 安全性不好
    C:实现单点登录(后期学习)SSO

    #配置tomcat负载均衡  1.轮询  2.权重  3.ip_hash方式
    upstream jt {
    	ip_hash;
    	server localhost:8091 weight=6;
    	server localhost:8092 weight=3;
    	server localhost:8093 weight=1;
    }
    

说明:ip_hash优先级最高,配置ip_hash后,权重及轮询都不会生效。

3.4 Nginx故障迁移
  1. 手动下线
    server localhost:8091 weight=6 down;

  2. 备用机机制
    server localhost:8093 weight=1 backup;

  3. 设定超时时间
    proxy_connect_timeout 3;
    proxy_read_timeout 3;
    proxy_send_timeout 3;

  4. 健康检测
    说明:在规定的周期内,用户会通过健康检测.检查当前的服务器是否可用,如果发现服务器宕机.则在当前的周期内不会再将请求发往故障机.
    直到下个周期.如果当故障机修复.可以在下一个周期后继续提供服务.
    server localhost:8091 max_fails=1 fail_timeout=60s;
    说明:max_fails 如果服务器超时达到最大次数,该服务器就会停止一个周期的服务;
    fail_timeout 代表一个服务周期的时间;

  5. 完整代码

    #配置tomcat负载均衡  1.轮询  2.权重  3.ip_hash方式
    upstream jt {
    	#ip_hash;		
    	server localhost:8091 max_fails=1 fail_timeout=60s;
    	server localhost:8092 max_fails=1 fail_timeout=60s;
    	server localhost:8093 max_fails=1 fail_timeout=60s;
    }
    #后台管理系统
    server {
    	listen		80;
    	server_name  manage.jt.com;
    
    	location / {
    		proxy_pass http://jt;
    		proxy_connect_timeout       3;  
    		proxy_read_timeout          3;  
    		proxy_send_timeout          3; 
    	}
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值