在网上几乎找不到terracotta的中文文档,很多像我一样的新手只能慢慢摸索。今天在进行配置的时候将默认的配置文件翻译一下,有些地方翻译得不对的还请指正,将不胜感激。(没有全部翻译,只是用自己的话来描述了这些配置项的用法和含义) 

废话少说,直接上文件:(文件可以在附件中下载)

 

 

<?xml version="1.0" encoding="UTF-8" ?>

 <!--

  本文件中讲解了几乎所有的配置项,但可能只有很少几项能够用到,必须配置的都使用(要求)来进行标注了。

 -->

 <tc:tc-config xmlns:tc="http://www.terracotta.org/config"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-6.xsd">

  <!--

   这是一个可选配置项。

   Terracotta安装都会有一个默认的tc.properties文件包含系统属性,通常,在tc.properties中的设置是预置且不应该被修改的。

   但可以在本段中进行配置,以替换这些系统属性。加载这些系统属性有一个优先级:优先级由低到高

   1. tc.jar文件中默认的tc.properties文件

   2. 本文件中的<tc-properties>块

   3. 本地lib目录下自定义的tc.properties文件

   4. 使用java -D设置的系统属性

  -->     

   <tc-properties>

     <property name="l2.nha.dirtydb.autoDelete" value="true"/>

     <property name="l1.cachemanager.enabled" value="true"/>

     <property name="logging.maxLogFileSize" value="1024"/>

   </tc-properties>

      <!-- 

  'system'段中包含影响整个Terracotta系统的配置数据;比如是否激活DSO服务

  -->

   <system>

     <!-- 

     'configuration-model'元素用于显示不同模式信息目的。有两个模式: 'development' or 'production'.

     In development, you may want each client to have its own configuration,

  在开发模式下,每个客户端可以有自己的配置,独立的server或者任何其他客户端等。

     这种方式在开发模式下是很有用的。生产环境中,每个客户端都应该从Terracotta servers实例中获取配置信息。

     也就是说,如果想要所有的客户端都向同一个服务端获取配置信息,那么就设置成'production'。

  通常,客户端还可以通过设置tc.config来指定从哪个server获取配置信息

         -Dtc.config=serverHost:dsoPort

     默认: 'development'. 

  -->

     <configuration-model>development</configuration-model>

   </system>

   <!--

 这段定义在Terracotta系统中的当前servers。

 可以忽略整个这一段,在这种情况下,被当作一个设定了默认值的单服务器。

 可以在这里精确地指定一个server(一般情况下),或者,如果想要运行多个server来进行故障切换,那么就可以在这里包括多个server。

 如果在这里指定了多个server,注意每个server需要被配置。如果根据server运行的host来命名server,那么这些servers将会找到host的hostname并且自动运行。

   -->

   <servers>

    <!-- 

    host -> 绑定server的地址,默认是'%i',即IP地址

    name -> 标识主机,任意起名。默认为'host:dso-port'

    bind -> 绑定的地址,默认'0.0.0.0'

     -->

     <server host="my.host.name" name="My Server Name" bind="0.0.0.0">

       <!-- 

  terracotta的数据存放目录。默认是start-tc-server脚本所在目录。

       -->

       <data>/opt/terracotta/server-data</data>

       <!-- 

 terracotta server的日志所在目录。默认是start-tc-server脚本所在目录。还可以指定stderr: 或 stdout: 来作为输出。

       -->

       <logs>/opt/terracotta/server-logs</logs>

       <!--

  设置server存储它的搜索索引数据。

  没有默认目录,这个目录应该和<data>相同。

       -->

       <index>/opt/terracotta/server-index</index>

       <!-- 

  设置静态数据缓存目录。

  默认是start-tc-server脚本所在目录

    -->

       <statistics>/opt/terracotta/server-statistics</statistics>

       <!-- 

  DSO server监听DSO client连接的端口。你可以通过使用bind属性将这个端口绑定给一个指定的接口。  默认为: 9510

       -->

       <dso-port bind="12.345.678.9">9510</dso-port>

       <!-- 

 设置server监听来自于Terracotta 管理界面的连接的端口。 默认: dso-port+10

       -->

       <jmx-port bind="12.345.678.9">9520</jmx-port>

       <!--

  设置在networked-active-passive模式下,server监听来自于其他servers的连接的端口。

  你可以通过使用bind属性将这个端口绑定给一个指定的接口

           默认:dso-port + 20

       -->

       <l2-group-port bind="12.345.678.9">9530</l2-group-port>

   <!--

  Terracotta server打开身份验证功能。

  如果该元素为空,默认会使用标准的java JMX身份验证原理,引用密码文件和访问权限文件:

           - $JAVA_HOME/jre/lib/management/jmxremote.password ->密码文件

           - $JAVA_HOME/jre/lib/management/jmxremote.access   ->访问权限

  需要修改这些文件,如果不存在则创建:

   - jmxremote.password: 在这个文件的最后添加用户名和密码:格式如下

              secretusername secretpassword

         

           - jmxremote.access: 在这个文件的最后添加如下格式的内容:

              secretusername readwrite

  还需要修改这两文件的权限:

   $ chmod 500 jmxremote.password

           $ chown <执行tc-server的用户> jmxremote.password

   -->

       <authentication/>  

   <!--

  为嵌入式的Terracotta HTTP Server打开身份验证功能。

  这个文件的格式为:username: password [,rolename ...]

  Passwords必须是文本文件,且模糊或者校验和,可以通过com.mortbay.Util.Password类来进行生成满足条件的密码。

   -->

       <http-authentication>

         <user-realm-file>/opt/terracotta/realm.properties</user-realm-file>

       </http-authentication>

   <!--给指定给DSO server的DSO配置数据 -->

       <dso>

  <!--

