分享

resin:关于resin.xml的配置分离部署

 用勿龍潛 2011-12-13

Resin4比Resin3在于配置文件的结构上面更优秀。
Resin3在于resin.xml方面只有default server和default Host的配置定义
Resin4包含了default Cluster的定义,其他集群都是继承default Cluster的配置属性,如果有特殊的属性,他可以覆盖default Cluster的属性。

具体实例说明

Resin version:4.0.16
前端服务Cluster:web-tier
后端服务Cluster:app-tier(2条负载均衡进程,分别为a,b)

Resin4配置中Cluster结构

(以下只是描述关键cluster部分,其他部分不需要做太大修改)

<cluster-default>
  <resin:import path="${__DIR__}/app-default.xml"/>
  <development-mode-error-page/>
  <resin:if test="${resin.professional}">
    <cache memory-size="64M">
      <rewrite-vary-as-private/>
    </cache>
  </resin:if>
  <host-default>
    <access-log path="log/access.log" 
              format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
              rollover-period="1W"/>
    <web-app-deploy path="webapps" versioning="true"/>
    <web-app-default>
      <prologue>
        <allow-servlet-el/>
      </prologue>
      <session-config>
        <use-persistent-store/>
        <enable-url-rewriting>false</enable-url-rewriting>
      </session-config>
      <resin:if test="${resin.professional}">
        <cache-mapping url-pattern="/" max-age="5s"/>
        <cache-mapping url-pattern="*.gif" max-age="60s"/>
        <cache-mapping url-pattern="*.jpg" max-age="60s"/>
        <cache-mapping url-pattern="*.png" max-age="60s"/>
        <cache-mapping url-pattern="*.css" max-age="60s"/>
        <cache-mapping url-pattern="*.js" max-age="60s"/>
       </resin:if>
    </web-app-default>
  </host-default>
</cluster-default>

下面紧跟自定义的cluster,可以继承default Cluster的所有属性。
为方便管理,现调整配置结构。

前端分发器的配置XML

<cluster id="web-tier">
      <resin:import path="${__DIR__}/vhost/web-tier.xml"/>
</cluster>

后端处理器的配置XML

<cluster id="app-tier">  
      <resin:import path="${__DIR__}/vhost/app-tier.xml"/>
</cluster>


PS:Resin3中Resin路径变量名为${resin.home},Resin4中已经替换成以上写法.
然后在conf/vhost文件夹中创建web-tier.xml和app-tier.xml

web-tier.xml

<cluster xmlns="http:///ns/resin"
       xmlns:resin="urn:java:com.caucho.resin">
  <server id="web" address="127.0.0.1" port="6800">
         <http port="80" />
  </server>
  <server-default>
     <http address="*" port=""/>
     <user-name>www</user-name>
     <group-name>www</group-name>
  </server-default>
  <host id="" root-directory=".">
      <web-app id="/" root-directory="webapps/ROOT"/>
      </host>
 <resin:LoadBalance regexp="" cluster="app-tier"/>
</cluster>

app-tier.xml

<cluster xmlns="http:///ns/resin"
       xmlns:resin="urn:java:com.caucho.resin">
  <server id="a" address="127.0.0.1" port="6810"><http address="*" port="81"/></server>
  <server id="b" address="127.0.0.1" port="6811"><http address="*" port="82"/></server>
  <host id="" root-directory=".">
        <web-app id="/" root-directory="webapps/ROOT"/>
            </host>
</cluster>

结束语

如果有新的后端分发进程添加或者删除,只是需要在app-tier.xml中修改就可以完成,无需修改主resin.xml文件
如果有新的虚拟机添加或者删除,先在主resin.xml文件中添加cluster文件,然后在后端直接生成一个新的文件就行了
如果有自动化生成的脚本,那就更方便。

而且按照这样的配置,对于多虚拟机,管理虚拟机更方便,快捷。

题外话:如果resin能支持正则表达式和整个cluster导入,那就更方便了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多