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


Tomcat介绍
Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的,安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件。

自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP10的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet,这样Tomcat就诞生了。

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。其被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,同时它又是sun公司官方推荐的Servlet和JSP容器,因此其越来越多的受到软件公司和开发人员的喜爱。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它相应HTML页面的访问请求。实际上,Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。

当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。


Tomcat核心组件
·Web容器:完成Web服务器的功能。
·Servlet容器:名字为catalina,用于处理Servlet代码。
·JSP容器:用于将JSP动态网页翻译成Servlet代码。


Tomcat重要目录
·bin:存放启动和关闭的Tomcat脚本
·conf:存放Tomcat不通过的配置文件
·doc:存放Tomcat运行需要的库文件
·logs:存放Tomcat执行时的LOG文件
·src:存放Tomcat的源代码
·webapps:Tomcat的主要Web发布目录
·work:存放jsp编译后产生的class文件



Nginx应用

Nginx是一款非常优秀的HTTP服务器软件
·支持高达50000个并发连接数的响应
·拥有强大的静态资源处理能力
·运行稳定
·内存、CPU等系统资源消耗非常低

目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力。




Nginx动静分离实现原理
·服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
Nginx+Tomcat负载均衡、动静分离群集_第1张图片



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







Nginx+Tomcat部署:

环境准备:
3台服务器
关闭防火墙关闭核心防护

环境搭建:
Nginx 1台 部署Nginx
tomcat 2台 部署tomcat

IP配置:
Nginx 192.168.100.21
tomcat1 192.168.100.22
tomcat2 192.168.100.23

准备软件包:
apache-tomcat-8.5.23.tar
jdk-8u144-linux-x64.tar
nginx-1.15.9.tar
(通过Xmanager Enterprise 5全部放入/opt目录)




部署Tomcat1:

1、准备
(关闭防火墙、关闭核心防护)
systemctl stop firewalld
setenforce 0

2、查看JDK是否安装
java -version (可以通过 yum 安装 java-1.8.0-openjdk)

如果没有安装,执行以下操作:
tar xf jdk-8u144-linux-x64.tar.gz (解压安装包)
cp -rv jdk1.8.0_144/ /usr/local/java (复制文件到/usr/local/java )

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

source /etc/profile (让编辑的环境变量生效)
java -version (检查java版本)

3、安装配置Tomcat
cd /opt (进入/opt目录)
tar xf apache-tomcat-8.5.23.tar.gz (解压 apache-tomcat-8.5.23.tar.gz 包)

mv apache-tomcat-8.5.23/ /usr/local/tomcat8(解压后生成 apache-tomcat-8.5.23 文件夹,将该文件夹移动到/usr/local/下,并 改名为 tomcat8)

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup (创建启动Tomcat的软连接)
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown (创建关闭Tomcat的软连接)

tomcatup (启动Tomcat)
netstat -anpt | grep 8080 (检测是否启动,8080端口是否工作正常)
(如果出现bush报错,使用yum -y install net-tools命令后即可)

mkdir -pv /web/webapp1 (在根目录下创建一个web 目录,并在里面建立一个webapp1目录,用于存放网站文件)

vi /web/webapp1/index.jsp (在webapp1 目录下建立一个 index.jsp 的测试页面)
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>


JSP test1 page


