Apache Geode配置和运行集群

简要说明
使用gfsh命令行实用工具配置Apache Geode集群(也称为“分布式系统”)。集群配置服务持久化集群配置,并将配置分发给集群成员。还有其他几种配置集群的方法。


使用gfsh配置区域、磁盘存储、成员和其他Geode对象。还可以使用gfsh启动和停止locator、server和Geode监控工具。
当执行这些命令时,集群配置服务持久化配置。当新成员加入集群时,服务将配置分配给新成员。


gfsh是配置和管理Apache Geode集群的推荐方法,不过仍然可以使用较老的缓存方法来配置集群的许多方面
如cache.xml和gemfire.properties。请参考cache.xml和配置参数的引用。
还可以使用Java API来配置集群的某些方面。参考Managing Apache Geode.


1、集群配置服务概述
Apache Geode集群配置服务将由gfsh命令创建的集群配置持久化到集群中的locators,并将配置分发给集群成员。
  1)为什么要使用集群配置服务
    我们强烈建议您使用gfsh命令行和集群配置服务作为管理分布式系统配置的主要机制。使用常见的集群配置可以减少配置单个成员的时间,并在集群中引入新成员时强制执行一致的配置。
    不再需要重新配置您添加到集群中的每个新成员。不再需要担心验证cache.xml文件。它也更容易在集群中传播配置更改,并将配置更改部署到不同的环境中。
    可以使用集群配置服务:
      保存整个Apache Geode集群的配置。
      使用先前保存的配置重新启动成员。
      从开发环境导出配置并迁移该配置以创建测试或生产系统。
      在不需要分别配置每个服务器的情况下启动额外的服务器。
      配置一些服务器来承载某些区域和其他服务器来承载不同的区域,并配置所有服务器来承载一组公共区域。
  2)使用集群配置服务
    要在Geode中使用集群配置服务,您必须在部署中使用专用的独立定位器。您不能使用集群配置服务与共存的定位器(在另一个进程中运行的定位器,如服务器)或在多播环境中使用集群配置服务。
    独立的定位器将配置分配给集群中的所有定位器。集群中的每个定位器都有--enable-cluster-configuration设置为true,从而保持所有集群级别和组级配置设置的记录。
    注意:gfsh的默认行为是创建和保存集群配置。您可以在启动定位器时使用--enable-cluster-configuration=false选项来禁用集群配置服务。
    随后,您从gfsh开始的任何服务 --use-cluster-configuration 设置为true都会从定位器中获取集群配置,以及任何合适的组级配置(对于它们所属的成员组)。为了在服务器上禁用集群配置服务,
    您必须启动服务器,使其具有--use-cluster-configuration设置为false。默认情况下,参数设置为true。
    您还可以通过启动一个带有参数的独立定位器,将现有的配置文件加载到集群配置服务中。请参阅将现有配置文件载入集群配置。
  3)集群配置服务如何工作
    当您使用gfsh命令来创建Apache Geode区域、磁盘存储和其他对象时,集群配置服务将在集群中的每个定位器上保存配置(也称为Geode分布式系统)。
    如果您在发出这些命令时指定了一个组,那么就会保存一个单独的配置,其中只包含应用于组的配置。
    当您使用gfsh来启动新的Apache Geode服务器时,定位器将持久化配置分发到新服务器。如果您在启动服务器时指定了组,那么除了集群级配置外,服务器还会接收组级配置。
    组级配置应用于集群范围的配置;因此,您可以使用群组级别来覆盖集群级别设置。
  4)创建集群配置的gfsh命令
    下面的gfsh命令会将配置写到集群中的所有定位器(定位器将配置写到磁盘上):
    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命令。这个命令不会影响系统中任何当前正在运行的成员。运行此命令之后启动的Data成员(启用集群配置)将拾取新的PDX配置。
    以下与网关相关的命令使用集群配置服务,它们的配置由定位器保存:
    create gateway-sender
    create gateway-receiver
  5)gfsh局限性
    有一些配置是您无法使用gfsh创建的,您必须使用cache.xml或API:
    1.客户端缓存配置
    2.不能直接修改以下对象的属性:
      function
      custom-load-probe
      cache-listener
      cache-loader
      cache-writer
      compressor
      serializer
      instantiator
      pdx-serializer
      注意:configure pdx命令总是指定org.apache.geode.pdx。ReflectionBasedAutoSerializer类。您不能在gfsh中指定定制的PDX序列化器。
      custom-expiry
      initializer
      declarable
      lru-heap-percentage
      lru-memory-size
      partition-resolver
      partition-listener
      transaction-listener
      transaction-writer
    3.添加或删除TransactionListener
    4.添加JNDI绑定
    5.删除一个AsyncEventQueue
    另外,使用gfsh对网关配置有一些限制。您必须使用cache.xml或Java api来配置以下内容:
    1.配置一个GatewayConflictResolver
    2.不能为以下内容指定Java类的参数和值:
      gateway-listener
      gateway-conflict-resolver
      gateway-event-filter
      gateway-transport-filter
      gateway-event-substitution-filter
  6)禁用集群配置服务
    如果您不想使用集群配置服务,那么启动您的定位器,使--enable-cluster-configuration参数设置为false,或者不使用独立的定位器。
    然后,您需要配置缓存(通过cache.xml or API在所有分布式系统成员上使用)。




