背景:

单一服务器部署应用在往往随着应用人数的增加和频率的提高及后续数据量的增大会达到瓶颈,服务器会出现卡顿、崩溃等情况;所以在不改变应用结构的情况下只能进行部署架构上的变化,即使用apache(Apache HTTP Server(“httpd”))作为前置,进行负载均衡、动静分离;后端使用tomcat(Apache Tomcat)集群进行服务横向扩展(水平扩展)来提高服务效率。

负载均衡:将后端tomcat集群使用apache反向代理且设置权重以达到向tomcat集群进行请求分发;

动静分离:apache处理静态资源的能力比tomcat强;所以可以将静态资源(html,js等)放在apache;动态资源(jsp)放在tomcat上;达到动静分离提高处理能力;

环境:

tomcat7,apache2,centos6

步骤:

1.安装jdk

a.使用yum安装jdk

使用网络源进行安装:

yum install java-1.8.0-openjdk* -y

b.自定义安装

下载.gz(如jdk-7u79-linux-x64.gz)上传到指定路径(如/usr/local)

使用tar zxvf 命令解压:

配置java_home,使用vi命令修改/etc/profile;添加下面信息:

JAVA_HOME=/usr/local/java/jdk1.7.0_79
JRE_HOME=/usr/local/java/jdk1.7.0_79/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOMEJRE_HOMEPATHCLASSPATH

再使用source /etc/profile使得修改有效

source /etc/profile

再查看jdk是否安装有效

java -version

2.tomcat安装及设置

a.上传解压tomcat

上传tomcat(如apache-tomcat-7.0.57.zip)到指定路径下(如/usr/local/);

使用unzip命令进行解压;

unzip apache-tomcat-7.0.57.zip 

若出现-bash: unzip: command not found则先安装unzip:

yum install unzip

b.配置/conf/server.xml

修改/conf/server.xml来提高并发数使服务器能够支持高并发和进行端口设置(三个端口最好同时设置):

<Server port="8005" shutdown="SHUTDOWN">
<Connector  executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URLEncoding="utf-8" maxThreads="2000"   maxSpareThreads="2000"   minSpareThreads="200"    minProcessors="200" acceptCount="2000" maxProcessors="2000" maxPostSize="0"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

executor:表示使用该参数值对应的线程池;

minProcessors:服务器启动时创建的处理请求的线程数;

maxProcessors:最大可以创建的处理请求的线程数;

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

maxThreads:该线程池可以容纳的最大线程数。默认值:200;

minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。

maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。

maxPostSize:设置post请求参数长度,为0表示不设限制;若不起效果,部分版本设置为-1;

c.配置/bin/catalina.sh

配置tomcat容器的内存使用情况以达到服务器高利用率:

JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"

-server:一定要作为第一个参数,在多个CPU时性能佳

-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些

-Xmx:java heap最大值,使用的最大内存

上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。

-XX:PermSize:设定内存的永久保存区域

-XX:MaxPermSize:设定最大内存的永久保存区域

-XX:MaxNewSize:

-Xss 15120 这使得每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.

+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。

-Xss:每个线程的Stack大小

-verbose:gc 现实垃圾收集信息

-Xloggc:gc.log 指定垃圾收集日志文件

-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一

-XX:+UseParNewGC :缩短minor收集的时间

-XX:+UseConcMarkSweepGC :缩短major收集的时间

提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

d.其他配置

tomcat集群时应该是一个tomcat对应一个服务器,若一个服务器有多个tomcat,性能其实没有什么提高。好处可能就是稳定点,一个崩溃另外一个还可继续执行;

一台服务器多个tomcat除了需要进行端口设置;还需要配置catalina_home;

第一步:修改/etc/profile配置catalina_home;

export CATALINA_BASE=/usr/local/xxx
export CATALINA_HOME=/usr/local/xxx
export TOMCAT_BASE=/usr/local/xxxexport CATALINA_BASE_1=/usr/local/xxx
export CATALINA_HOME_1=/usr/local/xxx
export TOMCAT_BASE_1=/usr/local/xxx

