启动和关闭系统

确定正确的启动和关闭操作过程,并编写启动和关闭脚本。

精心设计的启动和停止系统的程序可以加速启动,并保护您的数据。 您需要启动和停止的进程,包括服务器和Locator进程以及您的其他Geode应用程序(包括客户端)。 您使用的操作步骤取决于系统的配置以及系统进程之间的依赖关系。

使用以下准则创建启动和关闭过程和脚本。 其中一些说明使用gfsh.

启动系统

启动Geode系统时,您应该遵循特定顺序的操作。

在启动客户端应用程序之前,启动服务器分布式系统。 在每个分布式系统中,请遵循以下准则来启动成员:

  • 优先启动Locator。 Locator启动样例,请参阅 运行 Geode Locator进程
  • 在其他进程之前启动缓存服务器,除非具体的实现要求在这之前启动其他进程。服务器启动样例,请参阅 启动 Geode 服务器进程
  • 如果分布式系统同时使用持久复制Region和非持久复制Region,则应在启动非持久region之前启动所有持久复制region。 通过这种方式,持久化成员不会延迟启动其他持久成员以后的数据。
  • 对于包含持久性region的系统, 请参阅 启动和关闭磁盘存储.
  • 如果您正在运行生产者进程(producer processes)和消费者(consumer)或事件监听器(event listener)进程,请首先启动消费者(consumer)。 这确保消费者(consumer)和监听器(listener)不会错过任何通知或更新。
  • 如果您一次启动Locator和对等成员,则可以在进程启动时使用locator-wait-time属性(以秒为单位)。 该超时允许对等成员在尝试加入分布式系统之前等待Locator完成启动。 如果一个进程已经配置为等待Locator启动,它将记录一个info-level消息

    GemFire startup was unable to contact a locator. Waiting for one to start. Configured locators are frodo[12345],pippin[12345].

    该进程然后将休眠一秒钟,然后重试,直到它连接或locator-wait-time中指定的秒数已经过去。 默认情况下,locator-wait-time设置为0意味着启动时无法连接到Locator的进程会抛出异常。

注意: 您可以选择覆盖关闭各个进程的默认超时期限。 这个覆盖设置必须在成员启动时指定。 详细情况, 请参阅关闭系统

在磁盘上丢失数据后启动

这些信息涉及Geode磁盘存储文件的灾难性损失。 如果您丢失了磁盘存储文件,那么您的下一个启动可能会挂起,等待丢失的磁盘存储再次联机。 如果系统在启动时挂起,请使用gfsh命令show missing-disk-store来列出缺少的磁盘存储,并在需要时撤销丢失的磁盘存储,以便完成系统启动。 您必须使用磁盘存储ID来吊销磁盘存储。 这是两个命令:

gfsh>show missing-disk-stores

Disk Store ID             |   Host    |               Directory                                           
60399215-532b-406f-b81f-9b5bd8d1b55a | excalibur | /usr/local/gemfire/deploy/disk_store1 

gfsh>revoke missing-disk-store --id=60399215-532b-406f-b81f-9b5bd8d1b55a

注意: 这个gfsh命令要求你通过一个JMX管理器节点连接到分布式系统。

关闭系统

关闭您的 Geode 系统, 可以通过 gfsh shutdown命令或者单独关闭系统成员.

使用 shutdown 命令

如果你使用的是持久化Region(成员持久化数据到磁盘),你应该使用gfsh`` shutdown命令来有序地停止正在运行的系统。 此命令在关闭之前同步持久性region,这将使分布式系统的下次启动尽可能高效。

如果可能的话,在关闭之前所有成员都应该在运行状态,以便可以进行同步。 使用以下gfsh命令关闭系统:

gfsh>shutdown

默认情况下,shutdown命令只会关闭数据节点。 如果要关闭包括Locator在内的所有节点,请指定--include-locators=true参数。 例如:

gfsh>shutdown --include-locators=true

这将关闭所有Locator,最后关闭管理器。

要在宽限期后关闭所有数据成员,请指定一个超时选项(以秒为单位)。

gfsh>shutdown --time-out=60

要在宽限期后关闭所有成员(包括Locator),请指定超时选项(以秒为单位)。

gfsh>shutdown --include-locators=true --time-out=60

单独关闭系统成员

如果您不使用持久性region,则可以按照与启动相反的顺序关闭每个成员来关闭分布式系统。(成员启动的建议顺序, 请参阅 启动系统 )

根据成员的类型关闭分布式系统成员。 例如,使用以下机制关闭成员:

  • 使用适当的机制, 关闭在分布式系统中运行的任何与Geode连接的客户端应用程序。
  • 关闭缓存服务器。 要关闭服务器,请执行以下gfsh命令:

    gfsh>stop server --name=<...>
    

    or

    gfsh>stop server --dir=<server_working_dir>
    
  • 关闭Locator。 要关闭Locator,请执行以下gfsh命令:

    gfsh>stop locator --name=<...>
    

    or

    gfsh>stop locator --dir=<locator_working_dir>
    
  • 一般情况下, 不要使用命令行kill -9来关闭服务器。特别是在小规模(成员数量比较少)的系统上,使用kill而不是gfsh stop可以导致分区检测机制将系统置于锁死状态,永久等待重新连接到被杀死的服务器,并且将无法重新启动被杀死的服务器。 如果kill命令出现是停止服务器系统的唯一方法,那么使用kill分布式系统的所有进程 或使用kill -INT,这将允许有序关闭进程。

系统成员关闭行为的可配置项

DISCONNECT_WAIT 命令行参数设置关机过程中每个单独步骤的最长时间。 如果任何步骤超过了指定的值,则强制结束。 每个操作都使用这个宽限期,所以缓存成员关闭所需的总时间取决于操作次数和DISCONNECT_WAIT设置。 在关机过程中,Geode会生成以下消息:

Disconnect listener still running

DISCONNECT_WAIT默认值是10000毫秒。

要更改它,请在启动成员的Java命令行上设置此系统属性。 例如:

gfsh>start server --J=-DDistributionManager.DISCONNECT_WAIT=<milliseconds>

每个进程可以设置不同的DISCONNECT_WAIT

results matching ""

    No results matching ""