LB tomcat 和session cluster

一. Nginx负载均衡Tomcat
Real server(2个):
//创建虚拟主机

mkdir –pv /data/webapps/ROOT
cd /usr/local/tomcat/conf
vim server.xml
    <Engine name="Catalina" defaultHost="node4.magedu.com" jvmRoute="TomcatA">
      <Host name="node4.magedu.com" appBase="/data/webapps/" unpackWARs="true" autoDeploy="true">
        <context path="" docBase="ROOT" reloadable="true">
        </context>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
               prefix="web1_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
Mkdir /data/logs
Mkdir  -pv /data/webapps/ROOT/{lib,classes,META-INF,WEB-INF}

//创建测试页面

Vim /data/webapps/ROOT/index.jsp
    
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
    <head>
       <title>jsp test page on web1</title>
    </head>
    <body>
       <% out.println("hello,web1."); %>
    </body>
</html>

//启动

Catalina.sh start

Director:

1001  cd /etc/nginx/
1005  cd conf.d/
1006  ls

//配置后端主机,并条件式代理

1007  vim default.conf
        upstream tcsrvs {
            server node4.magedu.com:8080;
            server node5.magedu.com:8080;
}
server {
            location ~*\.(jsp|do)$ {
            proxy_pass http://tcsrvs;}
1009  service nginx start

//主机得互相解析

1012  vim /etc/hosts
        192.168.184.10 node1.magedu.com
192.168.184.20 node4.magedu.com
192.168.184.21 node5.magedu.com

//验证

1013  curl http://192.168.184.10/index.jsp
1016  curl http://192.168.184.10/index.jsp

//会话绑定

1007  vim default.conf
        upstream tcsrvs {
          ip_hash;}

二. Httpd负载均衡tomacat
Director:
//查看模块

1023  httpd –M

//关闭DocumentRoot

 1024  cd /etc/httpd/conf
 1025  ls
1026  vim httpd.conf 
         #DocumentRoot "/var/www/html"

//创建虚拟机并对后端主机负载均衡

 1027  cd ../conf.d
 1028  ls
 1029  vim vhosts.conf 
      <proxy balancer://lbcluster1>
         BalancerMember http://192.168.184.20:8080 loadfactor=10 route=TomcatA
         BalancerMember http://192.168.184.21:8080 loadfactor=10 route=TomcatB
</proxy>
<VirtualHost *:80>
         ServerName web1.magedu.com
         ProxyVia  on
         ProxyRequests off
         ProxyPreserveHost on
         <proxy *>
           Require all granted //若httpd的版本小于2.4则会报错,注释掉
         </proxy>
         ProxyPass / balancer://lbcluster1/
         ProxyPassReverse / balancer://lbcluster1/
         <location />
           Require all granted
        </location>
</VirtualHost>
1031   httpd -t
 1032  service httpd start
 1033  curl http://192.168.184.10/index.jsp
 1034  curl http://192.168.184.10/index.jsp

//会话绑定

1029  vim vhosts.conf 
      Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <proxy balancer://lbcluster1>
   Proxyset  stickysession=ROUTEID
</proxy>或者有时候是
  <VirtualHost *:80>
  ProxyPass / balancer://lbcluster1/   stickysession=routid
  </VirtualHost>

//改变real server index.jsp测试会话绑定

  Real server:
  Vim /data/webapps/ROOT/index.jsp
<%@ page language="java"%>
<html>
  <head><title>ToncatA</title></head>
  <body>
    <h1><font  color="red"> TomcatA.magedu.com </font></h1>
    <table  aligne = “centre” border=”1”>
      <tr>
       <td>Session ID</td>
       <% session.setAttribute("magedu.com"," magedu.com"); %>
       <td><%= session.getId() %></td>
     </tr>
     <tr>
       <td>Created  on</td>
       <td><%= session.getCreationTime() %></td>
     </tr>
   </table>
  </body>
</html>

    

//基于ajp协议实现
1029 vim vhosts.conf
<proxy balancer://lbcluster1>
BalancerMember ajp://192.168.184.20:8080 loadfactor=10 route=TomcatA
BalancerMember ajp://192.168.184.21:8080 loadfactor=10 route=TomcatB

<VirtualHost *:80>
ServerName web1.magedu.com
ProxyVia on
ProxyRequests off
ProxyPreserveHost on
<proxy *>
Require all granted

ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/

Require all granted

三. Jk_module 实现负载均衡
Director:
//安装jk模块

1001  tar xf tomcat-connectors-1.2.32-src.tar.gz 
 1002  cd tomcat-connectors-1.2.32-src
 1003  ls
 1004  cd native/
 1005  ls
 1006  ./configure --help
 1007  which apxs
 1008  yum install httpd-devel gcc glibc-devel -y
 1009  which apxs
 1010  ./configure --with-apxs=/usr/sbin/apxs
 1011  make && make install

//装载并查看jk模块

 1012  cd /etc/httpd/
 1013  ls
 1014  cd conf.d/
 1015  ls
 1016  cp vhosts.conf vhosts.ajp.conf.bak 
 1017  mv vhosts.conf vhosts.http.conf.bak
 1018  ls
1025  httpd -M | grep jk
 1026  vim mod_jk.conf
        LoadModule jk_module modules/mod_jk.so
JKWorkersFile /etc/httpd/conf.d/worker.properties
JKLogFile logs/mode_jk.log
JKlogLevel debug
JKMount /* TomcatA
JKMount /status/ stat1
 1027  httpd -M | grep jk

//配置jk模块实现反向代理

1031  vim /etc/httpd/conf.d/worker.properties
worker.list=TomcatA,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=192.168.184.20
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.stat1.type=status
 1032  httpd -t
 1033  service httpd start
 1034  ss -tnl
 1035  curl http://192.168.184.10

//jk模块实现tomcat负载均衡

1026  vim mod_jk.conf
        LoadModule jk_module modules/mod_jk.so
JKWorkersFile /etc/httpd/conf.d/worker.properties
JKLogFile logs/mode_jk.log
JKlogLevel debug
JKMount /* lbcluster1
JKMount /status/ stat1
1031  vim /etc/httpd/conf.d/worker.properties
worker.list=TomcatA,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=192.168.184.20
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.TomcatB.port=8009
worker.TomcatB.host=192.168.184.20
worker.TomcatB.type=ajp13
worker.TomcatB.lbfactor=1
worker.lbcluster1.type=lb
worker.lbcluster.stickysession=0
worker.lbcluster.balanceworkers=TomcatA,TomcatB
worker.stat1.type=status
1032  httpd -t
 1033  service httpd start
 1034  ss -tnl
 1035  curl http://192.168.184.10

四. Session cluster
Real server(2):
//在两个tomcat上基于deltamanager配置session cluster

Vim /usr/local/tomcat/conf/server.xml
        < Host name="node4.magedu.com" appBase="/data/webapps/" unpackWARs="true" autoDeploy="true">

        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.1.7"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
</Host>

//需要在web.xml上开启

Cp  /usr/local/tomcat/conf/web.xml /data/webapps/ROOT/WEB-INF/
Vim /data/webapps/ROOT/WEB-INF/ web.xml
     <web-app>
         <distributable>
</web-app>

问题:The server is temporarily unable to service your request due to maintenance downtime or capacity problems.
Please try again later. Additionally, a 503 Service Unavailable error was encountered while trying to use an ErrorDocument to handle the request.

原因:
一、网站超过了服务器限制造成的
二、数据库连接池是否已满,内存是否溢出
解决:
本次记录造成的原因是,服务器配置低,Tomcat logs目录下 catalina.out文件过大(24M) 造成服务器 暂停服务

  1. 解决办法:
cd logs

echo > catalina.out #来清空内容

../bin/shutdown.sh #停止服务
../bin/startup.sh #启动服务

注意:这只能暂时解决,可能文件很快又会满了,当然升级服务器可能是最靠谱的解决办法
2. catalina.out日志level调整
既然日志文件catalina.out太大,那就调整它的日志记录等级,tomcat日志等级如下:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE(默认) > FINER > FINEST (lowest value)

# vim conf/logging.properties
 
###################
# Handler specific properties.
# Describes specific configuration info for Handlers.
###################
1catalina.org.apache.juli.AsyncFileHandler.level = OFF
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
 
这里我就直接把它关闭了:1catalina.org.apache.juli.AsyncFileHandler.level = OFF,推荐使用WARNING

然后如第三步的shutdown再startup重启tomcat使之生效。
3. 调整tomcat jvm内存大小

# 查看linux系统的内存大小:
free -m   # 数据以兆为单位返回。
df -h # 硬盘
找到linux安装路径,我的是在 /usr/local/tomcat7/bin
找到catalina.sh文件
vi catalina.sh # 打开catalina.sh文件
# 下边的命令是在vi中执行。
:set nu        #显示行号,已经显示的则不需要
#查找命令:目的是查找到cygwin=false这句话所在的行,记住所在行的行号我的是107
# 在“cygwin=false”上面加入以下行:
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128m -XX:MaxPermSize=256m"
  :wq  #保存退出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值