目录

tomcat多实例部署

tomcat多实例部署

第一种运行多个实例,不同的实例运行不同的业务,在业务访问量小的情况下,可以节省资源。

第二中运行多个实例,不同的实例运行同一个业务,在业务访问量大的情况下,可以提高访问速度,实现负载均衡。

https://i-blog.csdnimg.cn/direct/39ca9e2aac804edfa9c79b820e85208e.png

https://i-blog.csdnimg.cn/direct/23de6a74f119465ab890d6ea48f6f372.png

如上图所示,此时把tomcat服务停止,

1.创建项目目录,测试文件

https://i-blog.csdnimg.cn/direct/b0209dea02a64f628a43ab4496fdc585.png

2.创建实例的安装目录

https://i-blog.csdnimg.cn/direct/22cb8546c0e4410b9971ee8043e6d2ac.png

3.准备实例的配置文件

https://i-blog.csdnimg.cn/direct/c07df6e1a9d64ea2aaf994fd019b00fb.png

如上图所示,将tomcat的配置文件向第一个实例和第二个实例的配置文件目录,都拷贝一份

4.编辑实例的配置文件

https://i-blog.csdnimg.cn/direct/402fb69983ee44d88650af0ab46899d3.png

https://i-blog.csdnimg.cn/direct/bdd6a7213ec44cf2b904db5b1da94525.png

如上图所示,这是对实例配置文件的修改内容。

首先修改实例的端口,随后修改实例对外提供http服务的端口,

修改实例默认的虚拟主机名称,修改实例中虚拟主机示例的名称,修改实例的项目目录,修改实例的项目日志位置。

5.每个实例要想能单独启动,要有一个单独的实例脚本。准备启动的实例脚本。

https://i-blog.csdnimg.cn/direct/a815ce2df09c41fe878f0132034c8ca5.png

如上图所示,对于启动脚本来说,最重要的就是脚本中的环境变量,如果没有这个环境变量,脚本就会默认去tomcat的配置目录下,去启动tomcat服务,而不是去启动实例。

https://i-blog.csdnimg.cn/direct/b6cf450b66f64b1496fd0ef253c109ae.png

如上图所示,如果有了这个对应的环境变量的话,那么就会到实例安装目录下去启动这个实例。

https://i-blog.csdnimg.cn/direct/801569cf45dc4d36a41aef963a2c159c.png

https://i-blog.csdnimg.cn/direct/fc6ea19ce56f462e85b3964de7b785d2.png

如上图所示,这个脚本默认就是这个实例的第一个启动脚本,我们还要给这个脚本添加执行权限。

https://i-blog.csdnimg.cn/direct/607e0db07bbd4fb28561ecbdc3c55b8d.png

如上图所示,这是去配置第二个实例的启动脚本,

6.启动tomcat实例

https://i-blog.csdnimg.cn/direct/780624011409408989e48c38e4c1d6a3.png

如上图所示,这是去启动不同tomcat实例的过程,

https://i-blog.csdnimg.cn/direct/f42ebb97aeb64eaf89b3b0c6e85cdf8a.png

如上图所示,这两个实例,分别占用的端口是8010和8020,这两个实例对外提供http服务的端口分别是9000和9001

7.nginx实现tomcat反向代理

很少直接让tomcat服务器去接收客户端的请求,因为tomcat软件本身的性能有限。

https://i-blog.csdnimg.cn/direct/596ee2bb167e485fb7ce02626abcce61.png

如上图所示,这是常见的业务架构,即客户端访问nginx反向代理服务器,由nginx反向代理服务器,转发客户端访问请求。

https://i-blog.csdnimg.cn/direct/3256410924f24fd4a85aaaa90c64a7db.png

如上图所示,这是在nginx的配置文件中,使用upstream模块,创建Tomcat server组,用来管理tomcat的两个实例。

https://i-blog.csdnimg.cn/direct/5686633979e04e619b093b94faefe1aa.png

如上图所示,我们还需要配置虚拟主机的location,即匹配所有的访问请求,将所有的访问请求转发到后端的tomcat组,然后配置字段,记录下所有客户端的IP地址。

https://i-blog.csdnimg.cn/direct/039b062e6fd341d49b9a6a7f61bfe344.png

如上图所示,随后我们去启动nginx软件。

https://i-blog.csdnimg.cn/direct/cbc2531430d142abbf4fa190eec3bf2e.png

https://i-blog.csdnimg.cn/direct/bc28baa4683942d6a136123c080138e5.png

如上图所示,如果想让tomcat记录下客户端的访问IP地址,我们就需要到tomcat的配置文件中去修改这个%{X-Real-IP}i这样一个字段。

https://i-blog.csdnimg.cn/direct/fd917d466c8349c08f21804f701eccfd.png

如上图所示,tomcat的实例1和实例2都要去做这样的操作,以保证去记录下客户端的IP地址。

https://i-blog.csdnimg.cn/direct/e2c777f1e10a46aea718d7f5f00dad04.png

https://i-blog.csdnimg.cn/direct/b5b7ea4e711f42c29eac763e2fff97c7.png

如上图所示,将来客户端想要访问tomcat服务器上的数据,只需要直接访问nginx的虚拟主机名称:端口号,就可以了,由nginx的软件实现tomcat多实例的之间的负载均衡。

https://i-blog.csdnimg.cn/direct/39419ecd25534ea094f3bd8c25573ba2.png

如上图所示,此时两个实例记录的客户端的访问地址也是真实的IP地址。