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

目录

Tomcat多实例

        具体操作

负载均衡和动静分离

                ​

                 部署nginx负载均衡器

                部署tomcat

                动静分离配置 

                Nginx配置

 总结


Tomcat多实例

       多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。在webapps下有很多项目,假如一个tomcat挂掉了,就意味着服务起不来,后果是很严重的,所谓多实例就是,用多个tomcat,即使有一个挂掉了,也不影响整个服务的正常运行。

        具体操作

第一步,安装jdk

重官网上下载jdk包,我前面文章写过,下完的包就是这样

 解压jdk包

[root@localhost /opt]# rpm -ihv jdk-8u201-linux-x64.rpm 
warning: jdk-8u201-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
	tools.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...

添加环境变量

[root@localhost /opt]# vim /etc/profile

 刷新查看jdk是否安装成功

[root@localhost /opt]# source /etc/profile
[root@localhost /opt]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

第二步,开始创建tomcat

        解压tomcat包

[root@localhost /opt]# tar zxvf apache-tomcat-9.0.16.tar.gz

在/usr/local/目录下创建一个tomcat目录

[root@localhost /usr/local]# mkdir tomcat

将tomcat包移动到/usr/locat/tomcat并改名为tomcat1

[root@localhost /opt]# mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1

再将tomcat1复制一份为tomcat2

[root@localhost /usr/local/tomcat]# cp -a tomcat1/ tomcat2
[root@localhost /usr/local/tomcat]# ls
tomcat1  tomcat2

修给tomcat2的主配置文件

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

修改tomcat1和tomcat2的开关

[root@localhost /usr/local/tomcat/tomcat2/bin]# vim shutdown.sh 
[root@localhost /usr/local/tomcat/tomcat2/bin]# 
[root@localhost /usr/local/tomcat/tomcat2/bin]# vim startup.sh

开关脚本都加

export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2 

开启服务