2、教程——创建和使用集群配置
一个简短的教程,使用一台计算机来演示如何使用gfsh为Geode集群创建集群配置。
gfsh命令行工具允许您配置和启动Geode集群。集群配置服务使用Apache Geode locator将配置存储在group和集群级别,并在启动时向新成员提供这些配置。
定位器将配置存储在一个隐藏区域中,该区域对所有定位器都可用,并且将配置数据写到磁盘作为XML文件。配置数据会随着gfsh命令的执行而更新。
本节提供一个简单的Apache Geode集群的配置示例,然后在新的上下文中重新使用该配置。
  1.创建一个工作目录(例如:/home/username/my_geode),切换到新目录。这个目录将包含您的集群的配置。
  2.启动gfsh命令工具,例如:
    $ gfsh
    gfsh命令提示符显示.
        _________________________     __
       / _____/ ______/ ______/ /____/ /
      / /  __/ /___  /_____  / _____  /
     / /__/ / ____/  _____/ / /    / /
    /______/_/      /______/_/    /_/    1.4


    Monitor and Manage Apache Geode
    gfsh>
  3.在下面的示例中使用以下命令启动定位器:
    gfsh>start locator --name=locator1
    Starting a Geode Locator in /Users/username/my_geode/locator1...
    .............................
    Locator in /Users/username/my_geode/locator1 on 192.0.2.0[10334] as locator1
    is currently online.
    Process ID: 5203
    Uptime: 15 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/my_geode/locator1/locator1.log
    JVM Arguments: -Dgemfire.enable-cluster-configuration=true
    -Dgemfire.load-cluster-configuration-from-dir=false
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar


    Successfully connected to: [host=192.0.2.0, port=1099]


    Cluster configuration service is up and running.


    注意,gfsh的响应消息,表明集群配置服务已经启动并正在运行。如果您看到一个显示问题的消息,请检查定位器日志文件是否有可能出现的错误。
    日志文件的路径显示在gfsh的输出中。
  4.使用以下示例中的命令启动Apache Geode服务器:
    gfsh>start server --name=server1 --groups=group1
    Starting a Geode Server in /Users/username/my_geode/server1...
    .....
    Server in /Users/username/my_geode/server1 on 192.0.2.0[40404] as server1
    is currently online.
    Process ID: 5627
    Uptime: 2 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/my_geode/server1/server1.log
    JVM Arguments: -Dgemfire.default.locators=192.0.2.0[10334] -Dgemfire.groups=group1
    -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar


    gfsh>start server --name=server2 --groups=group1 --server-port=40405
    Starting a Geode Server in /Users/username/my_geode/server2...
    .....
    Server in /Users/username/my_geode/server2 on 192.0.2.0[40405] as server2
    is currently online.
    Process ID: 5634
    Uptime: 2 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/my_geode/server2/server2.log
    JVM Arguments: -Dgemfire.default.locators=192.0.2.0[10334] -Dgemfire.groups=group1
    -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar


    gfsh>start server --name=server3 --server-port=40406
    Starting a Geode Server in /Users/username/my_geode/server3...
    .....
    Server in /Users/username/my_geode/server3 on 192.0.2.0[40406] as server3
    is currently online.
    Process ID: 5637
    Uptime: 2 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/my_geode/server3/server3.log
    JVM Arguments: -Dgemfire.default.locators=192.0.2.0[10334]
    -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar


    请注意,用于启动server1和server2的gfsh命令指定一个名为group1的群组,而server3的命令没有指定组名。
  5.在以下示例中使用以下命令创建一些区域:
    gfsh>create region --name=region1 --groups=group1 --type=REPLICATE
    Member  | Status
    ------- | --------------------------------------
    server2 | Region "/region1" created on "server2"
    server1 | Region "/region1" created on "server1"


    gfsh>create region --name=region2 --type=REPLICATE
    Member  | Status
    ------- | --------------------------------------
    server1 | Region "/region2" created on "server1"
    server2 | Region "/region2" created on "server2"
    server3 | Region "/region2" created on "server3"
    请注意,在启动缓存服务器(本例中为server1和server2)时,在所有高速缓存服务器上都创建了region1,region2是在所有成员上创建的,因为没有指定组。
  6.部署jar文件。使用gfsh部署命令将应用程序jar文件部署到所有成员或指定的成员组。下面的示例部署mx4j-3.0.1.jar和ra.jar文件。
  (注意:这只是一个例子,您不需要部署这些文件来使用集群配置服务。另外,您可以使用任何两个jar文件来进行这次演示。)
    gfsh>deploy --groups=group1 --jars=/lib/mx4j-3.0.1.jar
    Post substitution: deploy --groups=group1 --jars=/Users/username/Apache_Geode_1.0.0_Linux/lib/mx4j-3.0.1.jar
    Member  |    Deployed JAR    | Deployed JAR Location
    ------- | ------------------ | -------------------------------------------------------
    server1 | mx4j-3.0.1.jar     | /Users/username/my_geode/server1/vf.gf#mx4j-3.0.1.jar#1
    server2 | mx4j-3.0.1.jar     | /Users/username/my_geode/server2/vf.gf#mx4j-3.0.1.jar#1


    gfsh>deploy --jars=/lib/ra.jar
    Post substitution: deploy --jar=/Users/username/Apache_Geode_1.0.0_Linux/lib/ra.jar
    Member  | Deployed JAR | Deployed JAR Location
    ------- | ------------ | -----------------------------------------------
    server1 | ra.jar       | /Users/username/my_geode/server1/vf.gf#ra.jar#1
    server2 | ra.jar       | /Users/username/my_geode/server1/vf.gf#ra.jar#1
    server3 | ra.jar       | /Users/username/my_geode/server1/vf.gf#ra.jar#1
    注意,mx4j-3.0.1.jar文件只被部署到group1,ra.jar被部署到所有成员。
  7.导出集群配置。您可以使用gfsh导出集群配置命令来创建一个zip文件,其中包含集群的持久配置。zip文件包含clusterconfig目录的内容副本。例如:
    gfsh>export cluster-configuration --zip-file-name=/Users/username/myClConfig.zip
    Apache Geode将集群配置写到指定的zip文件中。
    Downloading cluster configuration : /Users/username/myClConfig.zip
  8.使用下面的命令关闭集群:
    gfsh>shutdown --include-locators=true
    As a lot of data in memory will be lost, including possibly events in queues, do you
    really want to shutdown the entire distributed system? (Y/n): Y
    Shutdown is triggered


    gfsh>
    No longer connected to 192.0.2.0[1099].
    gfsh>
  9.退出gfsh命令shell:
    gfsh>quit
    Exiting...
  10.新建一个工作目录(例如:new_geode)并切换到新目录。
  11.启动gfsh命令shell:
    $ gfsh
  12.启动一个新的定位器
    gfsh>start locator --name=locator2 --port=10335
    Starting a Geode Locator in /Users/username/new_geode/locator2...
    .............................
    Locator in /Users/username/new_geode/locator2 on 192.0.2.0[10335] as locator2
    is currently online.
    Process ID: 5749
    Uptime: 15 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/new_geode/locator2/locator2.log
    JVM Arguments: -Dgemfire.enable-cluster-configuration=true
    -Dgemfire.load-cluster-configuration-from-dir=false
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar


    Successfully connected to: [host=192.0.2.0, port=1099]


    Cluster configuration service is up and running.
  13.使用导入集群配置命令导入集群配置。例如:
    gfsh>import cluster-configuration --zip-file-name=/Users/username/myClConfig.zip
    Cluster configuration successfully imported
    注意,locator2目录现在包含一个cluster_config子目录。
  14.启动一个不引用组的服务
    gfsh>start server --name=server4 --server-port=40414
    Starting a Geode Server in /Users/username/new_geode/server4...
    ........
    Server in /Users/username/new_geode/server4 on 192.0.2.0[40414] as server4
    is currently online.
    Process ID: 5813
    Uptime: 4 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/new_geode/server4/server4.log
    JVM Arguments: -Dgemfire.default.locators=192.0.2.0[10335]
    -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar
  15.启动另一个引用group1的服务
    gfsh>start server --name=server5 --groups=group1 --server-port=40415
    Starting a Geode Server in /Users/username/new_geode/server5...
    .....
    Server in /Users/username/new_geode/server2 on 192.0.2.0[40415] as server5
    is currently online.
    Process ID: 5954
    Uptime: 2 seconds
    Geode Version: 1.4
    Java Version: 1.8.0_101
    Log File: /Users/username/new_geode/server5/server5.log
    JVM Arguments: -Dgemfire.default.locators=192.0.2.0[10335] -Dgemfire.groups=group1
    -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p
    -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
    -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
    Class-Path: /Users/username/Apache_Geode_1.0.0_Linux/lib/geode-dependencies.jar
  16.使用list regions命令来显示配置regions。请注意,在原始集群级别中配置的region1和region2是可用的。
    gfsh>list regions
    List of regions
    ---------------
    region1
    region2
  17.使用describe region命令来查看每个区域的主机。注意,region1只由server5托管,因为server5是使用group1配置启动的。
    region2托管在server4和server5上,因为region2是在没有指定组的情况下创建的。
    gfsh>describe region --name=region1
    ..........................................................
    Name            : region1
    Data Policy     : replicate
    Hosting Members : server5


    Non-Default Attributes Shared By Hosting Members


     Type  |    Name     | Value
    ------ | ----------- | ---------------
    Region | data-policy | REPLICATE
           | size        | 0
           | scope       | distributed-ack


    gfsh>describe region --name=region2
    ..........................................................
    Name            : region2
    Data Policy     : replicate
    Hosting Members : server5
                      server4


    Non-Default Attributes Shared By Hosting Members


     Type  |    Name     | Value
    ------ | ----------- | ---------------
    Region | data-policy | REPLICATE
           | size        | 0
           | scope       | distributed-ack
    这个新集群使用与原始系统相同的配置。您可以使用这个集群配置启动任意数量的服务器。所有服务器都将接收集群级配置。指定group1的服务器也接收group1配置。
  18.使用以下命令关闭集群:
    gfsh>shutdown --include-locators=true
    As a lot of data in memory will be lost, including possibly events in queues,
    do you really want to shutdown the entire distributed system? (Y/n): Y
    Shutdown is triggered


    gfsh>
    No longer connected to 192.0.2.0[1099].


