目录
Tomcat多实例
具体操作
负载均衡和动静分离
部署nginx负载均衡器
部署tomcat
动静分离配置
Nginx配置
总结
多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的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的主配置文件
修改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
开启服务
[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的页面
通常情况下,一个tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善web站点架构
Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力。
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服务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服务器都有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页面证明你已经成功了
动静分离,就是将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
准备静态页面和图片
[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参数表示权重,权重越高,被分配到的概率越大
去网页测试
刷新
Tomcat服务器是一个免费的开放源代码的Web应用服务器。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选
在生产环境中,Tomcat server的硬件配置可能不尽相同,可以通过修改相应服务器的weight值,对配置较高或配置低的服务器的访问请求进行分配控制