Geode安装管理指南

Step1 安装Geode

  1. 下载 .zip 或者 .tar 文件从 http://geode.apache.org.

  2. 解压 .zip 或者 .tar 文件, 这个 path_to_product 是绝对路径.

    例如 .zip 格式:

    $ unzip apache-geode-1.14.0.zip -d path_to_product
    

    例如 .tar 格式:

    $ tar -xvf apache-geode-1.14.0.tar -C path_to_product
    
  3. 设置 JAVA_HOME 环境变量. 在 Linux/Unix 下:

    JAVA_HOME=/usr/java/jdk1.8.0_60
    export JAVA_HOME
    

    在 Windows 平台:

    set JAVA_HOME=c:\Program Files\Java\jdk1.8.0_60 
    
  4. 添加 Geode 脚本 到你的 PATH 环境变量里. 在 Linux/Unix 下:

    PATH=$PATH:$JAVA_HOME/bin:path_to_product/bin
    export PATH
    

    Windows 下:

    set PATH=%PATH%;%JAVA_HOME%\bin;path_to_product\bin 
    
  5. 为了验证安装是否成功, 键入 gfsh version 命令, 查看输出. 例如:

    $ gfsh version
    v1.14.0
    

    想查看更详细的信息, 比如 构建日期和版本号, JDK 版本等等, 键入:

    $ gfsh version --full
    

Step2 启动Locator

  1. 创建一个工作目录 例如, my_geode) 然后进入它. gfsh 在此目录下保存locatorserver 的工作目录和日志文件.

  2. 键入 gfsh 命令启动它(或者 gfsh.bat 在Windows操作操作系统下).

        _________________________     __
       / _____/ ______/ ______/ /____/ /
      / /  __/ /___  /_____  / _____  /
     / /__/ / ____/  _____/ / /    / /
    /______/_/      /______/_/    /_/    1.5
    
    Monitor and Manage Geode
    gfsh>
    
  3. 在进入 gfsh 后, 键入 start locator 命令指定 locator 的名字:

    gfsh>start locator --name=locator1
    Starting a Geode Locator in /home/username/my_geode/locator1...
    .................................
    Locator in /home/username/my_geode/locator1 on ubuntu.local[10334] as locator1 is currently online.
    Process ID: 3529
    Uptime: 18 seconds
    Geode Version: 1.5
    Java Version: 1.8.0_121
    Log File: /home/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: /home/username/Apache_Geode_Linux/lib/geode-core-1.0.0.jar:
    /home/username/Apache_Geode_Linux/lib/geode-dependencies.jar
    
    Successfully connected to: JMX Manager [host=10.118.33.169, port=1099]
    
    Cluster configuration service is up and running.
    

如果你运行 start locatorgfsh 没有指定 member 名字, gfsh 会自动生成一个随机的 member 名字. 这对自动化操作非常有用.

Step3 启动Pulse

启动基于浏览器的脉冲监测工具. Pulse是一个Web应用程序,它提供了一个图形仪表板,用于监控Geode集群,成员和regions的重要的实时健康和性能.参考Geode Pulse

gfsh>start pulse

此命令启动Pulse并自动连接到在Locator中运行的JMX Manager.在Pulse登录页面上,输入默认用户名admin和密码admin.

Pulse应用程序显示刚刚启动的定位器(locator1): [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhuX8ySO-1662299034208)(assets/pulse_locator.png)]

Step4 启动服务器(server)

Geode服务器是作为一个长期运行的,可配置成员的集群(也称为分布式系统). Geode服务器主要用于托管长期数据区域(data regions)和运行标准Geode进程,例如客户端/服务器配置中的服务器.参考Running Geode Server Processes.

启动一个缓存服务器:

gfsh>start server -name=server1 -server-port=40411

此命令在 40411 的指定端口上启动名为"server1"的缓存服务器.

如果你运行 start server 命令从 gfsh 没有指定 member 名字, gfsh 会自动随机生成一个随机的 member 名字. 这对自动化操作非常有用.

在Pulse中观察变化(新成员[member]和服务器[server]).尝试扩展分布式系统图标,以图形方式查看定位器和缓存服务器.

Step5 创建一个复制的(replicated),持久(persistent)的region

在此步骤中,使用gfsh命令创建一个region.region是Geode集群的核心构建块,并提供了组织数据的方法.在此次练习中创建的region在集群成员之间复制数据(replicated),并利用持久性将数据保存到磁盘(persistent).参考Data Regions

  1. 创建一个被复制的持久的region:
gfsh>create region --name=regionA --type=REPLICATE_PERSISTENT
Member  | Status
------- | --------------------------------------
server1 | Region "/regionA" created on "server1"

注意该region被server1托管.

  1. 使用gfsh命令查看集群上的region列表
gfsh>list regions
List of regions
---------------
regionA
  1. 查看集群的成员列表.启动的定位器(locator)和缓存服务器(cache server)都在该列表中.
gfsh>list members
  Name       | Id
------------ | ---------------------------------------
Coordinator: | 192.0.2.0(locator1:3529:locator)<ec><v0>:59926
locator1     | 192.0.2.0(locator1:3529:locator)<ec><v0>:59926
server1      | 192.0.2.0(server1:3883)<v1>:65390
  1. 查看该region的详细信息:
gfsh>describe region --name=regionA
..........................................................
Name            : regionA
Data Policy     : persistent replicate
Hosting Members : server1

Non-Default Attributes Shared By Hosting Members

 Type  | Name | Value
------ | ---- | -----
Region | size | 0
  1. 在Pulse中,点击绿色的集群图标,查看刚刚添加的新成员和新regions.

Note: 保持此gfsh提示打开以供后续步骤使用.

Step6 操作region中数据,展示持久性

Apache Geode以键/值对形式对数据进行管理.在大多数应用程序中,Java程序添加,删除和修改存储的数据.同时也可以使用gfsh命令添加和检索数据.参考Data Commands.

  1. 运行put命令向region中添加数据.
gfsh>put --region=regionA --key="1" --value="one"
Result      : true
Key Class   : java.lang.String
Key         : 1
Value Class : java.lang.String
Old Value   : <NULL>

gfsh>put --region=regionA --key="2" --value="two"
Result      : true
Key Class   : java.lang.String
Key         : 2
Value Class : java.lang.String
Old Value   : <NULL>
  1. 查询region中数据.
gfsh>query --query="select * from /regionA"

Result     : true
startCount : 0
endCount   : 20
Rows       : 2

Result
------
two
one

注意到结果是刚刚使用put命令添加的两条数据条目(entries).
参考Data Entries.

  1. 关闭缓存服务器:
gfsh>stop server --name=server1
Stopping Cache Server running in /home/username/my_geode/server1 on ubuntu.local[40411] as server1...
Process ID: 3883
Log File: /home/username/my_geode/server1/server1.log
....
  1. 重新启动缓存服务器:
gfsh>start server --name=server1 --server-port=40411
  1. 再次查询region中数据,注意到数据仍然可用:
gfsh>query --query="select * from /regionA"

Result     : true
startCount : 0
endCount   : 20
Rows       : 2

Result
------
two
one

因为regionA有持久性,它将数据的副本写入磁盘.当托管regionA的服务器启动时,数据将被填充到高速缓存中.请注意,结果显示停止服务器之前使用put命令添加的两个数据条目的值.
参考Data Entries
参考Data Regions

Step7 检测副本(replication)的影响

在此步骤中,启动第二个缓存服务器.因为regionA是可复制的,所以该数据将在托管该区域的任何服务器上可用.

  1. 启动第二台服务器:
gfsh>start server --name=server2 --server-port=40412
  1. 运行describe region 命令,查看regionA的详细信息:
gfsh>describe region --name=regionA
..........................................................
Name            : regionA
Data Policy     : persistent replicate
Hosting Members : server1
                  server2

Non-Default Attributes Shared By Hosting Members

 Type  | Name | Value
------ | ---- | -----
Region | size | 2

请注意,不需要再为server2创建regionA.命令的输出显示regionA托管在server1和server2上.当gfsh启动服务器时,它会从群集配置服务请求配置,集群配置服务会将共享配置分发到加入群集的任何新服务器.

  1. 增加第三个数据条目:
gfsh>put --region=regionA --key="3" --value="three"
Result      : true
Key Class   : java.lang.String
Key         : 3
Value Class : java.lang.String
Old Value   : <NULL>
  1. 打开Pulse应用程序(在Web浏览器中)并观察集群拓扑.应该可以看到一个有两个服务器连接的定位器.单击"data"选项卡以查看有关regionA的信息.
  2. 关闭第一个缓存服务器:
gfsh>stop server --name=server1
Stopping Cache Server running in /home/username/my_geode/server1 on ubuntu.local[40411] as server1...
Process ID: 4064
Log File: /home/username/my_geode/server1/server1.log
....
  1. 在其余的缓存服务器中查询数据:
gfsh>query --query="select * from /regionA"

