LINUX【企业】 ------- LNMP架构下的Tomcat的部署

LINUX【企业】 ------- LNMP架构下的Tomcat的部署

Tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。

 

部署过程如下:

  • 安装tomcat

server1:

1.下载并解压相关软件包

tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/localtar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local

为方便应用与管理,我们创建软连接

cd /usr/localln -s apache-tomcat-7.0.37 tomcatln -s jdk1.7.0_79 java

2.在/etc/profile中添加环境变量

export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

4.编辑配置文件

cd /usr/local/openresty/nginx/confvim nginx.conf 74 location ~ .jsp$ { 75 proxy_pass http://127.0.0.1:8080; //如果访问本地ip/.jsp文件,代理访问 http://127.0.0.1:8080 76 }

5.编辑Index.jsp文件,作为测试的文件

cd /usr/local/openresty/nginx/html

vim index.jspthe time is: <%=new java.util.Date() %>

6.开启tomcat

cd /usr/local/tomcat/bin/./startup.sh

 

*测试*:在浏览器中访问172.25.60.1:8080,出现如下测试页

  • 部署两台tomcat服务器的轮询访问

1.将server1上tomcat的配置复制到server2中

scp -r root@172.25.60.1:/usr/local/tomcat /usr/local/scp -r root@172.25.60.1:/usr/local/java /usr/local/

2.配置server2的环境变量文件,添加java的环境变量

export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

3.编辑server2和server1的tomcat的测试文件

cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
​
server1 the time is: <%=new java.util.Date() %>

4.开启tomcat

cd /usr/local/tomcat/bin/./startup.sh

5.编辑server1的nginx的配置文件,实现轮询

 17 http {
 18        upstream tomcat {
 19            server 172.25.60.1:8080;
 20            server 172.25.60.2:8080;
 21       }
​
 
 72         location ~ \.jsp$ {
 73             proxy_pass   http://tomcat;   //转向访问tomcat
 74         }
​
//屏蔽掉之前的memcache的配置
 78         location ~ \.php$ {
 79             #set $key $uri$args;
 80             #srcache_fetch GET /memc $key;
 81             #srcache_store PUT /memc $key;
 82             root           html;
 83             fastcgi_pass   127.0.0.1:9000;
 84             fastcgi_index  index.php;
 85             #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 86             include        fastcgi.conf;
 87         }

*测试:*在浏览器中访问172.25.60.1/test.jsp时,会轮询访问server1和server2的test.jsp文件

刷新后

 

Tomcat实现session共享

session的工作原理

(1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。

(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。

(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。

(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

session交叉共享的作用

为了数据保存的更加牢靠,即是某个服务器宕机了,数据并不会丢失,二是存放在集群中别的服务器的memcache中。

 

nginx会话保持之sticky模块

在使用负载均衡的时候会遇到会话保持的问题,常用的方法有:1.ip hash,根据客户端的IP,将请求分配到不同的服务器上;2.cookie,服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发布者,注意:cookie需要浏览器支持,且有时候会泄露数据

 

Sticky工作原理

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。2.后端服务器处理完请求,将响应数据返回给nginx。3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值4.客户端接收请求,并保存带route的cookie。5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。

 

部署:

1.将新的test.jsp覆盖原来的test.jsp

[kiosk@foundation27 Desktop]$ scp test.jsp root@172.25.27.1:/usr/local/tomcat/webapps/ROOTroot@172.25.27.1's password: test.jsp 100% 968 1.0KB/s 00:00 [kiosk@foundation27 Desktop]$ scp test.jsp root@172.25.27.4:/usr/local/tomcat/webapps/ROOTroot@172.25.27.4's password: test.jsp 100% 968 1.0KB/s 00:00

在浏览器输入172.25.60.1/test.jsp

当我们再次输入时,server info和ID都会发生改变

如何能够使其不变呢??

2.重新编译nginx-1.14,将sticky模块编译进去,并用新生成的二进制文件替换旧的

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng

make

[root@server1 objs]# cp nginx /usr/local/lnmp/nginx/sbin/cp: overwrite `/usr/local/lnmp/nginx/sbin/nginx'? y[root@server1 objs]# cp /usr/local/openresty/nginx/conf/nginx.conf /usr/local/lnmp/nginx/conf/cp: overwrite `/usr/local/lnmp/nginx/conf/nginx.conf'? y

 

3.编辑nginx的配置文件

cp /usr/local/openresty/nginx/conf/nginx.conf /usr/local/lnmp/nginx/conf/

vim nginx.conf 17 http { 18 upstream tomcat { 19 sticky; 20 server 172.25.27.1:8080; 21 server 172.25.27.4:8080; 22 }

4.开启nginx

cd /usr/local/openresty/nginx/sbin/ ./nginx -s reload netstat -nlpt

 

测试:172.25.27.1/test.jspSenver Info 和 ID不会变,输入的Session List 会保存在同一台主机上

 

5.session共享第一步:将jre中的session共享的包分别放到server1和server2的/usr/local/tomcat/lib下

编辑/usr/local/tomcatconf目录下的配置文件conten.txt

 34 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
 35 memcachedNodes="n1:172.25.27.1:11211,n2:172.25.27.4:11211"
 36 failoverNodes="n2"  ##server1改为n1
 37 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
 38 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
 39 />

第二步:server2和server1的配置相同,安装memcached服务并开启

yum install -y memcached/etc/init.d/memcached startnetstat -nlpt

第三步:server1和server2重启tomcat

[root@server4 bin]# ./shutdown.sh ./startup.sh

 

测试:172.25.27.1/test.jsp当server1的tomcat宕掉时,会自动切换到server4上,并且server1上的缓存会移动到server2上(在加入数据时,server1和server4开启不必同时开启),如果不添加数据,刷新页面即可

在server1的tomcat宕机后,发现在server1上的缓存漂移到了server2上
 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值