tomcat相关实验

 2023-09-10 阅读 19 评论 0

摘要:tomcat相关实验 1.实现LNT 同主机实现 1、安装并启动tomcat 1)OpenJDK的安装yum install java-1.8.0-openjdk-devel.x86_64 确定JDK是否安装可以使用如下命令java -version ##可以看到版本,说明安装成功 2)tomcat安装yum install tomcat tomcat-admin-we

tomcat相关实验

1.实现LNT

同主机实现

1、安装并启动tomcat
1)OpenJDK的安装yum install java-1.8.0-openjdk-devel.x86_64 确定JDK是否安装可以使用如下命令java -version    ##可以看到版本,说明安装成功
2)tomcat安装yum install tomcat tomcat-admin-webapps tomcat-docs-webapp tomcat-webappsservice tomcat startss -ntl 监听的端口有三个:8080为http协议的接口,8009为ajp协议的接口,8005为管理接口
2、安装nginx并配置
    vim /etc/nginx/nginx.conf在server段增加如下内容root     /usr/local/tomcat/webapps/ROOT;   ##表示访问静态文件就访问nginx的这个目录,此目录是tomcat默认根目录。index index.jsp;location ~* \.(jsp|do)$ {                        ##访问的是jsp或者do结尾的动态文件就调度到后端主机tomcatproxy_pass http://192.168.213.251:8080;}nginx -tservice nginx restart  http://192.168.213.251/    ##这里直接访问80端口就可以了看到tomcat默认主页面了

2.实现LAT

tomcat访问?同主机(静态网页)

1、安装并启动tomcat
1)OpenJDK的安装yum install java-1.8.0-openjdk-devel.x86_64 确定JDK是否安装可以使用如下命令java -version    ##可以看到版本,说明安装成功
2)tomcat安装yum install tomcat tomcat-admin-webapps tomcat-docs-webapp tomcat-webappsservice tomcat startss -ntl 监听的端口有三个:8080为http协议的接口,8009为ajp协议的接口,8005为管理接口
2、安装httpd服务并确保有ajp_module和http_module
    httpd -M |grep "proxy"     ##查看模块是否已经加载,如果没有加载,要在配置文件中加载这些模块proxy_module (shared)proxy_ajp_module (shared)    ##表示反向代理时后端服务器是aip协议proxy_balancer_module (shared)proxy_connect_module (shared)proxy_express_module (shared)proxy_fcgi_module (shared)proxy_fdpass_module (shared)proxy_ftp_module (shared)proxy_http_module (shared)   ##表示反向代理时后端主机时http协议proxy_scgi_module (shared)proxy_wstunnel_module (shared)
3、与后端tomcat使用http协议连接时配置
    vim /etc/httpd/conf.d/tomcat.conf<virtualhost *:80>documentroot "/usr/share/tomcat/webapps/ROOT"<directory "usr/local/tomcat/webapps/ROOT">require all granted</directory>proxyrequests off     ##关闭正向代理,不加可以proxyvia on           proxypreservehost on    proxypass "/" "http://127.0.0.1:8080/"  proxypassreverse "/" "http://127.0.0.1:8080/"  </virtualhost>httpd -tsystemctl start httpd测试:http://172.18.21.107/
4、与后tomcat连接时使用的ajp协议时的配置
    vim /etc/httpd/conf.d/tomcat.conf<virtualhost *:80>documentroot "/usr/local/tomcat/webapps/ROOT"<directory "usr/local/tomcat/webapps/ROOT">require all granted</directory>proxyrequests offproxyvia onproxypreservehost onproxypass "/" "ajp://127.0.0.1:8009/"proxypassreverse "/" "ajp://127.0.0.1:8009/"</virtualhost>httpd -tsystemctl reload httpd
5、测试
    http://172.18.21.107/

3.实现lnmt的zrlog博客搭建

环境:
A主机:tomcat,nginx,ip地址为192.168.213.251
B主机:数据库,ip地址为192.168.213.253

1)在A上操作
    1、安装openjdkyum install java-1.8.0-openjdk-devel.x86_64 java -version   ---确认是否安装成功2、安装tomcatyum install tomcat tomcat-admin-webapps tomcat-docs-webapp tomcat-webappssystemctl start tomcathttp://192.168.213.251:8080   ##可以访问tomcat的默认网站3、将zrlog放到tomcat的根目录下mv  app/zrlog-1.7.1-release.war /usr/share/tomcat/webappssystemctl restart tomcatls   ##发现文件被自动解开docs      host-manager  manager  zrlog-1.7.1-releaseexamples  logs          ROOT     zrlog-1.7.1-release.war[root@centos7 webapps]#ln -s zrlog-1.7.1-release zrlog4、安装nginx并修改配置vim /etc/nginx/nginx.conf在server段增加如下内容root     /usr/local/tomcat/webapps;  ##表示访问静态文件就访问nginx的这个目录,此目录是tomcat默认根目录。index index.jsp;location / {      ##访问的是jsp或者do结尾的动态文件就调度到后端主机tomcat,此处为本地proxy_pass http://192.168.213.251:8080;}nginx -tservice nginx restarthttp://192.168.213.251/    ##这里直接访问80端口就可以了看到tomcat默认主页面了