Result     : true
startCount : 0
endCount   : 20
Rows       : 3

Result
------
two
one
three

注意数据包含3个条目, 包括你刚刚添加的那个.

  1. 添加第四个数据条目
gfsh>put --region=regionA --key="4" --value="four"
Result      : true
Key Class   : java.lang.String
Key         : 3
Value Class : java.lang.String
Old Value   : <NULL>

只有server2正在运行.因为数据被复制和持久化,所有数据仍然可用.但是新的数据条目当前仅在server2 上可用.

gfsh>describe region --name=regionA
..........................................................
Name            : regionA
Data Policy     : persistent replicate
Hosting Members : server2

Non-Default Attributes Shared By Hosting Members

 Type  | Name | Value
------ | ---- | -----
Region | size | 4
  1. 关闭Server2
gfsh>stop server --name=server2
Stopping Cache Server running in /home/username/my_geode/server2 on ubuntu.local[40412] as server2...
Process ID: 4185
Log File: /home/username/my_geode/server2/server2.log
.....

Step8 并行重启缓存服务器

在此步骤中,并行重新启动缓存服务器.由于数据是持久的,因此在服务器重新启动时数据可用.由于数据在多个服务器上存在副本,因此必须并行启动服务器,以便可以在启动之前同步其数据.

  1. 启动server1.因为regionA是复制和持久的,它需要同步其他服务器的数据才能启动,因此需要等待其他服务器启动:
gfsh>start server --name=server1 --server-port=40411
Starting a Geode Server in /home/username/my_geode/server1...
............................................................................
............................................................................

此时如果在server1.log日志文件中查找重新启动服务器的相关信息,将看到类似于以下内容的日志消息:

[info 2015/01/14 09:08:13.610 PST server1 <main> tid=0x1] Region /regionA has pot
entially stale data. It is waiting for another member to recover the latest data.
  My persistent id:

    DiskStore ID: 8e2d99a9-4725-47e6-800d-28a26e1d59b1
    Name: server1
    Location: /192.0.2.0:/home/username/my_geode/server1/.

  Members with potentially new data:
  [
    DiskStore ID: 2e91b003-8954-43f9-8ba9-3c5b0cdd4dfa
    Name: server2
    Location: /192.0.2.0:/home/username/my_geode/server2/.
  ]
  Use the "gfsh show missing-disk-stores" command to see all disk stores that
are being waited on by other members.
  1. 打开第2个终端窗口,切换到合适的工作目录(例如:my_geode),启动gfsh:
[username@localhost ~/my_geode]$ gfsh
    _________________________     __
   / _____/ ______/ ______/ /____/ /
  / /  __/ /___  /_____  / _____  /
 / /__/ / ____/  _____/ / /    / /
/______/_/      /______/_/    /_/    1.5

Monitor and Manage Geode
  1. 连接集群:
gfsh>connect --locator=localhost[10334]
Connecting to Locator at [host=localhost, port=10334] ..
Connecting to Manager at [host=ubuntu.local, port=1099] ..
Successfully connected to: [host=ubuntu.local, port=1099]

注意,特别是在/etc/hosts里的hostname跟/etc/sysconfig/network里的不一致时必需使用jmx-manager参数,而且格式最好是’IP地址[端口号]’

例如connect --jmx-manager=${locator_ip_address}

  1. 启动server2:
gfsh>start server --name=server2 --server-port=40412

当server2启动时,注意server1在第一个gfsh窗口中完成启动:

Server in /home/username/my_geode/server1 on ubuntu.local[40411] as server1 is currently online.
Process ID: 3402
Uptime: 1 minute 46 seconds
Geode Version: 1.5
Java Version: 1.8.0_121
Log File: /home/username/my_geode/server1/server1.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: /home/username/Apache_Geode_Linux/lib/geode-core-1.0.0.jar:
/home/username/Apache_Geode_Linux/lib/geode-dependencies.jar
  1. 验证定位器和两个服务器在运行:
gfsh>list members
  Name       | Id
------------ | ---------------------------------------
Coordinator: | ubuntu(locator1:2813:locator)<ec><v0>:46644
locator1     | ubuntu(locator1:2813:locator)<ec><v0>:46644
server2      | ubuntu(server2:3992)<v8>:21507
server1      | ubuntu(server1:3402)<v7>:36532
  1. 查询以验证使用put命令添加的所有数据是否可用:
gfsh>query --query="select * from /regionA"

Result     : true
startCount : 0
endCount   : 20
Rows       : 5

Result
------
one
two
four
Three