[root@localhost /usr/local/tomcat/tomcat2/bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat/tomcat2
Using CATALINA_HOME:   /usr/local/tomcat/tomcat2
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat2/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/tomcat2/bin/bootstrap.jar:/usr/local/tomcat/tomcat2/bin/tomcat-juli.jar
Tomcat started.

 tomcat1也是,就是把最后改为1即可

[root@localhost /usr/local/tomcat/tomcat1/bin]# vim shutdown.sh 
[root@localhost /usr/local/tomcat/tomcat1/bin]# 
[root@localhost /usr/local/tomcat/tomcat1/bin]# vim startup.sh 

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

 开启服务

[root@localhost /usr/local/tomcat/tomcat1/bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat1/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/tomcat1/bin/bootstrap.jar:/usr/local/tomcat/tomcat1/bin/tomcat-juli.jar
Tomcat started.

最后效果,8080端口和8081端口都可以打开tomcat的页面

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

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

负载均衡和动静分离

        通常情况下,一个tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善web站点架构

        Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力。

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

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

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

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。

    反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp

    代理给Tomcat

  • LNMT:Linux + Nginx + MySQL + Tomcat

    LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

    前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更

    适合

    LNMT:Linux + Nginx + MySQL + Tomcat

  • 多级代理

    LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载均衡。

当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由来,都是由于HTTP协议在设计之初没有想到未来的发展。

                 部署nginx负载均衡器

需要三台主机

nginx服务IP地址:192.168.37.100

tomcat1服务IP地址:192.168.37.101

tomcat2服务IP地址:192.168.37.102

先安装nginx安装包

解压

[root@localhost /opt]# tar zxvf nginx-1.120.tar.gz 

 安装所需依赖关系包

[root@localhost /opt]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make

新建用户和组便于管理

[root@localhost /opt]# useradd -s /sbin/nologin nginx

进入安装目录编译安装

[root@localhost /opt/nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-file-aio --with-http_gzip_static_module --with-http_flv_module
[root@localhost /opt/nginx-1.12.0]# make && make install -j6

#配置参数解释
./configure \
--prefix=/usr/local/nginx \
#安装路径
--user=nginx \
#指定用户名
--group=nginx \
#指定用户组
--with-http_stub_status_module
#启用此模块支持状态统计
--with-file-aio 
#启用文件修改支持
--with-http_gzip_static_module 
#启用gzip静态压缩
--with-http_flv_module
#启用flv模块,提供对flv视频流的支持
--with-http_ssl_module
#启用ssl模块,提供ssl加密功能
--without

#关闭

 建立软链接

[root@localhost /opt/nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

编辑nginx服务配置文件

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
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

##配置参数解释##
[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终止进程

修改权限

[root@localhost /opt/nginx-1.12.0]# chown 754 /lib/systemd/system/nginx.service

开启服务,去网页测试

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

Nginx服务搭建成功了

                部署tomcat

确保两台tomcat服务器都有jdk,安装步骤和tomcat多实例安装步骤一样,最后看一下jdk版本即可

 安装tomcat服务

[root@localhost /opt]# tar -zxf apache-tomcat-9.0.16.tar.gz 

#解压

[root@localhost /opt]# cp -r apache-tomcat-9.0.16 /usr/local/tomcat
#复制

[root@localhost /opt]# useradd -s /sbin/nologin tomcat
#创建tomcat用户

[root@localhost /opt]# cd /usr/local/
[root@localhost /usr/local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat
[root@localhost /usr/local]# chown tomcat:tomcat tomcat/ -R

#添加属组属主

编辑tomcat服务的主配置文件

[root@localhost /usr/local]# vim /etc/systemd/system/tomcat.service

[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

开启tomcat

[root@localhost /usr/local]# systemctl start tomcat.service 

        另一台主机搭建tomcat服务步骤都是一样的就不重复贴图了 ,最后能在网页出现tomcat页面证明你已经成功了

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

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

                动静分离配置 

        动静分离,就是将css、js、jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能。

tomcat1页面

[root@localhost webapps]#mkdir test
[root@localhost webapps]#vim test/index.jsp
[root@localhost tomcat]#vim conf/server.xml

            unpackWARs="true" autoDeploy="true" xmlValidation="false"
            xmlNamespaceAware="false">
                                path="" reloadable="true" />
     

  

tomcat2页面

[root@localhost /usr/local/tomcat/webapps]# mkdir static
[root@localhost /usr/local/tomcat/webapps]# vim static/index.jsp

[root@localhost /usr/local/tomcat/conf]# vim server.xml

            unpackWARs="true" autoDeploy="true" xmlValidation="false"
            xmlNamespaceAware="false">
                                path="" reloadable="true" />
     

 重启

[root@localhost /usr/local/tomcat/conf]# systemctl restart tomcat.service 

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

                Nginx配置

准备静态页面和图片 

[root@localhost /usr/local/nginx/html]# ls
50x.html  index.html
[root@localhost /usr/local/nginx/html]# echo '

这是静态页面

' > /usr/local/nginx/html/test.html [root@localhost /usr/local/nginx/html]# ls 50x.html index.html test.html

创建一个放图片的目录

[root@localhost /usr/local/nginx/html]# mkdir /usr/local/nginx/html/static
[root@localhost /usr/local/nginx/html]# cd static/
[root@localhost /usr/local/nginx/html/static]# ls
dog.jpg

配置文件

[root@localhost /usr/local/nginx/html/static]# vim /usr/local/nginx/conf/nginx.conf

  #配置负载均衡服务器列表,weight参数表示权重,权重越高,被分配到的概率越大 

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

去网页测试

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

 刷新

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

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

 

 总结

        Tomcat服务器是一个免费的开放源代码的Web应用服务器。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选

        在生产环境中,Tomcat server的硬件配置可能不尽相同,可以通过修改相应服务器的weight值,对配置较高或配置低的服务器的访问请求进行分配控制

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