首页 > 编程知识 正文

docker部署web项目,nginx集群部署详解

时间:2023-05-04 22:31:57 阅读:13849 作者:4504

Nginx引入了自己的项目开发步骤:

在第一步中更改tomcat的端口号

在slave01虚拟机上更改端口号192.168.68.130

69连接器端口=“8081”协议=“http/1.1”

70连接时间out=“20000”

71重定向端口=“8443”/

在主虚拟机上更改端口号192.168.68.129

连接器端口=“8082”协议=“http/1.1”

70连接时间out=“20000”

71重定向端口=“8443”/

步骤2 :将部署项目的虚拟目录添加到server.xml文件

配置步骤nginx的主配置文件

upstream tomcatServer01{

服务器192.168.68.12933608082 weight=3;

服务器192.168.68.13033608081 weight=1;

}

服务器{

listen 80

server_name zhiyou200_java;

位置/{

proxy_passhttp://Tomcat服务器01;

索引/

}

}

重新启动nginx服务器

cd /usr/local/nginx/sbin

./nginx-s重新加载

Nginx群集的其他配置“”java upstream tomcatServer1{ #代理名称是可选的

服务器192.168.68.12933608082 weight=3; #weightweightserver配置nginx传输APP应用服务器所在的虚拟主机的ip地址

服务器192.168.68.13033608081; 将nginx与另一个Tomcat APP应用程序服务器相关联

# server 192.168.68.13133608083 down; #表示当前的server APP应用服务器不参与负载平衡

#服务器192.168.68.13233608084 backup; #所有其他非backup计算机或down或繁忙服务器请求备份服务器

使用backup标记的APP应用程序服务器压力最小

server 192.168.68.1:8085 max _ fail=3; #允许请求失败的最大次数默认值1默认情况下每秒检测一次

#如果失败的请求超过最大次数,则返回proxy_next_upstream模块定义的错误

#服务器192.168.13433608086 fail _ time out=1000; #以连接请求超时时间max_fail次失败后暂停的时间为基准

}

` ` ` Nginx负载平衡环境中的会话共享问题web服务器通过Nginx连接,因此同一IP访问可能会将同一页分发到不同的APP应用服务器。

如果会话不同步,则会出现会话无法由多个服务共享的问题。

解决方案:第一种解决方案是使用session用cookie缓存。 这很容易实现,但如果客户端禁止饼干

那么,会话异步,cookie的网络安全低,里面的值是可以伪造的。

第二种解决方案:使用数据库将session值保存到数据库,如mysql

虽然实现了session同步,但会增加对数据库的I/o操作,增加数据库的负担,导致数据库读写效率低下

第三种解决方案是将其放在缓存中,并将session值保存到memcache或redis中

memcache也可以分散

虽然还实现了session同步,但是当memcahe将内存划分为各种规格的内存块时,会产生很多内存片段

内存块不足时,会发生内存溢出。

第四种解决方案:使用nginx本机ip_hash,可以将一个IP请求指向同一后端。 这将使后端与该IP下的客户端建立稳定的连接,并使会话同步

upstream tomcatServer1{ #代理名称可选

ip_hash;

服务器192.168.68.12933608082 weight=3; #weightweightserver配置nginx传输APP应用服务器所在的虚拟主机的ip地址

服务器192.168.68.13033608081; 将nginx与另一个Tomcat APP应用程序服务器相关联

}

无法实现分流

第五个解决方案: upstream_hash

可以解决ip_hash中的一些问题,并且可以使用名为upstream_hash的第三个模块。 此模块通常用作url_hash,还可以进行会话共享

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。