NEXT_STEP_NAME : END
  1. 关闭server2
gfsh>stop server --dir=server2
Stopping Cache Server running in /home/username/my_geode/server2 on 192.0.2.0[40412] as server2...
Process ID: 3992
Log File: /home/username/my_geode/server2/server2.log
....
  1. 再次查询以验证使用put命令添加的所有数据是否可用:
gfsh>query --query="select * from /regionA"

Result     : true
startCount : 0
endCount   : 20
Rows       : 5

Result
------
one
two
four
Three

NEXT_STEP_NAME : END

Step 9 关闭包括定位器在内的整个系统

关闭集群有以下步骤:

  1. 在当前gfsh会话中,关闭集群:
gfsh>shutdown --include-locators=true

参见 shutdown.

  1. 出现提示时,键入"Y"以确认集群关闭.
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 ubuntu.local[1099].
gfsh>
  1. 输入 exit 推出gfsh shell.

Geode服务运维疑难汇总

  • 关于启动定位器,指定JVM参数:
窗口启动(服务进程随窗口关闭):
start locator --name=locator203 --locators=172.16.234.202[10334],172.16.234.203[10334] --J=-Xmx8g --J=-Xms8g --J=-Xmn2g

后台启动(服务永久存活):
gfsh start locator --name=locator203 --locators=172.16.234.202[10334],172.16.234.203[10334] --J=-Xmx8g --J=-Xms8g --J=-Xmn2g 2>&1 &
  • 关于启动服务,指定配置文件与JVM参数:
窗口启动(服务进程随窗口关闭):
start server--name=server203 --dir=/opt/geode-1.14.0/bin/server203 --properties-file=/opt/geode-1.14.0/config/gemfire.properties --locators=172.16.234.202[10334],172.16.234.203[10334] --J=-Xmx8g --J=-Xms8g--J=-Xmn2g

后台启动(服务永久存活):
gfsh start server --name=server203 --dir=/opt/geode-1.14.0/bin/server203 --properties-file=/opt/geode-1.14.0/config/gemfire.properties --locators=172.16.234.202[10334],172.16.234.203[10334] --J=-Xmx8g --J=-Xms8g --J=-Xmn2g 2>&1 &
  • 关于数据区域的持久化:
复制区域:
  非持久:REPLICATE
  持久化:REPLICATE_PERSISTENT

分区区域:
  非持久:PARTITION
  持久化:PARTITION_PERSISTENT
  • 关于日志配置
必要属性(gemfire.properties):

#开启度量抓取
statistic-sampling-enabled=true

#抓取频率,单位为毫秒
statistic-sample-rate=1000

#文件存储路径
statistic-archive-file=statics.gfs

#单个文件大小,单位为M
archive-file-size-limit=100

#全体文件大小,单位为M
archive-disk-space-limit=1000

启动命令指定:
--dir=/opt/geode-1.14.0/bin/server203 --properties-file=/opt/geode-1.14.0/config/gemfire.properties
  • 快速启动
编写脚本:startLocator.sh,./startServer.sh

编写过程,指定启动日志:
gfsh start locator --name=locator202 --locators=172.16.234.202[10334],172.16.234.203[10334] --J=-Xmx8g --J=-Xms8g --J=-Xmn2g >startlocator.log 2>&1 &

gfsh start server --name=server202 --dir=/opt/geode-1.14.0/bin/server202 --properties-file=/opt/geode-1.14.0/config/gemfire.properties --locators=172.16.234.202[10334],172.16.234.203[10334] --J=-Xmx8g --J=-Xms8g --J=-Xmn2g >startServer.log 2>&1 &

赋予权限:
  chmod +x startServer.sh
  chmod +x startLocator.sh

调用执行:
  ./startLocator.sh
  ./startServer.sh

附录:

常见术语

