在网上几乎找不到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>