Apache Geode 群集配置服务概述
Apache Geode群集配置服务在定位器(locator)保存着由gfsh命令创建的集群配置,并将配置分发到集群成员中。
为什么使用群集配置服务
我们强烈推荐使用gfsh命令行和群集配置服务作为首要的方法来管理你的分布式系统配置。使用一个通用的集群配置来减少你在为单个成员配置上花费的时间并且强制当一个新的成员加入集群时时保持配置的一致。你不再需要为每个新加入的成员作重复配置。你不用再担心验证你的cache.xml文件。这也让在集群中传播配置变化和部署配置变化到不同的环境变得更容易了。
你可以在以下地方用到群集配置服务:
- 为整个Apache Geode集群保存配置。
- 用预先保存的配置重启成员。
- 从开发环境导出配置,迁移到测试环境或是生产环境中。
- 不需要分别为每台服务器作配置的情况下添加额外的服务器。
- 配置一些服务器来存已确定的区域,然后其它服务器用来存不同的区域.配置所有服务器来存一些公共的区域。
集群配置服务的使用
为了在geode中使用集群配置服务,你必须在你的布署中使用专用独立的locator。你不能与并用的locator(以另外一个线程运行,例如服务器线程)一起使用集群配置服务,也不能用于多播环境中。
独立的locator分发配置到群集的所有locator。群集中的每一个locator(定位器)使用--enable-cluster-configuration=true来保存所有的集群级别和组级别的配置设置。
注意:gfsh的默认行为是创建和保存集群配置,你可以在启动locator的时候使用--enable-cluster-configuration=false选项来禁用集群配置服务。
接下来,任何以--use-cluster-configuration=true参数启动的服务器,将会从locator中获取集群配置,也可以从
任何适合的组级别配置中
获得。为了在服务器中禁用集群配置服务,你必须在启动服务器时使用--use-cluster-configuration=false选项,默认的这个参数的值是为true的。
你也可以通过启动一台独立的locator时使用--load-cluster-configuration-from-dir=true这个参数来加载一个已存在的配置文件到集群配置
服务中。
查看 加载已有的配置文件到集群配置中
集群配置服务是如何工作的
当你用gfsh命令创建Geode区域,磁盘存储,或是其它对象,集群配置服务会在集群(也称为分布式系统)中的每个locator中保存配置。如果你执行命令的时候指定了组,一份独立的配置将被保存,它包括了仅应用于该组的配置。
当你使用gfsh命令启动Geode服务器locator分发已保存的配置到一台新的服务器。如果你在启动服务器的时候指定了一个组,服务器除了收到集群级别的配置之外还会收到组级别的配置。组级另的配置将在集群级别的配置之后生效。因此你可以用组级别的配置覆盖集群级别的配置。
创建集群配置的gfsh命令
如下命令会把服务配置写入到集群中的所有locator中。(locator会把配置写入磁盘)
-
configure pdx
* create region
alter region
alter runtime
destroy region
create index
destroy index
create disk-store
destroy disk-store
create async-event-queue
deploy jar
undeploy jar
注意到configure pdx命令必须在你启动数据成员之前执行。这他命令不会影响当前系统中已经运行的
成员。在执行这个命令后已经启动的数据成员会使用新的PDX配置。
如下网关相关的命令使用了集群服务配置,它们的配置被locator保存。
create gateway-sender
create gateway-receiver
gfsh的局限
这里有一些配置是你不能用gfsh来创建的,你必须用cache.xml或API来配置。
- 客户端缓存配置
-
你不能为以下java对象指定参数和值:
function
custom-load-probe
cache-listener
cache-loader
cache-writer
compressor
serializer
instantiantor
-
pdx-serializer
注意:
configure pdx
命令常常指定 com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer 类. 你不能在 gfsh中指定自定义序列化程序。 -
custom-expiry
-
initializer
-
declarable
-
lru-heap-percentage
-
lru-memory-size
-
partition-resolver
-
partition-listener
-
transaction-listener
-
transaction-writer
-
添加或移除事务监听器
-
添加 JNDI 绑定
-
删除异步事件队列 (AsyncEventQueue)
除此之外,使用gfsh配置网关时还有些限制,你必须使用cache.xml或是API来做如下配置:
- 配置一个网关冲突解决器 (GatewayConflictResolver)
- 你不能为以下java类指定参数和值:
gateway-listener
gateway-conflict-resolver
gateway-event-filter
gateway-transport-filter
gateway-event-substitution-filter
禁用集群配置服务
如果你不想使用集群配置服务,在启动locator时使用--enable-cluster-configuration=false或是
不使用独立的locator。那时你将在你的分布式系统中单独的为每个成员(通过 cache.xml 或API)配置缓存。