运行Geode Server进程

Geode服务器是一个作为客户机/服务器(client/server, C/S)系统的长期可配置成员运行的进程。

Geode服务器主要用于托管长期存在的数据region,以及用于运行标准Geode进程(如客户机/服务器配置中的服务器)。您可以使用以下方法启动和停止服务器:

  • gfsh工具允许您从命令行管理Geode服务器进程。
  • 您还可以通过org.apache.geode.distributed.ServerLauncher API启动,停止和管理Geode服务器。 ServerLauncherAPI只能用于以gfshServerLauncher类自身启动的Geode服务器。 有关使用ServerLauncherAPI的更多细节,请参阅JavaDocs。

默认服务器配置和日志文件

gfsh工具使用工作目录来保存其配置文件和日志文件。 这些是默认和配置选项:

  • 当你使用gfsh启动一个独立的服务器时,gfsh会将所需的JAR文件$GEMFIRE/lib/server-dependencies.jar$JAVA_HOME/lib/tools.jar自动加载到JVM的CLASSPATH中。 如果使用ServerLauncher API启动独立服务器,则必须在命令中指定$GEMFIRE/lib/server-dependencies.jar来启动进程。 有关Geode中CLASSPATH设置的更多信息,请参阅CLASSPATH设置
  • 服务器像任何其他Geode进程一样配置,通过gemfire.properties和共享集群配置文件进行设置。 除了通过应用程序插件之外,它不支持编程。 通常,您提供gemfire.properties文件和gfsecurity.properties文件(如果您正在使用单独的受限访问安全设置文件)来配置服务器。 你也可以在缓存服务器的工作目录中指定一个cache.xml文件。
  • 默认情况下,假设locator正在运行集群配置服务,则使用gfsh启动的新服务器将从集群配置服务接收其初始缓存配置。 如果您在启动服务器时指定了一个组,服务器还会接收适用于该组的配置。 共享配置由cache.xml文件,gemfire.properties文件和部署的jar文件组成。 您可以通过在使用gfsh启动服务器时指定--use-cluster-configuration = false来禁止使用集群配置服务。 请参阅集群配置服务概述.

  • 如果使用Spring框架,您也可以使用--spring-xml-location命令行选项在gfsh中启动服务器时指定一个Spring ApplicationContext XML文件。 这个选项允许你用你的Spring应用程序的配置引导你的Geode服务器进程。详细信息, 请参阅 Spring documentation

  • 对于日志记录输出,日志文件输出默认为缓存服务器工作目录中的server_name.log。 如果使用相同的服务器名称重新启动服务器,现有的server_name.log文件将自动为您更名(例如,“server1-01-01.log”或“server1-02-01.log”)。 您可以通过在启动服务器时,在--log-level参数中指定级别来修改此文件中日志的详细程度。
  • 默认情况下,服务器将在执行gfsh的目录下的子目录(以服务器指定的--name命名的目录)中启动。 这个子目录被认为是当前的工作目录。 您也可以在gfsh中启动缓存服务器时指定一个不同的工作目录。
  • 默认情况下,由于网络分区事件或成员无响应而关闭和断开的服务器将自行重新启动,并自动尝试重新连接到现有的分布式系统。 详细情况, 请参阅 使用Autoreconnect处理强制缓存断开连接
  • 您可以在服务器启动时使用--J=-Dproperty.name=value将JVM参数传递给服务器的JVM。 这些参数可以是Java属性或Geode配置属性,如gemfire.jmx-manager。 例如:

    gfsh>start server --name=server1 --J=-Dgemfire.jmx-manager=true \
    --J=-Dgemfire.jmx-manager-start=true --J=-Dgemfire.http-port=8080
    
  • 在启动服务器时, 我们建议您不要使用-XX:+UseCompressedStrings-XX:+UseStringCacheJVM配置属性。 这些JVM选项可能会导致数据损坏和兼容性问题。

启动服务器

Geode服务器在gfsh中的启动语法是:

start server --name=value [--assign-buckets(=value)] [--bind-address=value]
    [--cache-xml-file=value] [--classpath=value] [--disable-default-server(=value)]
    [--disable-exit-when-out-of-memory(=value)] [--enable-time-statistics(=value)]
    [--force(=value)] [--include-system-classpath(=value)] [--properties-file=value]
    [--security-properties-file=value]
    [--group=value] [--locators=value] [--locator-wait-time=value] [--log-level=value]
    [--mcast-address=value] [--mcast-port=value] [--memcached-port=value]
    [--memcached-protocol=value] [--rebalance(=value)] [--server-bind-address=value]
    [--server-port=value] [--spring-xml-location=value]
    [--statistic-archive-file=value] [--dir=value] [--initial-heap=value]
    [--max-heap=value] [--use-cluster-configuration(=value)] [--J=value(,value)*]
    [--critical-heap-percentage=value] [--critical-off-heap-percentage=value] 
    [--eviction-heap-percentage=value] [--eviction-off-heap-percentage=value]
    [--hostname-for-clients=value] [--max-connections=value]
    [--message-time-to-live=value] [--max-message-count=value] [--max-threads=value]
    [--socket-buffer-size=value] [--lock-memory=value] [--off-heap-memory-size=value]

注意: 如果在服务器启动时指定了--max-heap--initial-heap,则Geode的资源管理器会在内部指定其他相关的GC参数。 如果你不想要资源管理器设置的额外的默认GC属性,那么使用-Xms-Xmx JVM选项。详细情况,请参阅使用Resource Manager控制 Heap的使用

下面的gfsh start server启动服务器,为缓存配置指定一个cache.xml文件,并使用不同的客户端连接端口:

gfsh>start server --name=server1 --mcast-port=10338 \
--cache-xml-file=../ServerConfigs/cache.xml --server-port=40404

gfsh>start server --name=server2 --mcast-port=10338 \
--cache-xml-file=../ServerConfigs/cache.xml --server-port=40405

以下是gemfire.properties文件的一部分,它为服务器设置cache.xml文件的位置,并设置mcast-port:

mcast-port=10338 
cache-xml-file=D:\gfeserver\cacheCS.xml

要使用gemfire.properties文件启动服务器,请输入:

gfsh>start server --name=server1 \
--properties-file=D:\gfeserver\gemfire.properties

要启动服务器的同时启动嵌入式JMX管理器,可以输入以下命令:

gfsh>start server --name=server2 \
--J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true

要启动服务器并指定JVM配置设置,可以发出如下所示的命令:

gfsh>start server --name=server3 \
--J=-Xms80m,-Xmx80m --J=-XX:+UseConcMarkSweepGC,-XX:CMSInitiatingOccupancyFraction=65

以编程方式启动服务器

使用org.apache.geode.distributed.ServerLauncher API在代码中启动缓存服务器进程。 使用ServerLauncher.Builder类构造ServerLauncher的实例,然后使用start()方法启动服务器服务。 ServerLauncher类中的其他方法提供有关服务器的状态信息,并允许您停止服务器。

import org.apache.geode.distributed.ServerLauncher;

 public class MyEmbeddedServer {

    public static void main(String[] args){
        ServerLauncher serverLauncher  = new ServerLauncher.Builder()
          .setMemberName("server1")
       .setServerPort(40405)
          .set("jmx-manager", "true")
          .set("jmx-manager-start", "true")
          .build();

          serverLauncher.start();  

          System.out.println("Cache server successfully started");
        }
    }

检查服务器状态

如果您通过gfsh连接到分布式系统,则可以通过指定服务器名称来检查正在运行的缓存服务器的状态。 例如:

gfsh>status server --name=server1

如果您没有连接到分布式系统,则可以通过提供进程ID或服务器的当前工作目录来检查本地缓存服务器的状态。 例如:

gfsh>status server --pid=2484

或者

% gfsh status server --dir=<server_working_directory>

其中<server_working_directory>对应于cache server正在运行的本地工作目录。

如果命令执行成功,该命令将返回以下信息(使用在启动时提供的JVM参数):

% gfsh status server --dir=server4
Server in /home/user/server4 on ubuntu.local[40404] as server4 is currently online.
Process ID: 3324
Uptime: 1 minute 5 seconds
GemFire Version: 8.0.0
Java Version: 1.7.0_65
Log File: /home/user/server4/server4.log
JVM Arguments: 
...

停止服务器

如果您通过gfsh连接到分布式系统,则可以通过指定服务器名称来停止正在运行的缓存服务器。 例如:

gfsh>stop server --name=server1

如果您未连接到分布式系统,则可以通过指定服务器的当前工作目录或进程ID来停止本地缓存服务器。 例如:

gfsh>stop server --pid=2484

或者

gfsh>stop server --dir=<server_working_directory>

其中<server_working_directory>对应于cache server正在运行的本地工作目录。

您也可以使用gfsh shutdown命令, 这个命令会按顺序关闭所有缓存服务器。 如果您使用持久性region的话,这非常有帮助。 详细信息,请参阅 启动和关闭系统

results matching ""

    No results matching ""