3、部署应用程序jars到Apache Geode成员
您可以动态地将您的应用程序JAR文件部署到特定的成员或您的分布式系统中的所有成员。Geode自动跟踪JAR文件的版本;自动加载已部署的JAR文件到类路径;自动注册JAR包含的任何函数。
  要在Apache Geode中部署和取消部署应用程序JAR文件,可以使用gfsh deploy或undeploy命令。可以部署单个JAR或多个JAR(通过指定JAR文件名或指定包含JAR文件的目录),
  还可以将部署目标定位到成员组或多个成员组。
  例如,在连接到您想要部署jar的分布式系统之后,您可以在gfsh提示符中输入:
    gfsh> deploy --jars=group1_functions.jar
  这个命令部署了group1_functions.jar文件到分布式系统中的所有成员。
  要将JAR文件部署到成员的一个子集,请使用-groups参数。例如:
    gfsh> deploy --jars=group1_functions.jar --groups=MemberGroup1
  在这个例子中,假设您已经定义了在启动成员时想要使用的成员组。请参阅配置和运行一个集群,以获得关于如何定义成员组并向组添加成员的更多信息。
  要将位于特定目录中的所有JAR文件部署到所有成员:
    gfsh> deploy --dir=libs/group1-libs
  您可以为部署提供JAR文件名或JAR目录,但是不能同时指定两者。
  要在整个分布式系统中取消所有以前部署的JAR文件:
    gfsh> undeploy
  取消部署特定JAR文件:
    gfsh> undeploy --jars=group1_functions.jar
  取消部署所有JAR文件时,针对特定的成员组:
    gfsh> undeploy --groups=MemberGroup1
    只有在成员group1组中已经部署的JAR文件才会被解除部署。
  要查看分布式系统中所有已部署jar的列表:
    gfsh> list deployed
  要查看一个特定成员组中所有已部署jar的列表:
    gfsh> list deployed --groups=MemberGroup1
  样例输出
   Member   |     Deployed JAR     |                JAR Location
  --------- | -------------------- | ---------------------------------------------------
  datanode1 | group1_functions.jar | /usr/local/gemfire/deploy/vf.gf#group1_functions.jar#1
  datanode2 | group1_functions.jar | /usr/local/gemfire/deploy/vf.gf#group1_functions.jar#1
  1)JAR文件的部署位置
    在每个成员上编写JAR文件的系统位置,是由为该成员配置的deploy-working-dir Geode属性决定的。例如,您可以在gemfire.properties 中为您的成员的属性文件配置以下配置:
    #gemfire.properties
    deploy-working-dir=/usr/local/gemfire/deploy
    这个部署位置可以是本地的,也可以是一个共享的网络资源(比如一个挂载位置),以减少磁盘空间的使用。如果您使用一个共享目录,
    您仍然需要将JAR文件部署到您想要访问该应用程序的每个成员上,因为部署更新了类路径和自动登记功能。
  2)关于部署JAR文件和集群配置服务
    默认情况下,集群配置服务将已部署的JAR文件分发给分布式系统中的所有定位器。
    当您使用gfsh启动一个新服务器时,定位器提供配置文件并将jar文件部署到成员并将它们写到服务器的目录中。
    See Overview of the Cluster Configuration Service.
  3)JAR文件的版本
    当您将JAR文件部署到一个分布式系统或成员组时,JAR文件会被修改以在其名称中显示版本信息。每个JAR文件名都以vf.gf#为前缀,在文件名末尾包含一个版本号。
    例如,如果您部署myclass.jar 5次,当您列出所有已部署的jar时,文件名被显示为vf.gf#MyClasses.jar#5。
    当你部署一个新的JAR文件,成员接收部署检查是否JAR文件是重复的,JAR文件已经部署在成员上或JAR文件已经被部署到一个共享的部署工作目录,其他成员也使用。
    如果另一个成员已经将这个JAR文件部署到共享目录(通过对其目录中最新版本的字节进行比较确定),接收最新部署的成员不会将该文件写到磁盘。
    相反,成员更新ClassPathLoader以使用已部署的JAR文件。如果在磁盘上检测到一个新版本的JAR文件,并且已经在使用,那么部署就会被取消。
    当成员开始使用JAR文件时,成员将获得文件上的共享锁。如果成员通过部署接收到更新的版本,成员将释放共享锁,并尝试删除现有的JAR文件,而支持更新的版本。
    如果没有其他成员在现有JAR上有共享锁,那么将删除现有的旧版本JAR。
  4)自动加载类路径
    当缓存启动时,新的缓存请求将当前工作目录中每个JAR文件的最新版本添加到ClassPathLoader中。
    如果一个JAR文件已经被部署到ClassPathLoader中,那么类路径加载器会在找到新版本时更新它的加载版本;否则,就没有变化。
    如果检测到,如果没有其他成员对其进行共享锁,则会删除旧版本的JAR文件。
    取消部署JAR文件并不会自动卸载在部署期间加载的类。您需要重新启动您的成员来卸载那些类。
    当一个缓存关闭时,它请求从ClassPathLoader中删除所有当前部署的JAR文件。
    如果您使用的是共享的部署工作目录,那么所有共享该目录的成员都应该属于同一个成员组。
    在重新启动时,共享同一部署工作目录的所有成员将使用当前工作目录中找到的任何jar部署并自动装载它们的类路径。
    这意味着一些成员可能会加载jar,即使它们不是接收原始部署的成员组的一部分。
  5)自动注册功能
    当您部署包含一个函数的JAR文件(换句话说,包含一个实现了函数接口的类)时,函数会自动通过FunctionService.registerFunction方法注册。
    如果另一个JAR文件被部署(或者使用相同的JAR文件名或其他文件名),那么这个函数的新实现就会被注册,覆盖旧的那个。
    如果没有部署JAR文件,那么在部署时自动注册的任何功能都是未注册的。因为部署一个具有相同名称的JAR文件多次导致JAR未被部署和重新部署,所以JAR中的函数每次都是未注册的,
    并在每次发生时重新注册。如果一个具有相同ID的函数是从多个不同命名的JAR文件中注册的,那么如果这些JAR文件中的任何一个被重新部署或未部署,那么该函数就没有注册。
    在cache.xml加载期间,任何声明项的参数都被保存。如果在JAR文件中找到的函数也可以声明,并且具有与在加载cache.xml后保存参数的声明项相同的类名,
    则会使用这些参数创建函数实例并注册。因此,如果同一个函数在高速缓存中被声明多次。具有不同系列参数的xml,当JAR被部署时,每个参数集都会实例化一个函数。
    如果使用来自cache.xml的参数来注册任何函数,默认的无参数函数没有注册。


4、使用成员组
Apache Geode允许您把分布式系统成员组织到逻辑成员组中。
  在Apache Geode中使用成员组是可选的。使用成员组的好处是能够根据逻辑组成员关系对成员的某些操作进行协调。例如,通过定义和使用成员组,您可以:
  1.改变特定成员或成员的配置属性的子集。请参见gfsh中的alter runtime。
  2.执行某些磁盘操作,如磁盘存储在成员组之间的压缩。请参阅磁盘存储命令以获取命令列表。
  3.管理组中所有成员的特定索引或区域。
  4.启动和停止多个站点(WAN)服务,例如跨成员组的网关发送方和网关接收方。
  5.将JAR应用程序部署到组中的所有成员上。
  6.对一个特定组的所有成员执行函数。
  可以在成员的gemfire.properties中的groups属性中定义组名称或在gfsh中根据成员启动。
  注意:在当前的角色属性中定义的任何角色现在都将被视为一个组。如果您希望在您的分布式系统中添加成员角色,您应该将它们作为成员组添加到群组属性中。角色属性已被弃用,以使用组属性。
  要向组中添加成员,启动之前请将成员组的名称添加到gemfire.properties中,或者您可以在gfsh中启动一个成员,并在启动时传递--groups参数。
  一个成员可以属于多个组。
  成员组还可以用来从客户的角度或者从对等成员的角度来组织成员。请参见组织伙伴到逻辑成员组,并将服务器组织到逻辑成员组以获得更多信息。
  在客户端,您可以在配置客户端连接池时提供成员组名称。在客户的cache.xml中使用<pool server-group> 元素。