2)在B上的设置
    安装数据库yum install mariadb-serversystemctl start mariadbmysqlcreate database zrlog;grant all on zrlog.* to zrloguser@'%' identified by "centos";
3)测试:
    登录网站http://192.168.213.251/zrlog/

4.实现nginx和httpd反代tomcat集群

环境
A:nginx和httpd:192.168.213.253
B:tomcat:192.168.213.251
C:tomcat:192.168.213.254

1》nginx反代
    1、在B和C上的设置mkdir -pv /usr/share/tomcat/webapps/myapp/WEB-INFvim /usr/share/tomcat/webapps/myapp/index.jsp<%@ page language="java" %><%@ page language="java" %><html><head><title>TomcatA</title></head><body><h1><font color="red">TomcatA.com</font></h1>   ##在C上将颜色改为green,Tomcat改为B<table align="centre" border="1"><tr><td>Session ID</td><% session.setAttribute("shen.com","shen.com"); %><td><%= session.getId() %></td></tr><tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr>   </table></body> </html> http://172.18.213.251:8080/myapp/http://172.18.213.254:8080/myapp/2、A上设置vim /etc/nginx/nginx.conf在http中配置upstream tomcatsrv { server 192.168.213.251:8080 ;server 192.168.213.254:8080 ;}server {listen 80 default_server;listen       [::]:80 default_server;index index.jsp ;root /usr/share/tomcat/webapps/app;location / {proxy_pass http://tomcatsrv ;}service nginx restarthttp://172.18.213.253/myapp/
2》httpd反代
    1、在B和C上的设置同上2、在调度器上的设置vim /etc/httpd/conf.d/tomcat.conf<proxy balancer://tomcatsrvs>                  ##定义一个后端服务器组BalancerMember http://192.168.213.251:8080 ##如果和后端服务器连接的协议为ajp协议,把http改为ajp并且把端口改为8009即可BalancerMember http://192.168.213.254:8080 ProxySet lbmethod=byrequests        </proxy>namevirtualhost *:80<VirtualHost *:80>documentroot /app<Directory /app>Require all granted</Directory>ProxyVia OnProxyRequests OffProxyPass / balancer://tomcatsrvs/ProxyPassReverse / balancer://tomcatsrvs/</VirtualHost>httpd -tservice httpd starthttp://172.18.213.253/app/httpd的负载集群功能具有健康状态检查功能可以把后端的一个tomcat停掉然后访问http://172.18.213.253/app/会发现不往关闭的tomcat主机调度了

5.实现httpd和nginx的会话粘性绑定

环境
A:nginx和httpd:192.168.213.253
B:tomcat:192.168.213.251
C:tomcat:192.168.213.254

1)httpd会话绑定
        在B和C上设置vim /etc/tomcat/server.xml <Engine name="Catalina" defaultHost="localhost" jvmroute="tomcatA">   ##在B上此行增加一个jvmroute="tomcatA,在C上此行增加jvmroute="tomcatB"systemctl restart tomcat在A上设置vim /etc/httpd/conf.d/tomcat.confHeader add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED <proxy balancer://tomcatsrvs>BalancerMember http://172.18.213.251:8080 route=tomcatABalancerMember http://172.18.213.254:8080 route=tomcatBProxySet lbmethod=byrequestsProxySet stickysession=ROUTEID</Proxy>namevirtualhost *:80<VirtualHost *:80>documentroot /app<directory /app>Require all granted</directory>ProxyVia OnProxyRequests OffProxyPass / balancer://tomcatsrvs/ProxyPassReverse / balancer://tomcatsrvs/</VirtualHost>service httpd reloadhttp://172.18.213.253/app/

1250974-20171112205851684-1848076443.png

