使用 Tomcat + Nginx 实现负载均衡

一、Tomcat简介

1、Tomcat 是一个免费开源的Servlet容器,它是apache基金会的Jakarata项目的一个核心项目

2、由Apache,Sun 和其它一些公司及个人共同开发而成。

3、与传统的桌面应用程序不同,Tomcat 中的应用程序是一个WAR(WebArchive)文件。

4、WAR 是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。

二、安装Tomcat服务

准备工作:

主机名 操作系统 IP地址
Tomcat-A CentOS-7.x 192.168.1.1

1、安装JDK

[root@Tomcat-A ~]# ls
anaconda-ks.cfg  apache-tomcat-8.5.16.tar.gz  jdk-8u91-linux-x64.tar.gz
[root@Tomcat-A ~]# tar zxf jdk-8u91-linux-x64.tar.gz
[root@Tomcat-A ~]# mv jdk1.8.0_91/ /usr/local/java
[root@Tomcat-A ~]# cat <<END >> /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$PATH:/usr/local/java/bin
END
[root@Tomcat-A ~]# source /etc/profile
[root@Tomcat-A ~]# java -version             # 查看 Java 版本号

2、安装Tomcat软件

[root@Tomcat-A ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz
[root@Tomcat-A ~]# tar zxf apache-tomcat-8.5.16.tar.gz
[root@Tomcat-A ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8
[root@Tomcat-A ~]# /usr/local/tomcat8/bin/startup.sh                    # 启动 Tomcat
[root@Tomcat-A ~]# netstat -anpt | grep 8080            # Tomcat 的工作端口
[root@Tomcat-A ~]# netstat -anpt | grep java            # 查看 Java 端口号

注解:

  1. 8005端口: 用shutdown.sh 关闭Tomcat的时候需要用到的端口号,如果此端口没启动,Tomcat 不能用shutdown命令关闭。
  2. 8009端口:是Tomcat负责和其他的HTTP服务器建立连接的端口,如果Nginx和Apache相互使用的。(AJP/1.3协议)。
  3. 8080端口:HTTP访问时使用的端口。(HTTP/1.1 协议)。

2、验证

3、配置Java的Web目录

[root@Tomcat-A ~]# mkdir -p /web/tomcat
[root@Tomcat-A ~]# echo "192.168.1.1:Tomcat-A" > /web/tomcat/index.jsp

4、修改Tomcat主配置文件

[root@Tomcat-A ~]# vim /usr/local/tomcat8/conf/server.xml
在148-151行添加:
<Context docBase="/web/tomcat" path="" reloadable="false">
</Context>

注解:

1、unpackWARs=”true”:配置自动识别 war 包。

2、autoDeploy=”true”:开启自动部署。

3、Context docBase=”/web/tomcat”:网页根目录。

4、path=””:设置网页;相当于是 Nginx 中的 Location。

5、reloadble=”false”:不会自动重新加载 Web 应用,配置为 true 则会根据文件被改动后自动重新加载。

重启Tomcat 服务

[root@Tomcat-A ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@Tomcat-A ~]# /usr/local/tomcat8/bin/startup.sh

验证:

三、使用Tomcat+Nginx实现负载均衡

准备工作:

主机名 操作系统 IP地址
Tomcat-A CentOS 7.x 192.168.1.1
Tomcat-B CentOS 7.x 192.168.1.2
Nginx-Server CentOS 7.x 192.168.1.3

注意:

1、Tomcat-A 可以用上面的配置;

2、Tomcat-B跟Tomcat-A步骤一样,但页面要区分开,方便测试;

1、 部署Nginx服务器

1、安装Nginx服务

[root@Nginx-Server ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx-Server ~]# wget http://www.nginx.org/download/nginx-1.18.0.tar.gz
[root@Nginx-Server ~]# ls
anaconda-ks.cfg  nginx-1.18.0.tar.gz
[root@Nginx-Server ~]# tar zxf nginx-1.18.0.tar.gz -C /usr/src/
[root@Nginx-Server ~]# cd /usr/src/nginx-1.18.0/
[root@Nginx-Server nginx-1.18.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx-Server nginx-1.18.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
[root@Nginx-Server nginx-1.18.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

2、配置Nginx主配置文件

[root@Nginx-Server ~]# vim /usr/local/nginx/conf/nginx.conf
在 32 行增加:
upstream tomcat_server {
   
     
    server 192.168.1.1:8080 weight=1;
    server 192.168.1.2:8080 weight=1;
}
在 49 行添加:
proxy_pass http://tomcat_server;

[root@Nginx-Server ~]# nginx -t             # 检查 Nginx 配置文件是否正确
[root@Nginx-Server ~]# nginx             # 启用 Nginx 服务
[root@Nginx-Server ~]# ps aux | grep nginx          # 查看 Nginx 服务进程
[root@Nginx-Server ~]# netstat -anpt | grep nginx        # 查看 Nginx 端口号和进程号

2、验证

使用浏览器访问Nginx服务器IP地址:

使用脚本查看效果:

[root@Nginx-Server ~]# for i in $(seq 10);do curl http://192.168.1.3;done


发表评论

电子邮件地址不会被公开。 必填项已用*标注