5、导出和导入集群配置
集群配置服务的导出和导入配置,使用gfsh为整个Apache Geode集群创建。
  集群配置服务在使用gfsh命令创建区域、磁盘存储和其他对象时保存集群配置。您可以导出这个配置,以及任何包含应用程序文件到zip文件的jar文件,然后导入该配置以创建一个新的集群。
  1)导出一个集群配置
    发出gfsh export cluster-configuration命令,以将集群中的配置数据保存到zip文件中。这个zip文件包含集群级配置的子目录和集群中指定的每个组的目录。
    (这些目录的内容在集群配置文件和故障诊断中被描述。超链接http://geode.apache.org/docs/guide/14/configuring/cluster_config/gfsh_config_troubleshooting.html#concept_ylt_2cb_y4)
    要导出集群配置,请连接到Geode集群并运行gfsh export cluster-configuration。例如:
      gfsh>export cluster-configuration --zip-file-name=/home/username/configs/myClusterConfig.zip
      注意:gfsh仅为使用gfsh指定的配置保存集群配置值。管理API所创建的配置不会与集群配置一起保存。
  2)导入一个集群配置
    使用gfsh import cluster-configuration命令,基于从另一个系统导出的配置来配置一个新的集群。您可以只将一个集群配置导入到一个新的集群中,即:
    1.没有运行的缓存服务器
    2.唯一运行的缓存服务器满足以下所有条件:
      最近开始
      没有定义区域
      自从他们启动以来,没有任何其他的配置变化
    在导入配置之后,服务器开始接收集群配置。
    要导入集群配置,请启动一个或多个定位器,然后运行gfsh import cluster-configuration命令。例如:
    gfsh>import cluster-configuration --zip-file-name=/home/username/configs/myClusterConfig.zip




6、集群配置文件和故障排除
当您在Geode中使用集群配置服务时,您可以在定位器上的cluster_config目录中检查生成的配置文件。gfsh将配置文件保存在集群级别和单独的组级别上。
  在运行集群配置服务的定位器上可以找到以下目录和配置文件:
    集群级别配置
      对于适用于集群所有成员的配置,locator在cluster_config目录(或在集群配置目录中)指定的集群子目录中创建一个cluster子目录(--cluster-config-dir=value参数)。
      所有服务器在使用gfsh时都会收到这个配置。这个目录包含:
        1.cluster.xml—— Geode cache.xml文件包含所有成员通用的配置
        2.cluster.properties—— Geode gemfire.properties文件包含所有成员通用的属性
        3.用于部署到所有成员的Jar文件
    组级别配置
      当您在gfsh命令中指定--groups参数时(例如,start server或create region),定位器为子目录中的每个组编写配置,名称与组名相同。
      当您启动一个指定一个或多个组名的服务器时,服务器将接收到集群级别的配置和来自指定的所有组的配置。这个子目录中包含:
        1.<group-name>.xml—— Geode cache.xml文件包含组中所有成员的配置
        2.<group-name>.properties—— Geode gemfire.properties文件,其中包含了组中所有成员通用的属性
        3.用于部署到组中所有成员的Jar文件
    您可以导出包含集群配置的所有构件的zip文件。zip文件包含了locator的cluster-config(或其他指定的)子目录中的所有文件。
    您可以将这个配置导入到一个新的集群中。参见导出和导入集群配置。
  1)个别配置文件和集群配置文件
    Geode首先应用集群范围的配置文件,然后再使用组级配置。如果一个成员有自己定义的配置文件(cache.xml and gemfire.properties files),这些配置最后应用。
    尽可能的,在集群配置服务中使用成员组级配置文件,在单个成员上应用非集群范围的配置。
  2)故障排除技巧
    1.当您使用gfsh启动定位器时,您应该看到以下消息:
      Cluster configuration service is up and running.
      如果您没有看到这个消息,集群配置服务可能会出现问题。使用status cluster-config-service命令检查集群配置的状态。
        如果命令返回RUNNING,集群配置正常运行。
        如果该命令返回WAITING,则运行status locator命令。这个命令的输出返回等待状态的原因。
    2.如果服务器启动失败出现以下异常ClusterConfigurationNotAvailableException,集群配置服务可能不是处于RUNNING状态。
      因为服务器从定位器请求集群配置,这是不可用的,所以start server命令失败。
    3.通过检查服务器的日志文件,您可以确定服务器从定位器接收到的配置。参考日志记录部分介绍。
    4.如果start server命令指定了一个cache.xml文件与现有集群配置相冲突,服务器启动可能会失败。
    5.如果gfsh命令失败,因为集群配置无法保存,下面的消息将显示:
      Failed to persist the configuration changes due to this command,
      Revert the command to maintain consistency. Please use "status cluster-config-service"
      to determine whether Cluster configuration service is RUNNING."
    6.有一些类型的配置不能使用gfsh。参考gfsh局限性部分。


7、将现有的配置文件加载到集群配置中
在启动定位器时使用--load-cluster-configuration-from-dir参数,加载已有的cache.xml或者gemfire.properties 到一个新的集群中。
  您可以使用这种技术将一个服务器的配置迁移到集群配置服务中。加载已有的cache.xml文件或集群配置到一个集群中,执行以下步骤:
    1.确保定位器当前没有运行。
    2.在定位器的工作目录中,如果目录不存在,就创建一个clusterconfig/cluster目录。
    3.复制所需的配置文件(cache.xml or gemfire.properties, or both)到cluster_config/cluster目录。
    4.将配置文件重命名如下:
      重命名cache.xml 为 cluster.xml
      重命名gemfire.properties 为 cluster.properties
    5.在gfsh中以如下方式启动定位器:
      gfsh>start locator --name=<locator_name> --enable-cluster-configuration=true --load-cluster-configuration-from-dir=true
    成功启动后,定位器应该报告“Cluster configuration service is up and running.”。
    任何加入这个集群并配置--use-cluster-configuration=true,都会接收这些配置文件。


