Nginx高级应用
0 前期准备
Nginx
链接:https://pan.baidu.com/s/1Quep0N9cLmHqMIksWs88kg
密码:mtg2
Tomcat
链接:https://pan.baidu.com/s/16Z8gy2OJezVGEU0LXrwSjw
密码:x4db
1 服务代理
1.1 需求
要求用户访问 http://manage.jt.com/index 时,访问京淘后台页面
1.2 编辑配置文件
#后台管理系统
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://localhost:8091;
}
}
1.3 页面效果
2 Tomcat集群部署
2.1 Windows中部署tomcat集群
2.1.1 准备3台tomcat
2.1.2 修改配置文件
启动3台tomcat,修改对应的端口号
1.修改8005端口
2.修改8080端口
3.修改8009端口
2.1.3 项目发布
将原有的ROOT文件删除,部署新的war包,之后重启tomcat服务
2.2 基于Nginx实现负载均衡
2.2.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;
}
}
2.2.2 权重
特点
根据服务器处理能力的不同,动态划分请求,处理能力越高,所处理的请求越多。
配置文件:
#配置tomcat负载均衡 1.轮询 2.权重
upstream jt {
server localhost:8091 weight=6;
server localhost:8092 weight=3;
server localhost:8093 weight=1;
}
2.2.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)
2.2.4 Nginx故障迁移
-
手动下线
server localhost:8091 weight=6 down; -
备用机机制
server localhost:8093 weight=1 backup; -
设定超时时间
proxy_connect_timeout 3;
proxy_read_timeout 3;
proxy_send_timeout 3; -
健康监测
说明:在规定的周期内,用户会通过健康监测,检查当前的服务器是否可用。
如果发现服务器宕机,则在当前的周期内不会再将请求发往故障机,直到下个周期;故障机修复后,可以在下一个周期后继续提供服务。
server localhost:8091 max_fails=1 fail_timeout=60s;
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;
}
}
2.2.5 公司中服务器部署步骤
- 根据本次部署的策略,将服务器进行分类。
- 将需要部署的服务器进行下线down。
- 将war包发布到指定的tomcat服务器中,之后进行测试,如果测试无误将该服务器上线即可。
- 之后依次上线其他的服务器。
3 Linux中集群部署
3.1 虚拟机介绍
3.1.1 虚拟机参数
内存:如果设定了指定的内存大小,那么当虚拟机启动时,会从操作系统中割裂指定的内存大小。
3.1.2 网络模式
-
桥接模式:虚拟机直接连接网络
特点:只要在局域网中的机器都可以访问虚拟机。 -
NAT模式:在当前的网络环境中,依据虚拟机的net8网卡,开辟了一块全新的网络空间,该空间只能真实的宿主机访问,其他人不能访问虚拟机。
192.168.126.1 代表windows真实计算机的IP地址
3.1.3 克隆虚拟机
3.1.4 配置静态IP
3.1.5 XShell安装
说明
XShell是一种远程连接Linux操作系统的工具。
-
虚拟机连接
-
如果虚拟机连接不通,需要动态修改IP获取方式
之后禁用再启动即可。
3.2 Linux介绍
特点:
1.开源和免费的 规范Unix—Linux
2.运行稳定
-2.1 占用内核小
-2.2 全部的程序都是基于文件的
3.Linux系统在服务端应用广泛,安全性更好。
以下是主流的Linux系统:
3.2.2 Linux命令
命令 | 作用 |
---|---|
cd | 进入指定目录下 |
ls | 查询当前文件夹下的文件信息 |
pwd | 查询当前文件所在位置 |
mkdir 文件名称 | 创建文件夹 mkdir -p ee/ff/gg 创建多级文件夹 |
rm -rf 文件名称 | 删除文件 |
vi 文件名称 | 用vi打开文件 I insert 表示插入信息 Esc 退出当前状态 U 表示文件撤销操作 :wq 保存退出 q!强制退出 |
vim | 和vi命令类似,功能更加强大 |
cp | 复制命令 cp aa.txt cc/dd.txt cp aa.txt cc/ 以原名复制 cp -r cc dd 复制整个文件夹 |
mv | 移动命令 mv bb.txt cc 将bb.txt 移到到cc文件夹中 mv cc dd 移动文件夹 mv dd aa 如果没有aa文件夹时,那么则修改文件的名称 |
3.3 Linux中安装JDK
3.3.1 上传安装包
新建文件夹/usr/local/src/java/后,将JDK文件上传到java文件夹下。
3.3.2 解压文件
命令:tar -xvf jdk-8u51-linux-x64.tar.gz
确定jdk安装目录
3.3.3 修改环境变量
- 输入命令:vim /etc/profile
打开profile修改环境变量
2.输入命令:source /etc/profile
手动刷新环境变量
检查jdk是否配置成功