Tutorial—创建和使用集群配置

使用单台计算机演示如何使用gfsh为Geode集群创建集群配置的简短步骤。

gfsh命令行工具允许您配置和启动Geode集群。 集群配置服务使用Apache Geode的 Locator将配置组和集群级别进行存储,并在新成员启动时将这些配置提供给新成员。 Locator将配置存储在一个仅有所有Locator可见的隐藏Region中,并将配置数据以XML文件格式写入磁盘。 配置数据可由gfsh命令进行更新。

本节提供了配置简单的Apache Geode集群,然后在新的上下文中重新使用该配置的一个步骤演示。

  1. 创建一个工作目录(例如:/home/username/my_geode),并切换到这个新目录。 此目录将包含集群的配置。

  2. 启动gfsh命令行工具。 例如:

    $ gfsh
    

    将显示“gfsh”命令提示符。

        _________________________     __
       / _____/ ______/ ______/ /____/ /
      / /  __/ /___  /_____  / _____  /
     / /__/ / ____/  _____/ / /    / /
    /______/_/      /______/_/    /_/    1.0.0
    
    Monitor and Manage Apache Geode
    gfsh>
    
  3. 使用以下示例中的命令启动Locator:

    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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/locator-dependencies.jar
    
    Successfully connected to: [host=192.0.2.0, port=1099]
    
    Cluster configuration service is up and running.
    

    请注意,gfsh响应一条消息,标明集群配置服务已启动并运行。 如果您看到一条消息指出问题,请查看 Locator日志文件以获取可能的错误。 日志文件的路径显示在gfsh的输出中。

  4. 使用以下示例中的命令启动Apache Geode服务器:

    gfsh>start server --name=server1 --group=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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/server-dependencies.jar
    
    gfsh>start server --name=server2 --group=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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/server-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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/server-dependencies.jar
    

    请注意,用于启动server1server2gfsh命令指定一个名为group1的组,而server3的命令没有指定组名。

  5. 使用以下示例中的命令创建一些Region:

    gfsh>create region --name=region1 --group=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"
    

    请注意,在所有 启动缓存服务器(在本示例中为server1server2)时所有指定组名为group1的 所有缓存服务器上都会创建region1。 因为没有指定任何组, region2是在所有成员上创建的。

  6. 部署jar文件。使用gfsh deploy命令将应用程序jar文件部署到所有成员或指定的成员组。 以下示例从发行版中部署了mx4j-3.0.1.jarmx4j.jar文件。 (注意:这只是一个例子,您不需要部署这些文件以使用群集配置服务。或者,您可以使用任何两个jar文件进行此演示。)

    gfsh>deploy --group=group1 --jar=/lib/mail.jar
    Post substitution: deploy --group=group1 --jar=/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 --jar=/lib/mx4j.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 export cluster-configuration命令创建一个包含集群持久配置的zip文件。 该zip文件包含cluster_config目录的内容。 例如:

    gfsh>export cluster-configuration --zip-file-name=myClusterConfig.zip --dir=/Users/username
    

    Apache Geode将集群配置写入指定的zip文件。

    Downloading cluster configuration : /Users/username/myClusterConfig.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命令工具:

    gfsh>quit
    Exiting...
    
  10. 创建一个新的工作目录(例如:new_geode)并切换到这个新目录。

  11. 启动gfsh 命令工具:

    $ gfsh
    
  12. 开始一个新的Locator。 例如:

    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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/locator-dependencies.jar
    
    Successfully connected to: [host=192.0.2.0, port=1099]
    
    Cluster configuration service is up and running.
    
  13. import cluster-configuration命令导入集群配置。 例如:

    gfsh>import cluster-configuration --zip-file-name=/Users/username/myClusterConfig.zip
    Cluster configuration successfully imported
    

    请注意,locator2目录现在包含了cluster_config子目录。

  14. 启动不指定组的Server:

    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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/server-dependencies.jar
    
  15. 启动另一个服务器,指定group1:

    gfsh>start server --name=server5 --group=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.0.0
    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
    :/Users/username/Apache_Geode_1.0.0_Linux/lib/server-dependencies.jar
    
  16. Use the list regions command to display the configured regions. Note that region1 and region2, which were configured in the original cluster level are available.使用list regions命令显示配置的Region。 请注意,配置成之前集群级别的region1和region2可用。

    gfsh>list regions
    List of regions
    ---------------
    region1
    region2
    
  17. 使用describe region命令查看集群的那个成员保存的指定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].
    

results matching ""

    No results matching ""