8、基于HTTP或HTTPS使用gfsh管理远程集群
您可以通过HTTP或HTTPS将gfsh连接到远程集群,并使用gfsh命令管理集群。
  使用http协议将gfsh与远程集群连接起来:
  1.启动gfsh。参考gfsh使用文档部分(http://geode.apache.org/docs/guide/14/tools_modules/gfsh/starting_gfsh.html#concept_DB959734350B488BBFF91A120890FE61)。
  2.当启动远程主机上的远程集群时,您可以在启动JMX manager(服务器或定位器)时可选择性地指定--http-bind-address和--http-bind-address作为Geode属性。
  这些属性可以在从本地系统连接到远程集群中的HTTP服务时使用的URL中使用。例如:
    gfsh>start server --name=server1 --J=-Dgemfire.jmx-manager=true \
    --J=-Dgemfire.jmx-manager-start=true --http-service-port=8080 \
    --http-service-bind-address=myremotecluster.example.com
    这个命令必须直接在主机上执行,主机将最终充当远程管理的HTTP服务的远程服务器。(你不能远程启动服务器。)
  3.在您的本地系统上,运行gfsh connect命令连接到远程系统。包括--use-http和--use-http参数。例如:
    gfsh>connect --use-http=true --url="http://myremotecluster.example.com:8080/geode/v1"
    Successfully connected to: Geode Manager's HTTP service @ http://myremotecluster.example.com:8080/geode/v1
    参考connect(http://geode.apache.org/docs/guide/14/tools_modules/gfsh/command-pages/connect.html)
    gfsh现在连接到远程系统。大多数gfsh命令现在都将在远程系统上执行;不过,也有例外。下面的命令在本地集群上执行:
      alter disk-store
      compact offline-disk-store
      describe offline-disk-store
      help
      hint
      sh (for executing OS commands)
      sleep
      start jconsole (however, you can connect JConsole to a remote cluster when gfsh is connected to the cluster via JMX)
      start jvisualvm
      start locator
      start server
      start vsd
      status locator *
      status server *
      stop locator *
      stop server *
      run (for executing gfsh scripts)
      validate disk-store
      version
      * 当gfsh通过JMX或http/s连接到集群时,您可以停止并获得远程定位器和服务器的状态,方法是使用这些stop/status命令的--name选项。
      如果您使用的是这些命令的--pid或--dir选项,那么stop/status命令仅在本地执行。
    为远程连接(HTTPS)配置SSL,给gemfire.properties or gfsecurity-properties 或在server startup 中的http组件启用SSL。
    关于配置SSL参数的详细信息,请参阅SSL。这些SSL参数也适用于在配置的JMX Manager上托管的所有HTTP服务,它可以包括以下内容:
      开发人员REST API服务
      Pulse监控工具


9、在没有集群配置服务的情况下部署配置文件
您可以在系统目录结构或jar文件中部署Apache Geode配置文件。由您自己决定如何部署配置文件并相应地设置它们。
  注意:如果使用集群配置服务来创建和管理Apache Geode集群配置,则本节中描述不是必须的,因为Geode会自动管理配置文件和jar文件分发给集群成员。
  您可以使用本节描述的过程来分发特定于成员的配置,或者您不希望使用集群配置服务的情况。
  1)部署配置文件的主要步骤。
    1.确定您需要安装哪些配置文件。
    2.将文件放置在目录或jar文件中。
    3.对于任何具有非默认名称或位置的文件,请在系统属性文件和/或成员CLASSPATH中提供文件详述。
    Geode 配置文件
      1.gemfire.properties。包含分布式系统成员所需的设置。这些设置包括许可、系统成员发现、通信参数、日志记录和统计。参见Geode属性引用。
      2.gfsecurity.properties。一个可选的单独文件,包含在gemfire.properties中定义的安全相关的(安全性-*)设置。将这些成员属性放置到一个单独的文件中,可以限制用户访问那些特定的设置。参见Geode属性引用。
      3.cache.xml。声明式缓存配置文件。该文件包含用于缓存、区域和区域入口配置的XML声明。您还可以使用它配置磁盘存储、数据库登录凭据、服务器和远程站点位置信息和套接字信息。看到cache.xml。
  2)默认文件规范和搜索位置。
    每个文件都有一个默认名称、一组文件搜索位置和一个可以用来覆盖默认值的系统属性。
    若要使用缺省规范,请将该文件置于其目录或jar文件的顶层。系统属性是可以具有绝对或相对路径名和文件名的标准文件规范。
    注意:如果没有指定绝对文件路径和名称,搜索将检查文件的所有搜索位置。
    参考 http://geode.apache.org/docs/guide/14/configuring/running/default_file_specs.html
    Examples of valid gemfirePropertyFile specifications:
      /zippy/users/jpearson/gemfiretest/gemfire.properties
      c:\gemfiretest\gemfire.prp
      myGF.properties
      test1/gfprops
    对于test1/ gfsupport规范,如果您在Unix文件系统中启动您的Geode系统成员/testDir,
    Geode将查找这个订单中的文件,直到它找到文件或遍历所有位置:
    /testDir/test1/gfprops
    <yourHomeDir>/test1/gfprops
     CLASSPATH 下所有位置 for test1/gfprops
  3)改变文件规范
    您可以更改gemfire中的所有文件规格。属性文件和命令行。
    注意: Geode应用程序可以使用API来传递java.lang.System属性与分布式系统连接。这将更改命令行和gemfire.properties中的文件规范。
    您可以在应用程序启动时登录的配置信息中验证应用程序的属性设置。在gemfire.properties中配置log-level设置为config或更低时列出。
    这个应用程序的调用,testApplication.TestApp1为cache.xml和gemfire.properties提供了非默认的规范:
      java -Dgemfire.cache-xml-file=\
      /gemfireSamples/examples/dist/cacheRunner/queryPortfolios.xml \
      -DgemfirePropertyFile=defaultConfigs/gemfire.properties \
      testApplication.TestApp1
    gfsh启动服务器命令可以使用相同的规范:
      gfsh>start server \
      --J=-Dgemfire.cache-xml-file=/gemfireSamples/examples/dist/cacheRunner/queryPortfolios.xml \
      --J=-DgemfirePropertyFile=defaultConfigs/gemfire.properties
    您还可以在gemfire.properties中更改cache.xml的规范
    注意:gemfire.properties规范文件不能使用环境变量。
    gemfire.properties例子。具有非默认gemfire.properties规范:
        #Tue May 09 17:53:54 PDT 2006
        mcast-address=192.0.2.0
        mcast-port=10333
        locators=cache-xml-file=/gemfireSamples/examples/dist/cacheRunner/queryPortfolios.xml
  4)在JAR文件中部署配置文件。
    本节提供了在JAR文件中部署配置文件的过程和示例。
    ##过程
      1.Jar文件。
      2.设置Apache Geode系统属性以指向文件,因为它们驻留在jar文件中。
      3.在类路径中包含jar文件。
      4.验证jar文件副本是在运行时对应用程序可见的唯一的副本。Geode在搜索其他位置之后搜索类路径,因此在其他搜索区域中无法找到这些文件。
      5.启动您的应用程序。配置文件是从jar文件加载的。
    ##部署配置JAR的示例。
      下面的示例将在my.jar中部署缓存配置文件myCache.xml。下面显示my.jar的内容:
        % jar -tf my.jar
        META-INF
        META-INF/MANIFEST.MF
        myConfig/
        myConfig/myCache.xml
      在本例中,您将执行以下步骤来部署配置jar文件:
        1.在myConfig/myCache.xml中设置系统属性gemfire.cache-xml-file 。
        2.设置CLASSPATH包含my.jar。
        3.确认文件系统中没有命名./myConfig/myCache.xml的文件,因此Geode将强制搜索jar文件以找到它。
        启动应用程序时,将从jar文件加载配置文件。


