一看就会的Nginx+Tomcat负载均衡、动静分离群集教学

本文详细介绍了如何部署Nginx+Tomcat的集群环境,实现负载均衡和动静分离。首先讲解了Tomcat和Nginx的基本概念及重要文件,接着阐述了Nginx的负载均衡和动静分离原理。在实验部分,通过在两台服务器上安装和配置Tomcat,并在Nginx服务器上进行相应配置,最终验证了Nginx能够成功地将静态资源和动态请求分发到不同的Tomcat实例,提升了系统处理能力。
摘要由CSDN通过智能技术生成

Nginx+Tomcat负载均衡、动静分离群集

本章目录

前言

一、Tomcat与Nginx

1.1:Tomcat介绍
1.2:Tomcat重要文件介绍
1.3:Nginx应用

二、Nginx负载均衡原理

三、Nginx动静分离原理

四、Nginx+Tomcat部署实验

4.1:实验环境
4.2:Tomcat安装及配置
4.3:Nginx安装配置
4.4:部署验证

前言

本文主要讲述的项目部署方面的一些基础知识,tomcat+nginx的环境。

nginx是常用的web服务器,用于获取静态资源,类似的服务器还有apache。

tomcat是基于java servlet 的 web 容器,用于获取动态资源。

一般的web服务架构:前端部署nginx,后端部署tomcat。用户访问nginx,静态资源nginx直接返回,动态资源的请求被nginx转发到tomcat,tomcat将处理完的结构返回给nginx,然后到浏览器。

一、Tomcat与Nginx

1.1:Tomcat介绍
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
  • 最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发
  • 安装Tomcat后,安装路径下面的目录文件,是使用或者配置Tomcat的重要文件
1.2:Tomcat重要文件介绍
目录作用
bin存放启动和关闭Tomcat脚本
conf存放TTomcat不同的配置文件
doc存放Tomcat文档
lib存放Tomcat运行需要的库文件
logs存放Tomcat执行时的LOG文件
src存放Tomcat的源代码
webappsTomcat的主要Web发布目录
work存放jsp编译后产生的class文件
1.3:Nginx应用
  • Nginx是一款非常优秀的HTTP服务软件
    • 支持高达50000个并发连接数的响应
    • 拥有强大的静态资源处理能力
    • 运行稳定
    • 内存、CPU等系统资源消耗非常低
  • 目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点饿负载并发能力

二、Nginx负载均衡原理

  • Nginx实现负载均衡是通过反向代理实现

在这里插入图片描述

  • Nginx配置反向代理的主要参数
    • upstream 服务池{ }
      • 配置后端服务器池,以提供相应数据
    • proxy_pass http://服务池名
      • 配置将访问请求转发给后端服务器池的服务器处理

三、Nginx动静分离原理

  • Nginx静态处理优势
    • Nginx处理静态页面的效率远高于Tomcat的处理能力
    • 若Tomcat的请求量为1000次,则Nginx的请求处理量为6000次
    • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
    • Nginx处理静态资源的能力是Tomcat处理的6倍

四、Nginx+Tomcat部署实验

4.1:实验环境
服务器配置的服务
Nginx服务器nginx-1.15.9.tar.gz
Tomcat服务器1jdk-8u144-linux-x64.tar.gz、apache-tomcat-8.5.23.tar.gz
Tomcat服务器2jdk-8u144-linux-x64.tar.gz、apache-tomcat-8.5.23.tar.gz
4.2:Tomcat安装及配置
  • 关闭防火墙、关闭核心防护
[root@web2 opt]# systemctl stop firewalld
[root@web2 opt]# setenforce 0
  • 在安装 Tomcat 之前必须先安装 JDK
    • JDK 的全称是 Java Development Kit,是 Sun 公司免费提供的 Java 语言的软件开发工具包,
      其中包含 Java 虚拟机(JVM)。编写好的 Java 源程序经过编译可形成 Java 字节码,只要安装了JDK,
      就可以利用 JVM 解释这些字节码文件,从而保证了Java的跨平台性。在平台兼容性方面,JDK 作为解释
      字节码文件并据此调用操作系统 API 实现对应功能的Java 虚拟机,与操作系统类型和平台位数密切相关,
      因此存在不同类型的版本,而 Tomcat 也具有上述特征,默认情况下 JDK 已经安装,所以需要预先下载
      Tomcat,本章中所使用的 Tomcat 软件的源码包为 apache-tomcat-8.5.23.tar.gz
  • 查看JDK是否安装,没安装需要安装,由于我们是新建的系统,这边就需要重新安装JDK服务,我们这通过直接通过绿色安装包解压得到JAVA软件
[root@web2 opt]# tar xf jdk-8u144-linux-x64.tar.gz  
[root@web2 opt]# cp -rv jdk1.8.0_144/ /usr/local/java
[root@web2 opt]# vi /etc/profile
最有一行插入命令

export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib        #####配置JAVA的环境变量

[root@web2 opt]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
  • 开启Tomcat服务
[root@web2 opt]# tar xf apache-tomcat-8.5.23.tar.gz         ####解压文件安装文件
[root@web2 opt]# mv apache-tomcat-8.5.23/ /usr/local/tomcat8    ####指定安装目录
[root@web2 opt]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup     ####创建脚本软链接来快速启动
[root@web2 opt]# ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdonw
[root@web2 opt]# tomcatup                      ####开启Tomcat
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@web2 opt]# netstat -anpt | grep 8080           ####过滤下端口查看服务是否开启
tcp6       0      0 :::8080                 :::*                    LISTEN      18807/java          
[root@web2 opt]# 

