概述
之前我们进行Web开发时,一直是单机单Tomcat运行,为了提升应用在高并发下的高可用性。我们采用单机多部署Tomcat,通过Nginx实现负载均衡。形象地说,之前什么活都交给一只猫(Tomcat)干,现在我们多养几只猫来干活,但是可能会出现其他猫看着一只猫在干活,为了解决"有些猫累死,有些猫闲死这一问题",我们又用Nginx进行代理以此实现负载均衡
Tomcat多实例部署
Tomcat单实例部署,一个Tomcat服务器运行时,不存在负载均衡。我们首先要做的就是Tomcat多实例部署,将我们的同一个应用部署在多个Tomcat上同时运行
先前我已经配置过一个Tomcat了,现在我重新复制两个新的Tomcat:
cp -R apache-tomcat-9.0.16 tomcat003
cp -R apache-tomcat-9.0.16 tomcat004
1.分离目录
Tomcat中两个比较重要的概念(通常也是系统变量)CATALINA_HOME和CATALINA_BASE
- CATALINA_HOME:即指向Tomcat安装路径的系统变量(安装目录)
- CATALINA_BASE:即指向活跃配置路径的系统变量(工作目录)
通过设置这两个变量,就可以将Tomcat的安装目录和工作目录分离,从而实现Tomcat多实例部署
1)进入到/etc/profile 增加Tomcat环境变量
export CATALINA_3_BASE=/home/Reyco/lib/tomcat003
export CATALINA_3_HOME=/home/Reyco/lib/tomcat003
export TOMCAT_3_HOME=/home/Reyco/lib/tomcat003
export CATALINA_4_BASE=/home/Reyco/lib/tomcat004
export CATALINA_4_HOME=/home/Reyco/lib/tomcat004
export TOMCAT_4_HOME=/home/Reyco/lib/tomcat004
2)执行 source /etc/profile 使配置文件生效
3)打开新Tomcat目录bin下的catalina.sh,找到#OS语句,添加对应的CATALINA_BASE和CATALINA_HOME
export CATALINA_BASE=$CATALINA_3_BASE
export CATALINA_HOME=$CATALINA_3_HOME
export CATALINA_BASE=$CATALINA_4_BASE
export CATALINA_HOME=$CATALINA_4_HOME
4) 修改Server.xml中的三个端口号
这里我将Tomcat003的端口修改为11080,Tomcat004的端口修改为10080
5)修改Tomcat下的图标,以便于区分Tomcat,将/webapps/Root下的tomcat.png替换成其他图标便于区分
Nginx与Tomcat结合
Ngnix 和 Tomcat 结合实现负载均衡的需求大概是这样的:用户访问服务器的 80 端口,Ngnix 接收到请求之后转发至 10080 端口或者 11080 端口由 Tomcat 处理。两个 Tomcat 部署了同一个应用,这样就可以实现负载均衡,可以由两个 Tomcat 同时处理用户请求。这里我们以 localhost 为例,开始配置 Ngnix
1)先在/etc/hosts下设置虚拟主机,这里我设置127.0.0.1:www.SmallXin.com
2)配置Nginx文件,创建small.xin.com.conf
upstream SmallXin.com{
server www.SmallXin.com:10080 weight=1;
server www.SmallXin.com:11080 weight=1;
}
server{
listen 80;
autoindex on;
server_name www.SmallXin.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
location /{
proxy_pass http://SmallXin.com;
add_header Access-Control-Allow-Origin *;
}
}