Nginx-tomcat 부하 분산 동적 및 정적 분리 클러스터
1. Tomcat 중요 디렉토리
bin :存放启动和关闭Tomcat脚本
conf : 存放Tomcat不同的配置文件
doc:存放Tomcat文档
lib: 存放Tomcat运行需要的库文件
logs:存放Tomcat执行时的
src: 存放Tomcat的源代码
webapps: Tomcat的主要Web发布目录
work: 存放jsp编译后产生的class文件
2. Nginx 애플리케이션
1. Nginx는 아주 좋은 HTTP 서버 소프트웨어입니다.
支持高达50000个并发连接数的响应
拥有强大的静态资源处理能力
运行稳定
内存、CPU等系统资源消耗非常低
目前很多大型网站都应用Nginx服务器作为后端网站程序的方向代理及负载均衡器,提升整个站点的负载并发能力。
3. Nginx로드 밸런싱 구현 원칙
nginx 구성 방향 프록시의 주요 매개 변수
1. upstream 服务池名{}
配置后端服务器池,以提供响应数据
2.proxy_pass http://服务池名
配置将访问请求转发给后端服务器池的服务处理
Nginx 동적 및 정적 분리 구현 원리
1.动静分离原理
服务端接受来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,动态资源nginx转发至后端。
2.nginx静态处理优势
nginx处理静态页面的效率远高于tomcat的处理能力
若tomcat的请求量为1000次,则nginx的请求量为6000次
tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
Nginx处理静态资源的能力是Tomcat处理的6倍
4. 웹 사이트 구축 배포 및 테스트
1.要求部署两台后端tomcat服务器
2.为了进行测试,搭建两个内容不同网站
3.tomcat部署网站搭建步骤
关闭firewall防火墙
安装JDK,配置JAVA环境
安装配置Tomcat
创建/web/webapp1目录,修改server.xml,将网站文件目录更改到/web/webapp1/路径下
/web/webapp1/下建立测试页面index.jsp,并进行测试
5. Nginx 구성 부하 분산, 동적 및 정적 분리
1. Nginx 서버에 Nginx를 설치하고 두 Tomcat 사이트를 리버스 프록시하고로드 밸런싱을 달성합니다.
关闭Firewalld防火墙
安装Nginx依赖软件包
解压并编译安装Nginx
配置nginx.conf,添加location静态页面处理添加upstream配置段与proxy_pass
检测配置文件与启动Nginx
测试负载均衡、动静分离效果
6. 구성 프로세스
1. 실험 환경
Nginx服务器(192.168.13.177)
Tomcat1服务器(192.168.13.151)
Tomcat2服务器 (192.168.13.178)
client测试机
2. 부하 분산
Tomcat1 및 Tomcat2에 Tomcat 서비스 설치
[root@tomcat1 ~]# systemctl stop firewalld.service ##关闭防火墙
[root@tomcat1 ~]# mkdir /abc
[root@tomcat1 ~]# mount.cifs //192.168.100.3/LNMP-C7 /abc/
[root@tomcat1 ~]# cd /abc/tomcat/
[root@tomcat1 tomcat]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ ##解压JDK
[root@tomcat1 tomcat]# vim /etc/profile ##配置环境变量
##大G末行加入
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@tomcat1 tomcat]# source /etc/profile ##刷新配置文件
[root@tomcat1 tomcat]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/ ##解压
[root@tomcat1 tomcat]# cd /usr/local/
[root@tomcat1 local]# mv apache-tomcat-8.5.16/ tomcat
[root@tomcat1 local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
##将启动和关闭脚本便于系统识别
[root@tomcat1 local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
[root@tomcat1 local]# mkdir -p /web/webapp1 ##创建站点
[root@tomcat1 local]# vim /web/webapp1/index.jsp ##写入jsp网页内容
##jsp网页内容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("Welcome KGC Web");%> ##输出信息
</body>
</html>
[root@tomcat1 local]# vim /usr/local/tomcat/conf/server.xml ##修改Tomcat配置文件
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false"> ##添加站点信息
</Context>
[root@tomcat1 ~]# startup.sh ##启动服务
##Tomcat上网页内容为accp其他配置一样
Nginx 서버에 Nginx 설치
[root@nginx ~]# systemctl stop firewalld.service ##关闭防火墙
[root@nginx ~]# setenforce 0
[root@nginx ~]# yum install pcre-devel zlib-devel gcc gcc-c++ make -y ##安装环境必要组件
[root@nginx ~]# mkdir /abc
[root@nginx ~]# mount.cifs //192.168.100.3/LNMP-C7 /abc/ ##挂载
Password for root@//192.168.100.3/LNMP-C7:
[root@nginx ~]# cd /abc/
[root@nginx abc]# tar zxvf nginx-1.12.2.tar.gz -C /usr/local/ ##解压
[root@nginx abc]# useradd -M -s /sbin/nologin nginx ##创建系统用户
[root@nginx abc]# cd /usr/local/nginx-1.12.2/
[root@nginx nginx-1.12.2]# ./configure \ ##配置
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --with-http_flv_module
[root@nginx nginx-1.12.2]# make && make install ##编译安装
Nginx 구성 파일 수정
[root@nginx nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream tomcat-server { #添加地址池
server 192.168.13.151:8080 weight=1;
server 192.168.13.178:8080 weight=1;
}
server {
listen 80;
.....省略
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat-server; #添加代理,调用服务器地址池
}
[root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##便于系统识别
[root@nginx nginx-1.12.2]# nginx ##开启服务
클라이언트 테스트 머신을 사용하여 nginx 프록시 서버에 액세스
2. 동적 및 정적 분리
Nginx에서 구성 파일 수정
[root@nginx nginx-1.12.2]# vim /etc/init.d/nginx ##编写service启动脚本
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@nginx nginx-1.12.2]# chmod +x /etc/init.d/nginx
[root@nginx nginx-1.12.2]# chkconfig --add nginx
[root@nginx nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
server {
...省略...
location ~.*.jsp$ { ##匹配jsp页面跳转代理服务器池
proxy_pass http://tomcat-server;
proxy_set_header Host $host;
}
location / {
root html/test; ##修改站点
index index.html index.htm;
proxy_pass http://tomcat-server;
}
[root@nginx nginx-1.12.2]# vim /usr/local/nginx/html/index.html ##编写静态网页
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>静态页面</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>静态页面</h1>
<p>这是个静态页面</p>
</body>
</html>
[root@nginx nginx-1.12.2]# service nginx stop ##关闭开启服务
[root@nginx nginx-1.12.2]# service nginx start
Tomcat1 및 Tomcat2에서 jsp 동적 페이지 만들기
[root@tomcat1 ~]# mkdir /usr/local/tomcat/webapps/test
[root@tomcat1 ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %> ##开头申明
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<div>动态页面1</div>
</body>
</html>
##在Tomcat2上修改为动态页面22
//访问静态
http://192.168.13.177/
//访问动态
http://192.168.13.177/test/index.jsp
Nginx는 정적 이미지를 처리하고 Tomcat은 동적 페이지를 처리합니다.
Tomcat1 및 Tomcat2의 페이지에 그림 추가
[root@tomcat1 ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<body>
<div>动态页面</div><br><img src="11.jpg"> //添加页面图片
</body>
[root@tomcat01 local]# vim /usr/local/tomcat/conf/server.xml
#在第149行下追加以下条目,
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="false">
</Context>
[root@tomcat1 test]# shutdown.sh ##关闭重启
[root@tomcat1 test]# startup.sh
Nginx에서 구성 파일 수정
[root@nginx nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root html/test;
expires 30d;
}
[root@nginx nginx-1.12.2]# mkdir /usr/local/nginx/html/test
[root@nginx nginx-1.12.2]# cp /abc/11.jpg /usr/local/nginx/html/test/
#重启服务
[root@nginx html]# service nginx restart
테스트