10、启动和关闭系统
确定适当的启动和关闭过程,并编写启动和关闭脚本。
  设计良好的启动和停止系统的程序可以加速启动和保护您的数据。您需要启动和停止的进程包括服务器和定位程序进程以及您的其他地理应用程序,包括客户端。
  您使用的过程部分取决于系统的配置和系统进程之间的依赖关系。
  使用下面的指导方针来创建启动和关闭过程和脚本。其中一些指令使用了gfsh。
  1)启动您的系统
    在开始您的Geode系统时,您应该遵循一定的顺序原则。
    在启动客户机应用程序之前,启动服务器分布式系统。在每个分布式系统中,遵循以下这些指导原则:
      1.开始先定位器。请参阅运行Geode Locator进程,以获取定位器启动命令的示例。
      2.在流程的其余部分之前启动缓存服务器,除非实现要求在它们之前启动其他进程。请参阅运行Geode服务器进程,以获得服务器启动命令的示例。
      3.如果您的分布式系统同时使用了持久复制和非持久性复制区域,那么您应该在开始非持续性区域之前并行地启动所有持久复制成员。
        通过这种方式,持久化成员不会将他们的启动时间延迟到其他持久成员,并使用以后的数据。
      4.对于一个包含持久区域的系统,可以参考启动并关闭磁盘存储指导文档。
      5.如果您正在运行生产者流程和消费者或事件侦听器进程,则首先启动消费者。这确保了用户和听众不会错过任何通知或更新。
      6.如果您同时启动您的定位器和同伴成员,那么您可以在启动过程中使用locator-wait-time属性(以秒为单位)。
        这个超时允许 对等点 等待定位器在尝试加入分布式系统之前完成启动。如果一个进程被配置为等待一个定位器启动,它将记录一个信息级别的消息
          GemFire startup was unable to contact a locator. Waiting for one to start. Configured locators are frodo[12345],pippin[12345].
        然后,进程将休眠一秒钟,然后重试,直到它连接或在等待时间间隔中指定的秒数为止。默认情况下,等待时间设置为0意味着在启动时不能连接到定位器的进程将抛出异常。
      注意:您可以选择性地覆盖缺省的超时时间,以关闭单个进程。必须在成员启动期间指定这种覆盖设置。请参阅关闭系统以获取详细信息。
  2)在磁盘上丢失数据后启动
    这些信息与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 Manager节点连接到分布式系统。
  3)关闭系统
    关闭你的Geode系统,方法是使用gfsh shutdown命令,或者一次关闭一个单独的成员。
  4)使用关闭命令
    如果您正在使用持久区域,(成员将数据持久化到磁盘),您应该使用gfsh shutdown 命令以有序的方式停止运行的系统。该命令在关闭之前,对持久分区进行同步,这使得分布式系统的下一个启动变得尽可能高效。
    如果可能,所有成员都应该在关闭之前运行,这样就可以进行同步。使用以下gfsh命令关闭系统:
      gfsh shutdown
    默认情况下,关闭命令只会关闭数据节点。如果您想要关闭所有节点,包括定位器,请指定--include-locators=true参数。例如:
      gfsh>shutdown --include-locators=true
    这将一个接一个关闭所有的定位器,最后关闭管理。
    在一个宽限期之后关闭所有数据成员,指定一个超时选项(以秒为单位)。
      gfsh>shutdown --time-out=60
    在一个宽限期之后关闭所有成员包括定位器,指定一个超时选项(以秒为单位)。
      gfsh>shutdown --include-locators=true --time-out=60
  5)单独关闭系统成员
    如果您没有使用持久区域,您可以通过关闭每个成员以相反的顺序关闭分布式系统。(请参阅启动系统,以获得会员启动的推荐订单。)
    根据成员的类型关闭分布式系统成员。例如,使用以下机制来关闭成员:
      1.使用适当的机制关闭在分布式系统中运行的任何与地理连接的客户端应用程序。
      2.关闭任何缓存服务器。要关闭服务器,请发出以下gfsh命令:
        gfsh>stop server --name=<...>
        或者
        gfsh>stop server --dir=<server_working_dir>
      3.关闭任何定位器。要关闭定位器,请发出以下gfsh命令:
        gfsh>stop locator --name=<...>
        或者
        gfsh>stop locator --dir=<locator_working_dir>
      4.在一般情况下,不要使用命令行kill -9来关闭服务器。与少数成员,特别是在系统使用一个kill而不是gfsh stop,
        可能导致分区结束状态检测机制,分区检测机制将系统置于最终状态,它将永远等待重新连接到被杀死的服务器,并且无法重新启动已被杀死的服务器。
        如果kill命令变成了消除服务器系统的惟一方法,那么就杀死分布式系统的所有进程,或者使用kill -INT,这将允许进程有序地关闭。
  6)系统成员关闭行为的选项
    DISCONNECT_WAIT命令行参数设置关闭过程中的每个独立步骤的最长时间。如果任何一个步骤比指定的数量花费的时间长,那么它将被迫终止。
    每个操作都被赋予这个宽限期,所以缓存成员要关闭的总时间取决于操作的数量和DISCONNECT_WAIT的设置。在关闭过程中,Geode会生成如下消息:
      Disconnect listener still running
    断开连接的默认值是10000毫秒。
    为了改变它,将该系统属性设置为成员启动时使用的Java命令行。例如:
      gfsh>start server --J=-DDistributionManager.DISCONNECT_WAIT=<milliseconds>
    每个进程可以有不同的DISCONNECT_WAIT设置。


