Pivotal Gemfire Locator进程描述
Locator是Pivotal Locator的一个进程,它告诉新的连接的成员,正在运行的成员的位置,以及为服务器的使用提供负载平衡。
你可以将locator作为对等的locators或者服务器locator或者两者兼顾进行运行。
对等的locator将加入成员的连接信息传送给正运行在locator的分布式系统的成员。
服务器locator将客户端连接信息传送给正运行在locator的分布式系统的服务器。服务器locator也监视服务加载,将客户端发送给负载最小的服务器。
默认情况下,locator作为为对等的locator和服务器的locator运行。
你可以单独的运行locator,也可以将locator的运行嵌套到其他的Gemfire进程,单独的运行locator可以提供最高的可靠性以及locator服务作为一个整体的有用性。
Locator的配置和日志文件
Locator的配置和日志文件存在下面的属性。
当使用gfsh单独的启动一个locator的时候,gfsh将会自动的加载需要的jar文件到jvm进程的CLASSPATH中。如果使用LocatorLauncher API启动一个独立的locator,你必须在命令中指定$GEMFIRE_HOME/lib/locator-dependencies.jar来启动locator进程。
Locators是分布式系统的成员,它像其他的成员一样,在mcast-port和locator的配置选项中,locator配置的时候可以向servers配置一样。因此,如果分布式系统中还有另外两个locator每一个locator都可以参考其他的locator进行配置。
gfsh> start locator --name=locator1 --port=9009 --mcast-port=0 \ --locators='host1[9001],host2[9003]'
你可以使用gemfire.properties或者在命令行指定stat-up的参数来配置locators,如果在一个属性文件中指定了locator的配置,locator需要向分布式系统中其他成员一样的gemfire.properties设置,如果使用的是独立的,那么久需要一样的gfsecurity.properties设置,限制访问安全限制文件。
例如,在gemfire.properties中配置locators和多端口:
locators=host1[9001],host2[9003]
mcast-port=0
如果你需要指定一个locator区连接一个在多站点服务的远程的站点,你需要像下面一样指定参数:
gfsh> start locator --name=locator1 --port=9009 --mcast-port=0 \
--J='-Dgemfire.remote-locators=10.117.33.214[9009],10.117.33.220[9009]'
没有缓存配置文件特定于locator。
对于日志文件的输出,这个locator在当前的工作目录下创建了日志文件。这个日志文件的名字默认是locator_name.log,位置在locator1这个文件中,如果你重启一个先前使用的locator,这个存在的日志文件就会自动的重新命名。当启动locator的时候,你可以通过在--log-level中指定一个等级来修改这个文件日志详情的等级。
默认情况下,locator会在当前执行gfsh命令的目录下的一个子文件下启动,这是当前工作目录的子目录,当使用gfsh启动locator的时候,你也可以指向一个不同的工作目录。
默认情况下,关闭的locator和由于网络分割时间或者成员没有反应而引起断开连接的locator将会重启并且自动重新连接已经存在的分布式系统,当一个locator处在一个正在重新连接的状态,这个locator就不会为分布式系统提供发现服务,看504页可以得到更加详细的介绍。
Locators和集群配置服务
Locators使用集群配置服务保存配置信息,从而应用到所有的集群成员,或者指定组的成员。这个配置信息被保存在locator的目录下,并且被传播到分布式集群中的所有locators中,当你使用gfsh启动一个server的时候,这个server将会接受来自locator的组级的或者集群级的配置信息。
启动locator
使用下面的指南启动locator
单机的locator:可以用下面方法中的一种启动单机的locator。
使用gfsh命令行功能,启动的语法如下:
gfsh>start locator --name=locator1
gfsh>start locator --name=locator2 --bind-address=192.168.129.205 --port=13489
使用com.gemstone.gemfire.distributed.LocatorLauncher类下的main函数启动locator,java执行。例如:
working/directory/of/Locator/process$java -server -classpath "$GEMFIRE/
lib/locator-dependencies.jar:/path/to/application/classes.jar" \
com.gemstone.gemfire.distributed.LocatorLauncher start Locator1 --
port=11235 --redirect-output
特别的,你可以使用LocatorLauncher类的API去启动一个嵌套在你刚刚启动的JAVA应用进程的locator服务。你执行java命令的目录就会成为locator进程运工作的目录。
当要启动多个locator的时候,不用同时启动他们。一个最好的方法是,在启动其他的locator之前,你应该等待大约30秒中,让第一个locator完全启动。要检查locator是否正常启动,以及locator的日志文件,你可以使用gfsh status locator命令去查看运行着的locator的运行时间。
嵌入的locator:在成员启动或者通过API来管理本地协作的locator。
使用gemfire.properties配置文件中的start-locator属性,在Gemfire成员中自动启动locator,当成员退出时,locator自动停止,这个属性的语法如下:
#gemfire.properties
start-locator=[address]port[,server={true|false},peer={true|false}]
例如:
#gemfire.properties
start-locator=13489
使用代码中的com.gemstone.gemfire.distributed.LocatorLauncher API启动locator,使用LocatorLauncher.Builder类创建一个LocatorLauncher实例,然后使用一个start()方法去启动一个嵌入在java应用的进程的locator服务。LocatorLauncher类中其他的方法提供locator的状态信息,以及停止locator。
这是另外一个嵌入在应用中的locator的例子,在允许其他成员访问它的时候启动locator并且检查locator的状态。
检查locator的状态
如果已经在gfsh下连接到了分布式系统,你可以通过locator的名字检查正在运行的locator的状态,例如:
status locator --name=locator1
如果没有连接到分布式系统,你可以通过提供的locator的PID或者主机名,端口号,或者现在工作的目录来检查locator的状态,例如:
gfsh>status locator --pid=2986
or
gfsh>status locator --host=host1 --port=1035
or
gfsh status locator --dir=<locator_working_directory>
locator_working_directory就是locator的工作目录。
如果成功的话,将会返回下面的信息。
停止locator
如果你在gfsh先连接到了分布式系统,你可以通过提供的名字来停止正在运行的locator。例如:
stop locator --name=locator1
如果没有连接到分布式系统,你可以通过制定locator的PID号或者locator当前工作的目录来停止locator。例如
gfsh>stop locator --pid=2986
or
gfsh>stop locator --dir=<locator_working_directory>
locator_working_directory就是当前运行着的locator的目录。