Tutorial—创建和使用集群配置
使用单台计算机演示如何使用gfsh
为Geode集群创建集群配置的简短步骤。
gfsh
命令行工具允许您配置和启动Geode集群。 集群配置服务使用Apache Geode的 Locator将配置组和集群级别进行存储,并在新成员启动时将这些配置提供给新成员。 Locator将配置存储在一个仅有所有Locator可见的隐藏Region中,并将配置数据以XML文件格式写入磁盘。 配置数据可由gfsh
命令进行更新。
本节提供了配置简单的Apache Geode集群,然后在新的上下文中重新使用该配置的一个步骤演示。
创建一个工作目录(例如:
/home/username/my_geode
),并切换到这个新目录。 此目录将包含集群的配置。启动
gfsh
命令行工具。 例如:$ gfsh
将显示“gfsh”命令提示符。
_________________________ __ / _____/ ______/ ______/ /____/ / / / __/ /___ /_____ / _____ / / /__/ / ____/ _____/ / / / / /______/_/ /______/_/ /_/ 1.0.0 Monitor and Manage Apache Geode gfsh>
使用以下示例中的命令启动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
的输出中。使用以下示例中的命令启动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
请注意,用于启动
server1
和server2
的gfsh
命令指定一个名为group1
的组,而server3
的命令没有指定组名。使用以下示例中的命令创建一些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"
请注意,在所有 启动缓存服务器(在本示例中为
server1
和server2
)时所有指定组名为group1
的 所有缓存服务器上都会创建region1
。 因为没有指定任何组,region2
是在所有成员上创建的。部署jar文件。使用
gfsh deploy
命令将应用程序jar文件部署到所有成员或指定的成员组。 以下示例从发行版中部署了mx4j-3.0.1.jar
和mx4j.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
已部署到所有成员。导出集群配置 您可以使用
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
剩下的步骤演示了如何使用您刚才创建的集群配置。
使用以下命令关闭集群:
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>
退出
gfsh
命令工具:gfsh>quit Exiting...
创建一个新的工作目录(例如:
new_geode
)并切换到这个新目录。启动
gfsh
命令工具:$ gfsh
开始一个新的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.
用
import cluster-configuration
命令导入集群配置。 例如:gfsh>import cluster-configuration --zip-file-name=/Users/username/myClusterConfig.zip Cluster configuration successfully imported
请注意,
locator2
目录现在包含了cluster_config
子目录。启动不指定组的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
启动另一个服务器,指定
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
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
使用
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
配置。使用以下命令关闭集群:
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].