欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Apache Geode 运行服务器进程 博客分类: Apache Geode框架  

程序员文章站 2024-03-15 09:29:59
...

       一个Geode服务器是一个进程,它作为长期运行的,客户端/服务器系统可配置的成员。Geode服务器主要用作保存长期存活的数据区域和运行标准的Geode进程例如在客户端/服务器配置中的服务器。你可以用以下方法来停止服务器:

  • gfsh工具允许你用命令行方式管理你的Geode服务器进程。
  • 你也可以通过com.gemstone.gemfire.distributed.ServerLauncher API来启动,停止和管理Geode服务器。ServerLauncher API 仅可以用作用gfsh启动的服务器或是ServerLauncher类自己启动的。查看《JavaDocs》来获得额外的ServerLauncher API使用说明。

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

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

  • 当你用gfsh启动一个独立的服务器,gfsh会自动的加载需要的jar文件$GEMFIRE/lib/server-dependencies.jar$JAVA_HOME/lib/tools.jar到jvm进程的类路径。如果你是使用 ServerLauncher API来启动一个独立的服务器,你必须在你的运行进程命令内指定$GEMFIRE/lib/server-dependencies.jar。查看《Geode进程类路径设置》来获取更多的类路径设置信息。
  • 服务器和其它Geode进程的配置一样,带有gemfire.properties和共享的集群配置文件。它是不可编程的,除了通过应用程序插件。通常地,你提供
    gemfire.properties 文件和 gfsecurity.properties 文件(如果您使用的是单独的,受限制的访问安全设置文件)。你也可以在缓存服务器的工作目录指定一个cache.xml文件。
  • 默认情况下,假设定位器正在运行集群配置服务,那么一个使用gfsh启动的新服务器会从集群配置服务接收它的初始缓存配置。如果你在启动服务器的时候指定了一个组,该服务器还接收应用于组的配置。共享的配置包括了cache.xml 文件, gemfire.properties 文件,和部署的jar文件。你可以在用gfsh启动服务器的时候指定 --use-cluster-configuration=false来禁用集群配置服务。查看《群集配置服务概述》

  • 如果你使用了spring框架,你可以在使用gfsh启动服务器时使用--spring-xml-location 命令行选项指定一个Spring ApplicationContext XML文件。这个选项允许你用你的spring应用配置重启你的geode服务器进程。查看《spring文档》来获得在这个文件上的更多信息。

  • 对于日志输出,日志文件输出为默认为缓存服务器工作目录下的server_name.log。如果你使用相同的服务器名重启一个服务器,已有的server_name.log文件会自动的为你重命名(例如, server1-01-01.logserver1-02-01.log)。你可以在启动服务器时通过在--log-level参数中指定一个级别来实现在这个文件中修改日志级别。

  • 默认情况下,服务器会在gfsh执行目录下的一个子目录(在服务器之后命名)中启动。这个子目录被认为是当前的工作目录。你也可以在用gfsh启动服务器时指定一个不同的工作目录。

  •  默认情况下,一个因为网络断开或是成员没有响应而被关闭和断开连接的服务器会自己重启并且自动尝试重新连接到分布式系统。查看《使用自动重连接处理被动缓存掉线》获得更多详情。

  •  你可以在启动服务器时使用--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

  Pivotal推荐你在启动服务器时不要用 -XX:+UseCompressedStrings-XX:+UseStringCache JVM配置参数。 这些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,额外的GC参数由Geode的资源管理器的内部指定。如果你不想要资源管理器设置的额外的默认GC属性,那就使用e -Xms & -Xmx JVM选项。查看《源管理器堆使用控制》来获得更多信息。

 

如下的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=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

 

编程方式启动服务器

    在你的代码中使用com.gemstone.gemfire.distributed.ServerLauncher API来启动缓存服务器进程。使用ServerLauncher.Builder类来构建ServerLauncher实例,然后用start()方法来启动服务器服务。ServerLauncher类中的其它方法提交了服务器状态信息并可以允许你停止服务器。

 

import com.gemstone.gemfire.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> 对应的是哪里,哪里就是服务器运行的工作目录。如果成功,命令会返回如下的信息(带着启动时提供的jvm参数):
% gfsh status server --dir=server4
Server in /home/stymon/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/stymon/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> 对应的是哪里,哪里就是服务器运行的工作目录。

 你也可以使用gfsh shutdown命令来以有序的方式关闭所有的缓存服务器。如果你是使用持久化区域,这会很有用的。查看《启动和关闭你的系统》获取更多详情。