设定一个时间,在DSO Server重启后,客户端在这个时间之前可以重新连接到服务器。超过这个时间后,客户端将不被允许重新连接。默认:120

  -->

         <client-reconnect-window>120</client-reconnect-window>

  <!--设置DSO数据持久化-->

         <persistence>

   <!--

DSO 持久化方式:'temporary-swap-only' 和 'permanent-store'

  temporary-swap-only -> 将硬盘当作临时存储使用,但不进行持久化,重启之后数据不存在,这种模式比'permanent-store'快。

  permanent-store ->持久化到硬盘上,重启之后数据仍然存在。如果有多台server,那么要求使用这种模式。

  默认:'temporary-swap-only'

   -->

           <mode>temporary-swap-only</mode>

         </persistence>

         <!--  定期分布式垃圾回收-->

         <garbage-collection>

   <!--设置是否支持定期分布式垃圾回收。默认:true-->

           <enabled>true</enabled>

   <!--

如果设置为true,当DSO server执行分布式垃圾回收时,它将不会日志记录额外的信息。当试着对你的应用进行性能调优时,这个设置将会很有用。默认:false

   -->

           <verbose>false</verbose>

           <!--  垃圾回收时间间隔  默认: 3600 (60 minutes)  -->

           <interval>3600</interval>

         </garbage-collection>

       </dso>

     </server>

     <!-- 

     这个附加的<server> 元素仅仅是举个例子来说明多个服务器如何进行定义

     <server host="broccoli">

       <data>/usr/local/tc/data</data>

       <logs>/usr/local/tc/logs</logs>

       <dso-port>8510</dso-port>

       <dso>

         <persistence>

           <mode>permanent-store</mode>

         </persistence>

         <garbage-collection>

           <enabled>true</enabled>

           <verbose>true</verbose>

           <interval>3600</interval>

         </garbage-collection>

       </dso>

     </server>

  -->

     <!--

  这里设置将会对所有的server进行分组。每个组将会由一个或多个server组成,然后将会有一个server作为活动server。

  比如,每个组将会有一个活动的server。如果在一个集群中只有仅仅一个活动server的话忽略这个段。因为这种情况下将会出现多个组中的多个活动server

  -->

  <!--<mirror-groups>

       <!-- 

       每个组通过group-name来分配一个组名。每个组的组员的名称都有server段中使用name进行指定,这里不做更改。

   <mirror-group group-name="group1">

         <members>

           <member>server1</member>

         </members>-->

         <!-- 

  每个组将会有自己的ha控

         <ha>

           <mode>networked-active-passive</mode>

           <networked-active-passive>

             <election-time>5</election-time>

           </networked-active-passive>

         </ha>

        </mirror-group>

        <mirror-group>

          <members>

            <member>server2</member>

          </members>

        </mirror-group>

     </mirror-groups>    --> 

  <!--这里指定高可用模式active-passive,可以忽略这个段-->

     <ha> <!--

  配置是disk-based active-passive(基于硬盘的主从模式)模式还是network-based active-passive(基于网络的主从模式)模式。

  对应的就有两种模式:'disk-based-active-passive' 和 'networked-active-passive'. 

  默认:'networked-active-passive'

   -->

       <mode>networked-active-passive</mode>

   <!--

  这个段设置的前提是<mode>设置为基于网络的主从模式。

  这里指定选举时间,从servers中选举出活动的server,网络延迟和任务负载将会被进行选举时考虑。

   -->

       <networked-active-passive>

         <election-time>5</election-time>

       </networked-active-passive>

     </ha>

  <!--Terracotta平台检查新版本功能-->

     <update-check>

  <!--是否支持新版本更新检查。模式:false-->

       <enabled>true</enabled>

       <!-- 检查周期:默认7天 -->

       <period-days>10</period-days>

     </update-check>

   </servers>

    <!--

  这里的设置将会影响所有连接系统的客户端。

  注意,这些设置一致地应用在所有的客户端上,这将不会阻止你为不同的客户端进行不同的设置。有两种方式可以进行这样的设置:

   ->某些参数(比如'logs')可以在客户端设置扩展参数进行替换不同的变量。比如'%h'等

   ->使用'%(myprop)'的方式来使用java系统属性值'myprop'

   -->

   <clients>

   <!--

  客户端日志目录:可以通过参数替换来设置,比如

  logs-%i -> logs-192.168.0.182

  client-logs-%h ->client-logs-terracotta

  -->

     <logs>logs-%i</logs>

   </clients>

  </tc:tc-config>