11、运行Geode Locator流程
locator 定位器是一个Geode process,它告诉新成员,连接成员到运行中的成员中,并为服务器的使用提供负载平衡。
  您可以运行定位器作为对等点定位器、服务器定位器或两者:
    1.对等点定位器将连接成员的连接信息提供给已经在定位器的分布式系统中运行的成员。
    2.服务器定位器向客户端提供连接信息到在定位器的分布式系统中运行的服务器。服务器定位器还监控服务器负载,并将客户机发送到负载最少的服务器。
    默认情况下,locator是作为对等服务器和服务器定位器运行的。
    您可以独立运行定位器,也可以在另一个Geode流程中嵌入。独立运行locator提供了定位服务的最高可靠性和可用性。
  1)locator的配置和日志文件
    locator配置和日志文件具有以下属性:
    1.当您使用gfsh启动一个独立的locator时,gfsh会自动加载所需的JAR文件lib/geode-dependencies.jar进入JVM进程的CLASSPATH。
      如果使用LocatorLauncher API启动一个独立的定位器,必须在用于启动locator进程的命令中指定这个JAR文件。
      有关Geode中的CLASSPATH设置的更多信息,请参阅Geode进程的CLASSPATH设置。您可以通过指定--classpath参数来修改CLASSPATH。
    2.定位器是分布式系统的成员,就像任何其他成员一样。在mcast-port和locators配置方面,定位器应该与服务器的配置方式相同。
      因此,如果在分布式系统中有两个其他的定位器,每个定位器都应该引用其他的定位器(就像一个服务器成员一样)。例如:
        gfsh> start locator --name=locator1 --port=9009 --mcast-port=0 \
              --locators='host1[9001],host2[9003]'
    3.您可以在gemfire.properties中配置定位器或在命令行上指定启动参数。如果您在属性文件中指定定位器的配置,
      如果您使用的是单独的、受限的访问安全设置文件、属性设置,则定位器需要相同的gemfire.properties设置为分布式系统的其他成员和相同的gfsecurity.properties。
      例如,要在gemfire.properties中同时配置locator和多播端口。
        locators=host1[9001],host2[9003]
        mcast-port=0
    4.没有特定于定位器的缓存配置。
    5.对于日志输出,定位器在其当前工作目录中创建一个日志文件。日志文件默认在定位器的工作目录下输出locator_name.log。
      如果您使用先前使用的locator名称重新启动一个定位器,即现有的locator名称。日志文件会自动为您重新命名(例如,locator1-01-01.log或locator1-01-01.log)。
      您可以通过在启动定位器时在--log-level的参数中指定一个级别来修改这个文件中的日志记录细节级别。
    6.默认情况下,定位器将在gfsh的目录下的子目录(以locator命名)开始。这个子目录被认为是当前工作目录。在gfsh中启动定位器时,还可以指定一个不同的工作目录。
    7.默认情况下,由于网络分区事件或成员不响应而关闭和断开的定位器将重新启动并自动尝试重新连接到现有的分布式系统。
      当定位器处于重新连接状态时,它不会为分布式系统提供发现服务。有关更多细节,请参阅使用Autoreconnect处理强制缓存断开。
  2)定位器和集群配置服务
    定位器使用集群配置服务来保存适用于所有集群成员的配置,或指定组的成员。配置被保存在Locator的目录中,并被传播到分布式系统中的所有定位器。
    当您使用gfsh启动服务器时,服务器将从定位器接收组级和集群级配置。
  3)启动定位器
    使用以下指南启动定位器
    1.独立的定位器。用以下方法启动一个独立的定位器:
      1使用gfsh命令行实用工具。有关使用gfsh的更多信息,请参见gfsh。例如:
        gfsh>start locator --name=locator1
        gfsh> start locator --name=locator2 --bind-address=192.0.2.0 --port=13489
      2使用main方法启动定位器
        org.apache.geode.distributed.LocatorLauncher类和Java可执行文件。具体地说,您使用LocatorLauncher类API在您已经创建的Java应用程序进程中运行嵌入式定位器服务。
        您执行java命令的目录将成为定位程序进程的工作目录。
      3当启动多个定位器时,不要并行启动它们(换句话说,同时)。作为一种最佳实践,在启动其他定位器之前,您应该等待第一个定位器完成启动大约30秒。
        要检查定位器的成功启动,请检查定位器日志文件。要查看正在运行的定位器的正常运行时间,您可以使用gfsh status locator命令。
    2.嵌入式(托管)定位器。在成员启动或通过api管理一个coloclocator定位器:
      1使用 gemfire.properties start-locator开始定位器设置,在你的Geode成员中自动启动定位器。当成员退出时,定位器会自动停止。该属性具有以下语法:
        #gemfire.properties
        start-locator=[address]port[,server={true|false},peer={true|false}]
        例如
          #gemfire.properties
          start-locator=13489
      2使用org.apache.geode.distributed.LocatorLauncher API在代码中启动定位器。使用LocatorLauncher。
       构建器类来构造LocatorLauncher的一个实例,然后使用start()方法来启动嵌入到Java应用程序进程中的定位服务。
       LocatorLauncher类中的其他方法提供定位器的状态信息,并允许您停止定位器。


       import org.apache.geode.distributed.LocatorLauncher;


        public class MyEmbeddedLocator {


           public static void main(String[] args){
               LocatorLauncher locatorLauncher  = new LocatorLauncher.Builder()
                 .setMemberName("locator1")
                 .setPort(13489)
                 .build();


                 locatorLauncher.start();


                 System.out.println("Locator successfully started");
               }
           }
      这是另一个在应用程序中嵌入定位器的例子,启动它,然后在允许其他成员访问它之前检查定位器的状态:
      package example;


      import ...


      class MyApplication implements Runnable {


        private final LocatorLauncher locatorLauncher;


        public MyApplication(final String... args) {
          validateArgs(args);


          locatorLauncher = new LocatorLauncher.Builder()
            .setMemberName(args[0])
            .setPort(Integer.parseInt(args[1])
            .setRedirectOutput(true)
            .build();
        }


        protected void args(final String[] args) {
          ...
        }


        public void run() {
          ...


          // start the Locator in-process
          locatorLauncher.start();


          // wait for Locator to start and be ready to accept member (client) connections
          locatorLauncher.waitOnStatusResponse(30, 5, TimeUnit.SECONDS);


          ...
        }


        public static void main(final String... args) {
          new MyApplication(args).run();
        }


      }


    然后,执行该应用程序,您将运行:
    /working/directory/of/MyApplication$ java \
   -server -classpath "path/to/installation/lib/geode-dependencies.jar:/path/to/application/classes.jar" \
   example.MyApplication Locator1 11235
   您执行java命令的目录将成为定位程序进程的工作目录。


  4)检查定位器状态
    如果您连接到gfsh中的分布式系统,您可以通过提供Locator名称来检查正在运行的定位器的状态。例如:
      gfsh>status locator --name=locator1
    如果您没有连接到一个分布式系统,您可以通过提供进程ID、定位器的主机名和端口,或者定位器的当前工作目录来检查本地定位器的状态。例如:
      gfsh>status locator --pid=2986
      或者
      gfsh>status locator --host=host1 --port=1035
      或者
      $ gfsh status locator --dir=<locator_working_directory>
      <locator_working_directory>对应于定位器运行的本地工作目录。
      如果成功,该命令将返回以下信息(在启动时提供的JVM参数):
        $ gfsh status locator --dir=locator1
        Locator in /home/user/locator1 on ubuntu.local[10334] as locator1 is currently online.
        Process ID: 2359
        Uptime: 17 minutes 3 seconds
        GemFire Version: 8.0.0
        Java Version: 1.7.0_65
        Log File: /home/user/locator1/locator1.log
        JVM Arguments: -Dgemfire.enable-cluster-configuration=true -Dgemfire.load-cluster-configuration-from-dir=false
         -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
        Class-Path: /Users/username/apache_geode/lib/geode-dependencies.jar


        Cluster configuration service is up and running.
  5)停止定位器
    gfsh>stop locator --name=locator1
    gfsh>stop locator --pid=2986
    gfsh>stop locator --dir=<locator_working_directory>
  6)定位器和多站点(WAN)部署
    如果您使用多站点(WAN)配置,您可以在启动定位器时将定位器连接到远程站点。
    要将新的locator进程连接到WAN配置中的远程定位器,请在启动时指定以下内容:
    gfsh> start locator --name=locator1 --port=9009 --mcast-port=0 \
          --J='-Dgemfire.remote-locators=192.0.2.0[9009],198.51.100.0[9009]'