2)nginx会话绑定
    在B和C上操作同上在A上配置vim /etc/nginx/nginx.confupstream tomcatsrv { server 192.168.213.251:8080 ;server 192.168.213.254:8080 ;hash $request_uri consistent;}server {listen 80 default_server;listen [::]:80 default_server;index index.jsp ;root /usr/share/tomcat/webapps;location / {proxy_pass http://tomcatsrv ;}}service nginx restarthttp://172.18.213.253/app发现只能调度至第一次访问的后端服务器,实现会话绑定。

6.两个tomcat服务器保存有相同的会话

环境
A:nginx和httpd:192.168.213.253
B:tomcat:192.168.213.251
C:tomcat:192.168.213.254

1)在B和C上的设置
    访问tomcat的官方文档http://192.168.213.254:8080/docs/cluster-howto.html  ,Document---->Clustering将官方文档中的如下内容复制到tomcat配置文件的<engine>或<host>中,此实验放到Engine中vim /etc/tomcat/server.xml <Engine name="Catalina" defaultHost="localhost"><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.74.74.74"  port="45564"frequency="500"        ##表示每0.5s发送一次心跳信息告诉其他成员自己还活着dropTime="3000"/>   ##表示3s没有发送信息就证明坏了<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="172.18.213.251"   ##另外一台主机修改为172.18.213.254port="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.MessageDispatch15Interceptor"/></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.JvmRouteSessionIDBinderListener"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>cp /etc/tomcat/web.xml /usr/share/tomcat/webapps/app/WEB-INF/   cd /usr/share/tomcat/webapps/app/WEB-INF/vim web.xml 在此文件内部没有注释的地方加如下内容<distributable/>   ##注意一定要在这个文件的内部,就在<web.app下加上就可systemctl restart tomcat注意:CentOS 7上的tomcat自带的文档中的配置示例有语法错误;没有加最后的/<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
2)在A的设置
        vim /etc/httpd/conf.d/tomcat.conf<proxy balancer://tomcatsrvs>BalancerMember http://172.18.213.251:8080 BalancerMember http://172.18.213.254:8080ProxySet lbmethod=byrequests</Proxy>namevirtualhost *:80<VirtualHost *:80>documentroot /app<directory /app>Require all granted</directory>ProxyVia OnProxyRequests OffProxyPass / balancer://tomcatsrvs/ProxyPassReverse / balancer://tomcatsrvs/</VirtualHost>service httpd reloadhttp://172.18.213.253/app/

1250974-20171112205824544-9387532.png

1250974-20171112205830778-694741684.png

6.实现session会话保持到memcache服务器

要想将会话保存至后端memcache中,并且每个memcache都保存相同的会话,需要一个管理项目memcached-session-manager,项目地址:https://github.com/magro/memcached-session-manager,找到SetupAndConfiguration wiki page.并点击进去。其中
在Add memcached-session-manager jars to tomcat处下载(根据所需进行下载)下载.jar文件至各tomcat的/usr/share/tomcat/lib/目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要选与tomcat版本相同的版本号。memcached-session-manager-2.1.1.jarmemcached-session-manager-tc7-2.1.1.jar   ##要根据tomcat的版本,实验时是7版本,所以这里要下载tc7spymemcached-2.9.1.jar
在Add custom serializers to your webapp (optional)处下载(根据所需进行下载)这里下载的是kryo-serializer,有如下jar文件需要下载msm-kryo-serializer-2.1.1.jarkryo-serializers-0.42.jarkryo-4.0.1.jarminlog-1.3.0.jarreflectasm-1.11.3-shaded.jarreflectasm-1.11.3.jarasm-5.2.jarobjenesis-2.6.jar

实现过程如下

        1、在director上实现nginx或者httpd的反向代理至tomcat集群,本实验用的是httpdvim /etc/httpd/conf.d/tomcat.conf <proxy balancer://tomcatsrvs>BalancerMember http://172.18.213.251:8080BalancerMember http://172.18.213.254:8080ProxySet lbmethod=byrequests</Proxy>namevirtualhost *:80<VirtualHost *:80>documentroot /app<directory /app>Require all granted</directory>ProxyVia OnProxyRequests OffProxyPass / balancer://tomcatsrvs/ProxyPassReverse / balancer://tomcatsrvs/</VirtualHost>service httpd start2、在两个后端服务器上的设置安装tomcat和memcache并启动服务yum install memcached -ysystemctl start memcachedls /usr/share/tomcat/lib/          ##复制.jar文件到此目录vim /etc/tomcat/server.xml  ##将官方文档中的此段内容复制到tomcat的配置文件中<Context path="/app" docBase="/usr/share/tomcat/webapps/app" reloadable="true"><Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:172.18.213.254:11211,n2:172.18.213.254:11211"failoverNodes="n1"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/></Context>systemctl restart tomcat3、测试安装客户端工具yum install -y libmemcached    ##不安装此软件包无法使用memdump等客户端工具http://172.18.213.253/app/      ##访问发现被调度到不同的tomcat主机,但会话是一样的memdump --server 172.18.21.107:11211     ##此命令可以查看到memcache中缓存的值systemctl stop memcached     ##关闭一台memcachedhttp://172.18.213.253/app/      ##继续访问发现会话仍然不变,说明会话在两台memcache中都缓存了

转载于:https://www.cnblogs.com/shenxm/p/7822854.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/32690.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息