最后在真机上输入服务器的IP地址进行验证,看看Tomcat服务是否已经正常启动

在这里插入图片描述

验证开启

  • 建立JAVA的WEB的站点
[root@web2 ~]# mkdir -pv /web/webapp1
[root@web2 ~]# vi /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
	<head>
		<title>JSP test1 page</title>
	</head>
	<body> 
		<% out.println("动态页面 1,http://www.text1.com");%>
	</body>
	<body>
 		<div>静态页面的图片 1</div><br><img src="logo.jpg">
	</body>
</html>
[root@web2 ~]# vi /usr/local/tomcat8/conf/server.xml 
在Host name那边修改命令
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Context docBase="/web/webapp1" path="" reloadable="false">
</Context>


[root@web2 ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@web2 ~]# /usr/local/tomcat8/bin/startup.sh

再次查看测试页面

在这里插入图片描述

但是我们发现此时,页面的图像并没有加载出来,因为我们还没有放置图片的原因。

4.3:Nginx安装配置
  • 安装Nginx环境
[root@Web1 ~]# yum -y install pcre-devel zlib-devel openssl-devel gcc-c++
  • 解压并安装Nginx
[root@Web1 opt]# groupadd www    ####床架用户组,Nginx服务开启必须要用户组
[root@Web1 opt]# useradd -g www www -s /bin/false
[root@Web1 opt]# tar xzvf nginx-1.15.9.tar.gz 
[root@Web1 opt]# cd nginx-1.15.9/
[root@Web1 nginx-1.15.9]# ./configure \
--prefix=/usr/local/nginx \ ####指定安装目录
--user=www \    
--group=www \    ####指定运行的用户和组
--with-file-aio \    ####启用文件修改支持
--with-http_stub_status_module \    ####启用状态统计
--with-http_gzip_static_module \   ####启用gzip静态压缩
--with-http_flv_module    ####启用flv,提供寻求内存使用基于时间的偏移量文件
[root@Web1 nginx-1.15.9]# make && make install
[root@Web1 nginx-1.15.9]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  
> --preprefix=/usr/local/nginx 
-bash: ./configure--preprefix=/usr/local/nginx: 没有那个文件或目录
[root@Web1 nginx-1.15.9]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@Web1 nginx-1.15.9]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 27 9月  27 23:33 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
[root@Web1 nginx-1.15.9]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 添加Nginx系统服务
[root@Web1 opt]# vi /lib/systemd/system/nginx.service

[Unit]
Description=nginx    ####描述该系统
After=network.target  ###描述服务类别
[Service]
Type=forking   ####后台运行模式
PIDFile=/usr/local/nginx/logs/nginx.pid    ###PID文件文职
ExecStart=/usr/local/nginx/sbin/nginx   ####启动服务位置
ExecReload=/usr/bin/kill -s HUP $MAINPID    ###根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID    ###根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target                                                                                                                               
"/lib/systemd/system/nginx.service" 13L, 283C
  • 开启Nginx服务
[root@Web1 opt]# yum -y install psmisc
[root@Web1 opt]# killall -3 nginx  
[root@Web1 opt]# systemctl start nginx.service
[root@Web1 opt]# systemctl status nginx.service
● nginx.service - nginx
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2020-09-28 00:11:57 CST; 1min 56s ago
  Process: 26487 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 26488 (nginx)
   CGroup: /system.slice/nginx.service
           ├─26488 nginx: master process /usr/local/nginx/sbin/nginx
           └─26489 nginx: worker process

9月 28 00:11:57 Web1 systemd[1]: Starting nginx...
9月 28 00:11:57 Web1 systemd[1]: Started nginx.
[root@Web1 opt]# 

然后我们在真机上做测试,在浏览器内输入Nginx服务器IP地址

在这里插入图片描述

测试成功!

  • 配置Nginx的配置文件,以前进行负载均衡
[root@Web1 ~]# vi /usr/local/nginx/html/index.html    ####创建静态页面
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>静态页面!</h1>
<p>这是静态页面</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

[root@Web1 ~]# vi /usr/local/nginx/conf/nginx.conf

http {
  省略....

    #gzip  on;
 upstream tomcat_server {
          server 192.168.100.43:8080 weight=1;
          server 192.168.100.44:8080 weight=1;
         }

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
 location ~ .*.jsp$ {           ###动态页面正则
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Client-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat_server;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {            ###静态图片正则
        root /usr/local/nginx/html/img;
        expires 30d;
        }
[root@Web1 ~]# nginx -t            ####检查服务是否出错
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 在Nginx服务器上加入静态页面做测试
[root@web1 ~]# mkdir /usr/local/nginx/html/img 
[root@web1 ~]# cp /opt/text.jpg /usr/local/nginx/html/img
4.4:部署验证
  • 在浏览器上我们输入Nginx服务器的IP地址将会显示静态页面

在这里插入图片描述

  • 接着在IP地址后面输入/index.jsp就会出现动态页面啦,前方高能反应!!!!

在这里插入图片描述

  • 再刷新下页面,因为我们设置原因,会很短的时间内跳到tomcat服务器2上面

在这里插入图片描述
验证成功!

千万别做噩梦哦亲们!那就晚安了啦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值