再使之有效

source /etc/profile

第二步:修改/bin/startup.sh和/bin/shutdown.sh来指定catalina_home;

export CATALINA_HOME=$CATALINA_HOME
export CATALINA_BASE=$CATALINA_BASE

配置好上述即可,不然会出现,启动混乱的问题;

其他:

权限问题:使用chmod –R 777赋予tomcat读写权限

chmod -R 777 apache-tomcat-7.0.57

jndi数据源配置:在/config/context.xml配置:

<Resource name="jdbc/xx" auth="Container" type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://xxxx:3306/xxx"username="xx" password="xx" maxActive="50"maxIdle="30" maxWait="10000" />

2.apache安装及设置

a.使用yum安装

 yum install httpd

安装完成后,启动看是否安装完成:

service httpd start

centos7命令有所不同,但上述命令仍可使用;

b.配置负载均衡

上传反向代理配置到/etc/httpd/conf.d下如(xxx.conf)

#
# This configuration file enables the default "Welcome"
# page if there is no default index page present for
# the root URL.  To disable the Welcome page, comment
# out all the lines below.
#<VirtualHost *:80>ProxyRequests Off
ProxyPreserveHost On
#/appPlatform  前端资源全部不跳转
ProxyPass /appPlatform !#/customerPlatform 用户模块平均分发跳转后端80端口
ProxyPass /customerPlatform  balancer://customerPlatform/
ProxyPassReverse /customerPlatform  balancer://customerPlatform/
<Proxy balancer://customerPlatform/>
BalancerMember http://AA.BB.CC.DD/customerPlatform loadfactor=1
BalancerMember http://aa.bb.cc.dd/customerPlatform loadfactor=1
</Proxy>#/thirdPlatform 第三方接口模块平均分发跳转后端8080端口
ProxyPass /thirdPlatform  balancer://thirdPlatform/
ProxyPassReverse /thirdPlatform  balancer://thirdPlatform/
<Proxy balancer://thirdPlatform/>
BalancerMember http://AA.BB.CC.DD:8080/thirdPlatform loadfactor=1
BalancerMember http://aa.bb.cc.dd:8080/thirdPlatform loadfactor=1
</Proxy>#/managementPlatform 后台管理模块分发跳转后端AA.BB.CC.DD:8888端口
ProxyPass /managementPlatform  balancer://managementPlatform/
ProxyPassReverse /managementPlatform  balancer://managementPlatform/
<Proxy balancer://managementPlatform/>
BalancerMember http://AA.BB.CC.DD:8888/managementPlatform loadfactor=1
</Proxy>#/quartzPlatform 批跑模块分发跳转后端aa.bb.cc.dd:8888端口
ProxyPass /quartzPlatform  balancer://quartzPlatform/
ProxyPassReverse /quartzPlatform  balancer://quartzPlatform/
<Proxy balancer://quartzPlatform/>
BalancerMember http://aa.bb.cc.dd:8888/quartzPlatform loadfactor=1
</Proxy>
</VirtualHost>

其中:

ProxyPass

语法:ProxyPass [path] !|url

1)ProxyPass /appPlatform !

表示appPlatform为前缀的不转发,请求本地根路径下对应资源(默认根路径为/var/www/html/);

2)ProxyPass /customerPlatform  http://xx.xx.xx.xx/

表示customerPlatform 为前缀的转发到http://xx.xx.xx.xx/

2)ProxyPass /customerPlatform  balancer://customerPlatform/

表示customerPlatform 为前缀的转发到balancer://customerPlatform/负载均衡集群

ProxyPassReverse

语法:ProxyPassReverse [路径] url

它一般和ProxyPass指令配合使用,此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL,这样可以避免在Apache作为反向代理使用时。

<Proxy balancer://xx/>

语法:BalancerMember xxxx loadfactor=?

通过<Proxy balancer://customerPlatform />设置负载均衡名称

