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

目录

前言

一、NGINX正向代理与反向代理

1.1、NGINX正向代理

1.2、NGINX反向代理

1. 2.1Nginx配置反向代理的主要参数

二、负载均衡

三、NGINX动静分离集群

3.1动静分离原理

 四、Nginx+Tomcat动静分离

4.1搭建nginx代理服务器192.168.14.100

4.1.1安装 NGINX依赖环境

4.1.2创建程序用户

4. 1.3解包

 4.1.4选择安装,并开启相应的模块

 4.1.5编译并安装

4.1.6创建软连接

4.1.7配置nginx.service

4.2部署1Tomcat 应用服务器 192.168.14.101

4.2.1解包jdk

4.2.2配置全局变量

4.2.3解压Apache

 4.2.4启动shell文件

4.2.5查看Tomcat是否启动

4.2部署2Tomcat 应用服务器 192.168.14.102

 第一步、先安装包文件

第二步、将该文件解包 

 第三步、配置全局变量

 第四步、将两个Tomcat路径换一下

第五步、开启Tomcat服务

第六步、 Tomcat1 server 192.168.14.102配置

第六步 Tomcat2 server 配置 192.168.14.103

 第七步、Nginx server 配置 ,准备静态页面和静态图片

第八步、配置nginx.conf

最后,测试一下

 总结


前言

Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。一般来说,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

一、NGINX正向代理与反向代理

1.1、NGINX正向代理

NGINX+Tomcat负载均衡、动静分离集群_第1张图片

 正向代理,指的是通过代理服务器代理浏览器/客户端去重定向请求访问到目标服务器的一种代理服务。
正向代理服务的特点是代理服务器代理的对象是浏览器/客户端,也就是对于目标服务器来说浏览器/客户端是隐藏的。

1.2、NGINX反向代理

NGINX+Tomcat负载均衡、动静分离集群_第2张图片

 浏览器/客户端并不知道自己要访问具体哪台目标服务器,只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。
反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的。

1. 2.1Nginx配置反向代理的主要参数

  • upstream 服务池名{}
    • 配置后端服务器池,以提供响应数据
  • proxy_pass http://服务池名
    • 配置将访问请求转发给后端服务器池的服务器处理

二、负载均衡

根据分流算法把不同的请求转发到不同的服务器上

NGINX+Tomcat负载均衡、动静分离集群_第3张图片

三、NGINX动静分离集群

3.1动静分离原理

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务动态资源Nginx转发至后端。

NGINX+Tomcat负载均衡、动静分离集群_第4张图片

 四、Nginx+Tomcat动静分离

4.1搭建nginx代理服务器192.168.14.100

4.1.1安装 NGINX依赖环境

NGINX+Tomcat负载均衡、动静分离集群_第5张图片

4.1.2创建程序用户

4. 1.3解包

 4.1.4选择安装,并开启相应的模块

cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \									#启用文件修改支持
--with-http_stub_status_module \					#启用状态统计
--with-http_gzip_static_module \					#启用 gzip静态压缩
--with-http_flv_module \							#启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module	\							#启用 SSL模块,提供SSL加密功能
--with-stream										#启用 stream模块,提供4层调度

NGINX+Tomcat负载均衡、动静分离集群_第6张图片

 4.1.5编译并安装

make && make install

4.1.6创建软连接

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

4.1.7配置nginx.service

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

NGINX+Tomcat负载均衡、动静分离集群_第7张图片

4.2部署1Tomcat 应用服务器 192.168.14.101

4.2.1解包jdk

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

4.2.2配置全局变量

NGINX+Tomcat负载均衡、动静分离集群_第8张图片

 

4.2.3解压Apache

NGINX+Tomcat负载均衡、动静分离集群_第9张图片

 4.2.4启动shell文件

mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh

4.2.5查看Tomcat是否启动

NGINX+Tomcat负载均衡、动静分离集群_第10张图片

出现下面的页面就是安装成功了

NGINX+Tomcat负载均衡、动静分离集群_第11张图片

4.2部署2Tomcat 应用服务器 192.168.14.102

这里的和部署1Tomcat查不到,但是这个服务器要安装两天Tomcat

 第一步、先安装包文件

NGINX+Tomcat负载均衡、动静分离集群_第12张图片

第二步、将该文件解包 

注意:这里要安装两个Tomcat

 第三步、配置全局变量

NGINX+Tomcat负载均衡、动静分离集群_第13张图片

source /etc/profile

 第四步、将两个Tomcat路径换一下

mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat/tomcat1
mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat/tomcat2

第五步、开启Tomcat服务

/usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/shutdown.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

NGINX+Tomcat负载均衡、动静分离集群_第14张图片

 8080的端口

 NGINX+Tomcat负载均衡、动静分离集群_第15张图片

 8081的端口

 NGINX+Tomcat负载均衡、动静分离集群_第16张图片

第六步、 Tomcat1 server 192.168.14.102配置

mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



JSP test1 page   #指定为 test1 页面



<% out.println("动态页面 1,http://www.test1.com");%>




vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置

	
	


/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

 修改配置文件更改端口   /usr/local/tomcat/tomcat2/conf/server.xml

NGINX+Tomcat负载均衡、动静分离集群_第17张图片

NGINX+Tomcat负载均衡、动静分离集群_第18张图片

第六步 Tomcat2 server 配置 192.168.14.103

vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



JSP test2 page   #指定为 test2 页面



<% out.println("动态页面 2,http://www.test2.com");%>




vim /usr/local/tomcat/tomcat1/conf/server.xml
#删除前面的 HOST 配置

	


/usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 


tocmat shell 脚本  case 

vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



JSP test3 page   #指定为 test3 页面



<% out.println("动态页面 3,http://www.test3.com");%>




vim /usr/local/tomcat/tomcat2/conf/server.xml
#删除前面的 HOST 配置

	


/usr/local/tomcat/tomcat2/bin/shutdown.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

 8080端口

 80801端口

 NGINX+Tomcat负载均衡、动静分离集群_第19张图片

 第七步、Nginx server 配置 ,准备静态页面和静态图片

echo '

这是静态页面

' > /usr/local/nginx/html/index.html mkdir /usr/local/nginx/html/img cp /root/game.jpg /usr/local/nginx/html/img

第八步、配置nginx.conf

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
	#gzip on;
	#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
upstream tomcat_server {
	server 192.168.80.100:8080 weight=1;
	server 192.168.80.101:8080 weight=1;
	server 192.168.80.101:8081 weight=1;
}

server {
	listen 80;
	server_name www.kgc.com;

	charset utf-8;

	#access_log logs/host.access.log main;
	
	#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
	location ~ .*\.jsp$ {
		proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。
			proxy_set_header HOST $host;   
##把$remote_addr赋值给X-Real-IP,来获取源IP
			proxy_set_header X-Real-IP $remote_addr;
##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
#配置Nginx处理静态图片请求
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
		root /usr/local/nginx/html/img;
		expires 10d;
	}
	
	location / {
		root html;
		index index.html index.htm;
	}

......
	}
......
}

最后,测试一下

测试静态页面效果

浏览器访http://192.168.14.100/

浏览器访问http://192.168.14.100/two.jpg

测试负载均衡效果,不断刷新浏览器测试

浏览器访问 http://192.168.14.100/index.jsp

访问结果

 

 NGINX+Tomcat负载均衡、动静分离集群_第20张图片

 总结

Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。
但是不是把所有的web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。

你可能感兴趣的:(nginx,tomcat,负载均衡,运维,服务器)