<% out.println(“动态页面 1,http://www.51xit.com”);%>


静态页面的图片1



vi /usr/local/tomcat8/conf/server.xml (定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,在 host 段增加 context 段)

unpackWARs=“true” autoDeploy=“true”>
(在这个位置添加如下的内容)

备注:
docBase:web 应用的文档基准目录
reloadable 设置监视"类"是否变化
path="" 设置默认"类"

tomcatdown (关闭Tomcat)
tomcatup (启动Tomcat)

此时安装完成,通过浏览器访问http://192.168.100.22:8080 测试页面。

Tomcat2安装步骤与上述Tomcat1安装步骤相同,不过在建立index.jsp页面时将其中的数字“1”替换成“2”,以便更明显地反应出两个Tomcat轮询效果。



配置Nginx服务器:

1.关闭防火墙、关闭核心防护
systemctl stop firewalld
setenforce 0

2.安装相关软件包
yum -y install pcre-devel zlib-devel openssl-devel gcc-c++

3.解压并安装 Nginx
groupadd www
useradd -g www www -s /bin/false
cd /opt
tar xzvf nginx-1.15.9.tar.gz
cd nginx-1.15.9/
[root@localhost 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 --with-http_flv_module

备注:
–user=,–group= 指定运行的用户和组
–with-file-aio 启用文件修改支持
–with-http_stub_status_module 启用状态统计
–with-http_gzip_static_module 启用 gzip 静态压缩
–with-http_flv_module 启用 flv 模块,提供寻求内存使用基于时间的偏移量文件
–with-http_ssl_module 启用 SSL 模块

make && make install (安装)

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ (创建软连接)
ls -l /usr/local/sbin/nginx (查看已创建的软连接)

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

yum -y install psmisc
killall -3 nginx (停止服务)

nginx (启动nginx)
netstat -anpt | grep nginx (查看nginx监听端口)

yum -y install elinks (yum安装elinks浏览器)
elinks http://localhost (用elinks浏览器打开nginx,显示“Welcome to nginx!”,表示Nginx服务正常运行)

4.添加Nginx系统服务
vi /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
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service (修改权限)
systemctl enable nginx.service (开机自启)
这样一来, 就可以 systemctl 命令来启动、 停止、 重启、 重载 Nginx 服务器了, 方法是在执行时添加相应的 start、 stop、 restart、 reload 参数)

5.配置Nginx
vi /usr/local/nginx/html/index.html (编辑Nginx静态页面文件)
内容如下:




静态页面



静态页面


这是个静态页面



vi /usr/local/nginx/conf/nginx.conf
在 http {…} - server{…}中加入 location ~ .*.jsp … 动 态 请 求 条 件 规 则 以 及 静 态 图 片 请 求 规 则 。 . . . . . . 省 略 l o c a t i o n   . ∗ . j s p {…}动态请求条件规则以及静态图片请求规则。 ...... 省略 location ~ .*.jsp ......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;
}

location / {
root html;
index index.html index.htm;
}

把 Nginx 的默认站点通过 proxy_pass 方法代理到了设定好的 tomcat_server 负载均衡
服务器组上。配置完成的 nginx.conf 文件内容如下:
http {
…… (省略部分内容)
#gzip on;
upstream tomcat_server {
server 192.168.100.22:8080 weight=1;
server 192.168.100.23: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|css)$ {
root /usr/local/nginx/html/img;
expires 30d;
}
location / {
root html;
index index.html index.htm;
}
…… //省略部分内容
}
…… //省略部分内容
}

6.在Nginx上准备静态图片
mkdir /usr/local/nginx/html/img (创建静态文件目录)
cp /opt/logo.jpg /usr/local/nginx/html/img

测试配置文件是否正确
/usr/local/nginx/sbin/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服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

查看 Nginx 服务进程
ps aux | grep nginx

查看端口号及 PID 进程号
netstat -anpt | grep nginx




测试效果:
1.测试静态页面效果 打开浏览器访问 http://192.168.100.21/,可以看到访问到 nginx 静态页面。
Nginx+Tomcat负载均衡、动静分离群集_第2张图片

2.测试负载均衡效果 打开浏览器访问 http://192.168.100.21/index.jsp。 不断刷新浏览器测试,可以看到由于权重相同,页面会反复在以下两个页面来回切换。 第一次访问,出现 test1 的测试页面,并且能正常加载 nginx 上的静态页面图片,刷新后,第二次访问,出现 test2 的测试页面,示。,就说明负载均衡群集搭建成功,已经可以 在两个 Tomcat server 站点进行切换了。
Nginx+Tomcat负载均衡、动静分离群集_第3张图片

你可能感兴趣的:(nginx,tomcat,lvs,linux)