通过BalancerMember xxxx loadfactor=?设置后端集群tomcat服务器的路径及权重

c.实现动静分离

apache默认的路径为/var/www/html;将静态资源上传到该路径下;再如上述设置不跳转即可:

#/appPlatform  前端资源全部不跳转
ProxyPass /appPlatform !

传统分布式架构部署(apache+tomcat集群)相关推荐

  1. Apache + Tomcat集群配置详解(1)

    Apache + Tomcat集群配置详解(1) 一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl ...

  2. apache+tomcat集群环境搭建

    apache+tomcat集群环境搭建 1. 什么是集群         简单理解就是:将项目同时部署在多台服务器上(tomcat)运行,通过一个web服务器(Apache/nginx)进行请求分发和 ...

  3. Apache+Tomcat集群负载均衡的两种session处理方式

    session共享有两种方式: 1.session共享,多个服务器session拷贝保存,一台宕机不会影响用户的登录状态: 2.请求精确集中定位,即当前用户的请求都集中定位到一台服务器中,这样单台服务 ...

  4. apache+tomcat 集群学习 点滴1

    认识: Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成.由于有了Sun的参与和支持 ...

  5. 架构部署001---双机集群(HA)系统

    JAVA技术交流QQ群:170933152 一些不太清楚的名词放这里吧,果然还是得什么都懂才行... ha是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效 ...

  6. 如何搭建apache+tomcat集群

    1.安装tomcat+apache+mysql. 2.修改tomcat的端口,即修改server.xml中的配置,并修改 <Engine name="Catalina" de ...

  7. Nginx部署三台Tomcat集群详细操作步骤

    详细步骤请看教程视频:视频地址 以下是安装教程和关键代码等资料: 讲解图例: 一.环境安装 JDK1.8安装教程:教程地址 Tomcat8.5获取链接: 链接:https://pan.baidu.co ...

  8. window xp Apache与Tomcat集群配置--转载

    转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...

  9. 解决apachenbsp;tomcat集群中sess…

    在部署的tomcat集群下的web工程项目的web.xml中添加<distributable/> 可以使用distributable元素来告诉servlet/JSP容器,编写的应用将在分布 ...

最新文章

  1. crontab 和 at 的简单区别和用法
  2. 520 钻石争霸赛 题解
  3. violinplot如何看懂_一张图告诉你如何看懂个股大趋势
  4. linux中dpkg找不到命令_工作中常用的Linux命令介绍与实践
  5. 豆丁文档无需豆元直接下载
  6. FPGA的学习历程-入门篇
  7. 【GAN论文解读系列】NeurIPS 2016 InfoGAN 使用InfoGAN解耦出可解释的特征
  8. Android之简洁天气
  9. 4.1关系运算符和逻辑运算符
  10. 微信小程序重新发起请求加载页面
  11. 阿里云实人认证的功能及应用
  12. Scyther工具形式化分析Woo-Lam协议
  13. 第七十四篇:机器学习优化方法及超参数设置综述
  14. 淘宝卖家掌握最新操作方法,让你的直通车飞起来!
  15. 互联网行业内卷的时代,12点前睡觉有错吗?
  16. 直播预告 | 低代码+数据分析,驱动企业数智化运营
  17. 简析LDO静态电流与功耗的关系
  18. Android Studio 崩溃没有Log信息提示
  19. CPU一致性的解决办法
  20. 德国语言班C1难考吗,德国语言班Dr Juno到底怎么样

热门文章

  1. pandas中describe函数详解
  2. 1.6节 K图应用:七段译码器
  3. 分子对接结果分析和作图
  4. 移动端图文直播技术方案的分析
  5. 解决ArcGIS使用ArcToolbox出现错误:Unable to execute the selected tool.
  6. Pcap4J抓包基本使用方法
  7. acwing基础课——Dijkstra
  8. 如何利用手机进行英语学习?
  9. 西三旗限价房之旗胜家园实景
  10. JIT(just-in-time) 即时编译