分布式环境Tomcat多节点集群下共享目录配置,tomcat虚拟目录+nfs

咱们可能有这种场景:linux

集群环境下,多个web容器须要请求一个共享目录下的文件,好比保存图片或者录音文件,任意一个节点保存后其余节点须要及时获取,此时就须要目录进行同步了,不然Nginx负载到任意一个节点上请求文件时,找不到文件将返回404,这时候linux下能够用rsync处理,可是rsync双向同步有不少问题,在jekins环境下不少不少问题,不建议使用。nginx

这里建议用nfs处理,或者用其余分布式文件系统如gfs或者ceph等,或者直接将这些文件放到cdn(看项目大小,财气是否够粗够硬),考虑文件不少性能问题建议cdn,其次gfs,ceph,最low的nfs处理吧。web

 

处理分3个步骤:centos

1)安装nfstomcat

2)配置nfsapp

3)配置tomcat 虚拟目录webapp

 

1.1)安装nfs分布式

  yum install nfs-utils portmap nfs4-acl-tools  (每一个节点分别执行)性能

1.2)各自节点(tomcat所在linux)rest

  mkdir -p /data/nfs

  chown -R tomcat:tomcat /data/nfs

  chmod -R 777 /data/nfs

  以上3条命令每一个节点分别执行

2.1)nfs server(只有一个server,选用一个节点,其余均为客户端)配置

  vi /etc/exports

  添加以下内容:

    /data/nfs *(rw,sync)

2.2)启动nfs服务

  centos redhat 5版本执行:

    service portmap restart

    service nfs restart

    

    让nfs随机启动:

      chkconfig portmap on

      chkconfig nfs on

  centos redhat 6版本执行:

    service rpcbind restart

    service nfs restart

    让nfs随机启动:

      chkconfig rpcbind on

      chkconfig nfs on

2.3)客户端挂载nfs文件系统

   a、关闭防火墙(各节点分别执行,或者添加iptables策略)

    service iptables stop

    chkconfig iptables off

   b、挂载nfs

     mount -t nfs 10.0.0.1:/data/nfs /data/nfs

     上面10.0.0.1为nfs server ip地址,上面这条命令各节点分别执行

   这时客户端节点执行df -h命令应该能看到nfs挂载点文件系统了

3.1)tomcat配置虚拟目录

  server.xml中添加host:

    <Context path="/mp3" docBase="/data/nfs" reloadable="true"></Context

 

以上tomcat就能够访问webapp(deploy目录)外的文件了,咱们能够经过http://ip:端口/工程名/mp3/001.mp3访问咱们的音频文件了,nginx无论分发到哪一个节点tomcat都不会返回404了,由于任意一个节点往nfs目录下写文件实际上时写到nfs server文件系统上,其余tomcat节点都可以访问。

以上教程比较简易,如遇问题能够邮件跟我联系dba_xyx@hotmail 

相关文章
相关标签/搜索