实训—创建和使用群集配置
一个简短的演练,使用一台计算机演示如何使用gfsh为Geode集群创建集群配置。
gfsh命令行工具允许您配置和启动Geode集群。群集配置服务使用Apache Geode定位器在成员组和群集级别存储配置,并在新成员启动时将这些配置提供给新成员。 定位器将配置存储在可供所有定位器使用的隐藏区域中,并将配置数据作为XML文件写入磁盘。配置数据在执行gfsh命令时更新。
本节提供了配置简单Apache Geode集群,及在新上下文中重用该配置的演练示例。
-
创建一个工作目录(例如:/ home / username / my_geode)并切换到新目录。该目录将包含群集的配置。
-
启动gfsh命令行工具。例如:
$ gfsh
将显示gfsh命令提示符。
_________________________ __ / _____/ ______/ ______/ /____/ / / / __/ /___ /_____ / _____ / / /__/ / ____/ _____/ / / / / /______/_/ /______/_/ /_/ 1.8 Monitor and Manage Apache Geode gfsh>
-
使用以下示例中的命令启动定位器:
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.8 Java Version: 1.8.0_121 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的输出中。
注:在虚拟机测试时,无法启动,根据提示定位到locator1文件夹下的locator1.log文件(Geode会在执行目录下创建--name指定的名称文件夹,这个文件夹下会有相关的log等文件),打开locator1.log文件查找不能启动原因:
从locator1.log文件中可以看到,locator1绑定的IP地址是 211.98.71.195,不是虚拟机真实地址,为什么没有获取到,这里先存疑,待后续解决。(这个是因为没有在Hosts文件中配置IP及对应主机名)
使用help命令查看start locator 支持那些参数:
调整启动命令,指定绑定IP,显示启动成功(后续命令都需要指定IP,将不再特别说明)
-
使用以下示例中的命令启动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.8 Java Version: 1.8.0_121 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.8 Java Version: 1.8.0_121 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.8 Java Version: 1.8.0_121 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的命令未指定组名称。
-
使用以下示例中的命令创建一些区域:
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)时指定成员组名为group1的所有缓存服务器上创建region1。在所有成员上创建了region2,因为未指定任何组。
-
部署jar文件。使用gfsh deploy命令将应用程序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已部署到所有成员。
-
导出群集配置。您可以使用gfsh export cluster-configuration命令创建包含群集持久配置的zip文件。zip文件包含cluster_config目录内容的副本。例如:
gfsh>export cluster-configuration --zip-file-name=/Users/username/myClConfig.zip
Apache Geode将群集配置写入指定的zip文件。
Downloading cluster configuration : /Users/username/myClConfig.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命令shell:
gfsh>quit Exiting...
-
创建一个新的工作目录(例如:new_geode)并切换到新目录。
-
启动gfsh命令shell:
$ gfsh
-
启动一个新的定位器。例如:
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.8 Java Version: 1.8.0_121 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.
-
使用import cluster-configuration命令导入集群配置。例如:
gfsh>import cluster-configuration --zip-file-name=/Users/username/myClConfig.zip Cluster configuration successfully imported
请注意,locator2目录现在包含cluster_config子目录。
-
启动不引用组的服务器:
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.8 Java Version: 1.8.0_121 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
-
启动另一个引用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.8 Java Version: 1.8.0_121 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
-
使用list regions命令显示已配置的区域。请注意,在原始群集级别中配置的region1和region2可用。
gfsh>list regions List of regions --------------- region1 region2
-
使用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配置。
-
使用以下命令关闭群集:
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].