English含义
JVMJava虚拟机,Java Virtual Machine
JDKJava Development Kit
IMDGIn-Memory Data Grid, 内存数据网格
GCGarbage Collector/Garbage Collect, JVM中的垃圾回收, 或JVM中的垃圾回收器
Locator集群中的管理节点, 注册客户端和服务器成员,使双方能够互相发现,同时可以提供一定的负载均衡功能
server, server cache,cache server集群中的数据节点,GemFire分布式系统的服务器节点
Node均为GemFire集群的节点, 一般指的是 CacheServer
Member均为GemFire集群的节点, 指的是 Locator 和 CacheServer
Client Cache接入到GemFire分布式系统的客户端,负责管理本地缓存的生命周期
Region, data regionRegion是一个分布式系统之上的抽象概念。一个Region允许你在系统的多个VM中存储数据,不用考虑数据存在那个节点上。Region提供了一个map接口能透明地从合适的VM上获取数据。这个Region类扩展了java.util.Map接口,但是它也支持查询和事务
Replicated Region一个Replicated Region保存着所有分区的数据拷贝
Partitioned RegionPartitioned Regions只保存一部分分区的数据拷贝
GFSH,gfshGemFire SHell,用于管理和监控GemFire的命令控制台
Redundant副本,在GemFire中,Partitioned Region的副本数量范围为0-3个
Primary主数据
Secondary从数据
Network Partitions网络分区,或网络脑裂,指的是一个网络因为网络硬件问题或者其他原因分裂编程两个小的网络
Overflow数据溢出, 指的是把内存持久化到磁盘的操作
Eviction数据逐出,指的是按照LRU算法, 把超出预设数据量,内存堆使用空间之外的数据,持久化到磁盘或者删除的操作
Expiration数据过期或者Region过期,指的是按照预设的TTL(Time-To-Live)时间或者Idle Timeout时间,进行数据删除或者失效的操作
Peer-to-Peer对等式, 指的是各个节点在集群内对等, 没有Locator节点
Client-to-Serve, Client/ServerC/S式,指的是通过客户端连接到服务器端集群中, 一般服务器端集群中部署Locator节点
Multi-Site (WAN)也叫WAN-Gateway,指的是多个集群隔离部署, 但是互相之间可以异步同步消息及数据变化。一般用于多活数据中心场景。
Write-Behind指的是通过异步队列的方式,以高速批处理的方式, 在Geode/GemFire和其他数据存储之间进行数据更新信息的同步
AsyncEventListener异步事件监听器, 用于处理异步事件队列
Delta Propagation变化传播
OQL, Object-Query-Language对象查询语言, Geode支持的一种对象关联查询语言, 只支持Select,不支持insert/update/delete
Continuous Querying, CQ持续查询, 指的是可以注册兴趣(register interests)的方式, 对指定的 region 进行持续的关注, 可以不断获得指定 region 数据变化情况的功能
Entry, Entries, data entry每一个Key/Value对,简称为Entry
FunctionGeode中,类似于Map-reduce方式并行运行的计算功能,允许用户自定义
PDX, PortableDataExchangeGeode自定义的高效,且可变结构的序列化方式
Geode PulseGeode的监控页面, 基于HTML5, 建议使用Chrome或者FireFox浏览
cluster configuration service集群配置服务, 运行在 Locator 之上, 用于管理集群中各节点配置情况的服务

处理丢失的磁盘存储

1. 显示丢失的磁盘存储

使用gfshshow missing-disk-stores命令列出了其他成员正在等待的所有带有最新数据的磁盘存储。

例子:


### Missing Disk Stores

           Disk Store ID             |      Host      | Directory
------------------------------------ | -------------- | -------------------------
9eb7bf36-330b-4c08-995d-a66f745f0fd6 | /192.168.68.21 | /opt/geode_work/server4/.
4a83ec7f-d80c-460e-a315-01948bd4e396 | /192.168.68.20 | /opt/geode_work/server3/.
9eb7bf36-330b-4c08-995d-a66f745f0fd6 | /192.168.68.21 | /opt/geode_work/server4/.
9eb7bf36-330b-4c08-995d-a66f745f0fd6 | /192.168.68.21 | /opt/geode_work/server4/.



No missing colocated region found

💊注意: 您需要连接到 gfsh 中的 Locator 才能运行此命令。

2. 撤销丢失的磁盘存储

本节适用于满足以下两个条件的磁盘存储:

  • 具有一个或多个区域或区域存储桶的最新数据副本的磁盘存储。
  • 不可恢复的磁盘存储,例如当您删除它们时,或者它们的文件已损坏或在发生灾难性故障的磁盘上。

当您无法使最新的持久副本联机时,请使用 revoke 命令告诉其他成员停止等待它。 一旦存储被撤销,系统就会找到剩余的最新数据副本并使用它。

💊注意: 一旦撤销,磁盘存储就不能重新引入系统。

在gfsh中使用 show missing-disk-stores 正确识别您需要撤销的磁盘存储。 revoke 命令将磁盘存储 ID 作为输入,如该命令列出的那样。

例子:

gfsh>revoke missing-disk-store --id=60399215-532b-406f-b81f-9b5bd8d1b55a
Missing disk store successfully revoked
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱游泳的老白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值