12、运行Geode server流程
server 是作为客户端/服务器系统的长期、可配置成员运行的process。
  Geode服务器主要用于承载长时间的数据区域,以及运行标准的Geode进程,比如服务器端/服务器配置中的服务器。您可以使用以下方法启动和停止服务器:
    1.sh命令行工具.
    2.通过编程,通过org.apache.geode.distributed.ServerLauncher API。ServerLauncher API只能用于Geode服务器,这些服务器是由gfsh或ServerLauncher类本身启动的。
  1)默认 Server 配置和日志文件
    gfsh工具集为其配置文件和日志文件使用一个工作目录。这些是默认设置和配置选项:
      1.当您使用gfsh启动独立服务器时,gfsh将自动加载所需的JAR文件lib/geode-dependencies.jar进入JVM进程的类路径。
        如果您使用ServerLauncher API启动一台独立的服务器,那么必须在命令中指定这个JAR文件来启动该进程。有关Geode中的CLASSPATH设置的更多信息,请参阅设置类路径。
      2.服务器的配置与任何其他Geode流程一样,都是gemfire.properties和共享集群配置文件。除了通过应用程序插件外,它是不可编程的。
        通常,你提供了gemfire.properties文件和gfsecurity.properties文件。您也可以指定一个gfsecurity.properties缓存服务器的工作目录中的xml文件。
      3.默认情况下,假设定位器正在运行集群配置服务,那么启动了一个新的服务器,gfsh从集群配置服务接收初始缓存配置。
        如果您在启动服务器时指定了组,那么服务器也会接收到应用到组的配置。共享配置由cache.xml文件,cache.xml文件和已部署的jar文件组成。
        通过使用gfsh,您可以通过指定--use-cluster-configuration=false来禁用集群配置服务的使用。请参阅集群配置服务的概述。
      4.如果您正在使用Spring框架,那么您可以在gfsh中使用--spring-xml-location命令行选项启动您的服务器时指定一个Spring ApplicationContext XML文件。
        这个选项允许您使用Spring应用程序的配置引导Geode服务器进程。有关该文件的更多信息,请参见Spring文档。
      5.为了记录输出,日志文件输出在缓存服务器的工作目录中默认为<server-name>.log。如果您使用相同的服务器名重新启动一台服务器,那么将自动重命名现有的日志文件,
        例如server1-01-01.log 和server1-02-01.log。您可以通过在启动服务器时在--log-level参数中指定一个级别,来修改这个文件中的日志记录细节级别。
      6.默认情况下,服务器将以服务器指定的名称命名,在gfsh被执行的目录下,以服务器的指定名称命名。这个子目录被认为是当前工作目录。
        您还可以在gfsh中启动高速缓存服务器时指定不同的工作目录。
      7.默认情况下,由于网络分区事件或成员的不响应而关闭和断开的服务器进程将重新启动并自动尝试重新连接到现有的分布式系统。有关更多细节,请参阅使用Autoreconnect处理强制缓存断开。
      8.通过在服务器启动时使用--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
      9.我们建议在启动服务器时不要使用-XX:+UseCompressedStrings和-XX:+UseStringCache JVM配置属性。这些JVM选项可能导致数据损坏和兼容性问题。
  2)使用gfsh启动服务器
    有关语法信息,请参阅gfsh start server命令参考页面。
    这些例子,gfsh start serve start命令指定一个cache.xml用于缓存配置,并使用不同的传入客户端连接端口:
      gfsh>start server --name=server1 \
      --cache-xml-file=../ServerConfigs/cache.xml --server-port=40404


      gfsh>start server --name=server2 \
      --cache-xml-file=../ServerConfigs/cache.xml --server-port=40405
    cache.xml文件位置和客户机连接端口的设置可以在gemfire.properties中定义。然后,启动指定gemfire.properties的服务器,如示例命令:
      gfsh>start server --name=server1 \
      --properties-file=/home/username/cluster/gemfire.properties
    使用嵌入式JMX Manager启动服务器:
      gfsh>start server --name=server2 \
      --J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true
    当在服务器启动期间指定了--max-heap和--initial-heap时,额外的GC参数将代您指定。如果您不希望设置额外的缺省GC属性,则使用-Xms&-Xmx JVM选项来设置这些参数。
      有关更多信息,请参阅资源管理器的控制堆使用。要启动服务器,提供JVM配置设置:
      gfsh>start server --name=server3 \
      --J=-Xms80m,-Xmx80m --J=-XX:+UseConcMarkSweepGC,-XX:CMSInitiatingOccupancyFraction=65
  3)以编程方式启动服务器
    使用org.apache.geode.distributed.ServerLauncher API 在代码中启动缓存服务器进程。
    使用ServerLauncher建造器类来构造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");
          }
      }
  4)检查服务状态
    一旦连接到gfsh中的分布式系统,通过提供服务器名称来检查运行中的缓存服务器的状态:
      gfsh>status server --name=server1
    如果您没有连接到一个分布式系统,您可以通过提供进程ID或服务器的当前工作目录来检查本地缓存服务器的状态。例如:
      gfsh>status server --pid=2484
      或
      % gfsh status server --dir=server1
    如果成功,输出提供的信息如本示例所提供的:
      % gfsh status server --dir=server4
      Server in /home/username/server4 on 192.0.2.0[40404] as server4 is currently online.
      Process ID: 49008
      Uptime: 2 minutes 4 seconds
      Geode Version: 1.4
      Java Version: 1.8.0_144
      Log File: /home/username/server4/server4.log
      JVM Arguments:
      ...
  5)停止服务
    当连接到gfsh中的分布式系统时,通过提供服务器名称来停止运行的缓存服务器:
      gfsh>stop server --name=server1
    如果没有连接,您可以通过指定服务器的当前工作目录或进程ID来停止本地缓存服务器。
      gfsh>stop server --pid=2484
      或
      gfsh>stop server --dir=server1
    您还可以使用gfsh关闭命令以一种有序的方式关闭所有缓存服务器。对于具有持久区域的系统来说,关闭是正确的方法。请参见启动和关闭系统以获得更多细节。


13、管理系统输出文件
Geode输出文件是可选的,并且可以变得非常大。与您的系统管理员一起确定在何处放置它们以避免干扰其他系统活动。
  Geode包括以下所述的几种可选输出文件类型:
    1.日志文件(Log Files)。全面的日志消息,以帮助您确认系统配置和调试配置和代码中的问题。在gemfire.properties中配置日志文件。
    参考logging(http://geode.apache.org/docs/guide/14/managing/logging/logging.html#concept_30DB86B12B454E168B80BB5A71268865)。
    2.统计归档文件(Statistics Archive Files)。用于缓存和分发活动的标准统计数据,您可以在磁盘上进行存档。
    在gemfire.properties,archive-disk-space-limit,archive-file-size-limit中配置统计数据收集和归档。
    3.磁盘存储文件(Disk Store Files)。从缓存中保存持久和溢出的数据。您可以配置区域将数据持久存储到磁盘,以备备份或溢出到磁盘以控制内存使用。
    服务器用来向客户发送事件的订阅队列可以溢出到磁盘。网关发送者队列自动地溢出到磁盘,并且可以持久化以获得高可用性。通过cache.xml配置这些文件。
    参考磁盘存储(http://geode.apache.org/docs/guide/14/managing/disk_storage/chapter_overview.html)。


14、防火墙注意事项
您可以配置和限制涉及防火墙的端口使用,例如,在客户机-服务器之间或服务器-服务器连接之间。
  1)防火墙和连接
    请注意可能由于在您的计算机上运行防火墙而导致的连接问题。
    Apache Geode是一个以网络为中心的分布式系统,因此如果您的机器上有一个防火墙,它可能会导致连接问题。
    例如,如果您的防火墙对基于java的套接字的入站或出站权限设置了限制,您的连接可能会失败。您可能需要修改防火墙配置,以允许在您的机器上运行的Java应用程序的流量。
    具体的配置取决于您所使用的防火墙。
    例如,由于超时设置,防火墙可能会关闭与Geode的连接。如果防火墙在某一段时间内没有察觉任何活动,那么当活动恢复时,它可能关闭一个连接并打开一个新的连接,
    这可能会导致一些关于您的连接的混淆。
    要了解更多关于Geode客户端和服务器连接的信息,请参阅以下主题:
    How Client/Server Connections Work(http://geode.apache.org/docs/guide/14/topologies_and_comm/topology_concepts/how_the_pool_manages_connections.html#how_the_pool_manages_connections)
    Socket Communication(http://geode.apache.org/docs/guide/14/managing/monitor_tune/socket_communication.html)
    Controlling Socket Use(http://geode.apache.org/docs/guide/14/managing/monitor_tune/performance_controls_controlling_socket_use.html#perf)
    Setting Socket Buffer Sizes(http://geode.apache.org/docs/guide/14/managing/monitor_tune/socket_communication_setting_socket_buffer_sizes.html)
  2)防火墙和端口
    在使用防火墙时需要考虑几个不同的端口设置:
    1.缓存服务器监听的端口。这是在cache.xml中使用cache-server元素可配置,在Java api中的CacheServer类上,作为gfsh start server命令的命令行选项。
    默认情况下,如果没有指定,Geode客户端和服务器会在本地主机上的预定义端口(40404)中发现彼此。
    2.定位器端口。Geode客户端可以使用定位器自动发现缓存服务器。定位器端口是可配置的,作为gfsh start locator命令的命令行选项。定位器用于点对点缓存部署,以发现其他进程。
    客户端可以使用它们来定位服务器,作为配置服务器地址和端口集合的客户端。
    默认情况下,如果没有指定,Geode locator将使用缺省端口10334。
    3.由于定位器启动了分布式系统,定位器还必须有它们的临时端口范围和通过防火墙访问其他成员的TCP端口。
    4.对于客户端,您可以配置客户端来使用客户端的池配置连接到服务器。
    客户端的池配置有两种选择:您可以创建一个池,其中包含一个服务器元素列表或一个locator元素列表。对于每个元素,您指定主机和端口。
    指定的端口必须通过您的防火墙进行访问。




    1、限制对点对点成员的临时端口
      默认情况下,Geode分配临时端口,即从指定范围分配的临时端口,它可以包含大量可能的端口。当防火墙出现时,临时端口范围通常必须限制在一个小得多的数字上,例如6。
      如果您正在通过防火墙配置P2P通信,您还必须为每个进程设置TCP端口,并确保通过防火墙允许UDP流量。


    更多详情见(http://geode.apache.org/docs/guide/14/configuring/running/firewalls_ports.html)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值