您现在的位置是:首页 > 网页设计心得 > 程序人生程序人生
为什么要使用Tomcat集群
胜于蓝2019-07-25【程序人生】人已围观
简介 提高服务的性能,并发能力,以及高可用性 提供项目架构的横向扩展能力 Tomcat单机部署多应用/多机部署多应用Tomcat集群实现原理通过Nginx负载均衡进行请求转发Tomcat单机部署
- 提高服务的性能,并发能力,以及高可用性
- 提供项目架构的横向扩展能力
Tomcat单机部署多应用/多机部署多应用
Tomcat集群实现原理
通过Nginx负载均衡进行请求转发Tomcat单机部署多应用
(1)配置Tomcat环境变量
- 首先打开
/etc/profile
文件,增加下述内容配置Tomcat环境变量。
export CATALINA_BASE=/home/panjing/developer/tomcat1
export CATALINA_HOME=/home/panjing/developer/tomcat1
export TOMCAT_HOME=/home/panjing/developer/tomcat1
export CATALINA_2_BASE=/home/panjing/developer/tomcat2
export CATALINA_2_HOME=/home/panjing/developer/tomcat2
export TOMCAT_2_HOME=/home/panjing/developer/tomcat2
- 保存退出,执行
source /etc/profile
使配置文件生效
(2)修改Tomcat配置文件
- 第一个tomcat不变
- 打开第二个tomcat目录下
bin/catalina.sh
即${tomcat}/bin/catalina.sh
-
找到
# OS specific support. $var _must_ be set to either true or false.
- 在这行下面编辑,新增如下配置,保存退出
- 在这行下面编辑,新增如下配置,保存退出
-
打开第二个tomcat目录下
conf/server.xml
即${tomcat}/conf/server.xml
-
注:此时有3个端口需要修改
- Server port="8005" 节点端口号修改为9005
- Connector port="8080" protocol="HTTP/1.1" 节点端口号修改9080
- Connector port="8009" protocol="AJP/1.3" 节点端口号修改9009
- 注意:以上端口号可以任意修改,但切记不能跟已有端口号重复
-
- 分别进入两个tomcat的bin目录下启动tomcat即进入
${tomcat}/bin/
执行startup.sh
- 访问
http://localhost:8080
,http://localhost:9080
可以打开tomcat部署的webapps的ROOT项目首页 - 如果继续想部署多个tomcat实例,请依照此法
- 注:端口号在系统中必须不能重复,必须是系统没有使用的
Tomcat多机部署多应用
多机部署多应用相对于单机部署多应用简单很多,参考以下原则。
- 如果一个机器部署一个tomcat实例,不用修改
- 如果一个机器部署多个tomcat实例,依照单机部署多实例方法
- 注:多个服务器并且每个服务器只安装一个Tomcat要保证它们之间的网络是互通的,方可集群。Nginx装在任意一台服务器上即可,也可单独把Nginx服务独立出来一台。
Nginx负载均衡配置、策略、场景及特点
在搭建集群之前,需要简单了解Nginx关于负载均衡的配置,如果对Nginx不太熟悉,可以参考文章Nginx基本使用。
轮询(默认)
- 优点:实现简单
- 缺点:不考虑每台服务器处理能力
upstream www.panjingg.test{
server www.panjingg.test:8080;
server www.panjingg.test:9080;
}
权重
- 优点:考虑了每台服务器处理能力的不同
upstream www.panjingg.test{
server www.panjingg.test:8080 weight=15;
server www.panjingg.test:9080 weight=10;
}
注:weight默认是1,如果多个配置权重的节点,比较相对值。
ip hash
- 优点:能实现同一个用户访问同一个服务器
- 缺点:根据ip hash不一定平均
upstream www.panjingg.test{
ip_hash;
server www.panjingg.test:8080;
server www.panjingg.test:9080;
}
url hash(第三方,意为需要安装第三方插件)
- 优点:能实现同一个服务访问同一个服务器
- 缺点:根据url hash分配请求会不平均,请求频繁的url会请求到同一个服务器上
upstream www.panjingg.test{
server www.panjingg.test:8080;
server www.panjingg.test:9080;
hash $request_uri;
}
fair(第三方,意为需要安装第三方插件)
- 特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream www.panjingg.test{
server www.panjingg.test:8080;
server www.panjingg.test:9080;
fair;
}
负载均衡参数讲解扩展知识点补充
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down;(down表示当前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2;(weight默认为1,weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;(其他所有的非backup机器down或者忙的时候,请求backup机器)
}
Nginx+Tomcat搭建集群
了解了Nginx关于负载均衡相关策略后,我们将使用权重的策略搭建集群。
Tomcat配置
- 首先修改清空tomcat1以及tomcat2目录下
webapps/ROOT
目录,分别创建两个html文件,以备测试使用。注意,此处仅是为了测试方便,在真实开发中一定不可如此。
<!-- tomcat1/webapps/ROOT/index.html -->
<h1>tomcat1</h1>
<!-- tomcat1/webapps/ROOT/index.html -->
<h1>tomcat2</h1>
- 启动两个tomcat,执行
${tomcat}/bin/start.sh
Nginx配置
- 编辑在
${nginx}/conf/nginx.conf
配置文件 - 在http节点下增加
include ${nginx}/conf.d/*.conf
- 目的是为了要增加Tomcat集群的负载均衡配置,并且把域名的配置文件分开,方便后期管理
- 在
conf.d/
文件下创建www.panjingg.test.conf文件
upstream www.panjingg.test{
server www.panjingg.test:8080 weight=1;
server www.panjingg.test:9080 weight=1;
}
server {
listen 80;
autoindex on;
server_name www.panjingg.test;
index index.html index.htm;
access_log /var/log/nginx/access_panjingg.log panjingg;
location / {
proxy_pass http://www.panjingg.test;
add_header Access-Control-Allow-Origin *;
}
}
- 修改完之后重启nginx
完成以上步骤后,打开浏览器,输入zx201.com
进行访问,发现将会报错。
原因是没有使用DNS进行解析,这里为了演示方便,修改了hosts文件,以windows系统为例,以管理员权限打开C:\Windows\System32\drivers\etc\hosts文件
,在末尾添加如下内容:
# 主机IP 域名
192.168.2.9 zx201.com
添加完成后保存,打开浏览器,输入zx201.com
,页面正常显示。
此时狂刷新页面,发现一会访问到8080端口的tomcat,一会访问到9080端口的tomcat,至此,Nginx+Tomcat集群搭建成功。
Tags:
很赞哦! ()
上一篇:返回列表
下一篇:Web项目中的路径问题
随机图文
-
web安全之文件上传漏洞攻击与防范方法
一、 文件上传漏洞与WebShell的关系文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方 -
胜于蓝推荐|常用的CSS命名规范大总结,非常实用(收藏)
CSS命名由小写的英文单词或组合命名,单词与单词之间通过“-”连接,常用的CSS命名规范有文本命名规范,页面结构命名规范,导航命名以及功能命名等。 CSS 命名一般采用小 -
通过PHP与Python代码对比浅析语法差异
一、背景人工智能这几年一直都比较火,笔者一直想去学习一番;因为一直是从事PHP开发工作,对于Python接触并不算多,总是在关键时候面临着基础不牢,地动山摇的尴尬,比如在遇到稍微深