geode(一)

来源:互联网 发布:大数据 云计算比较 编辑:程序博客网 时间:2024/06/01 10:16

简述

公司准备使用geode,所以研究一下。
geode由gemfire开源而来的分布式缓存管理平台。

安装

先决条件

  • jdk 1.8以上
  • 统一系统时间戳,分布式环境下的日志、统计和监控
  • 正确配置主机名和host文件,影响gfsh和Pulse功能
  • 关闭SYN cookies 保护,分布式系统会触发这个保护条件
 编辑/etc/sysctl.conf文件 net.ipv4.tcp_syncookies = 0 在命令行中执行sysctl -p命令,重载sysctl.conf文件

安装

确认jdk安装好后,我使用的是源代码安装
下载1.3版本http://geode.apache.org/releases/
下载好源代码后解压到目录
进入目录后执行:

$ ./gradlew build -Dskip.tests=true

执行时间比较漫长。

执行完后,加入环境变量:

export PATH=$PATH:~/workdir/software/apache-geode-1.3.0-src/geode-assembly/build/install/apache-geode/bin/
source .bash_profile
gfsh version
输出结果:

$ gfsh version1.3.0

运行

进入gfsh命令模式

进入gfsh命令前,先选好工作目录,比如在home下建立一个geode_worker的目录,然后cd到这个目录里面执行gfsh,进入gfsh命令行。这样可以让你的geode文件存储在geode_worker工作目录里。当然也可以不这样做!

gfsh

so easy!

运行locator

name参数可以不传,如果不传,则使用随机名

gfsh>start locator --name=locator1Starting a Geode Locator in /Users/sunzuoquan/locator1.......Locator in /Users/sunzuoquan/locator1 on 10.106.3.200[10334] as locator1 is currently online.Process ID: 38535Uptime: 3 secondsGeode Version: 1.3.0Java Version: 1.8.0_121Log File: /Users/sunzuoquan/locator1/locator1.logJVM 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=9223372036854775806Class-Path: /Users/sunzuoquan/workdir/software/apache-geode-1.3.0-src/geode-assembly/build/install/apache-geode/lib/geode-core-1.3.0.jar:/Users/sunzuoquan/workdir/software/apache-geode-1.3.0-src/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jarSuccessfully connected to: JMX Manager [host=10.106.3.200, port=1099]Cluster configuration service is up and running.gfsh>

注意 10.106.3.200[10334]
一个cluster应该有一个locator
connect –locator=localhost[10334]
这个命令可以连接到cluster,确定操作的命令是针对一个cluster的

开启 pulse

是个监控工具。

gfsh>start pulseLaunched Geode Pulse

开始我以为这个命令会开启一个服务,没想到直接给我打开了一个浏览器,直接访问了下面地址:

http://localhost:7070/pulse/login.html
默认用户密码:admin/admin

开启server

name参数可以不传,如果不传则随机。当有多个server时,启动会与其他server同步数据。如果其他server没有启动,则等待。

–J=-DDistributionManager.DISCONNECT_WAIT=
这个参数设置给每个阶段的等待时间

还有一个参数很重要:

–groups=group1
表示server所在的组
启动时如果不加端口参数,则默认使用40404

gfsh>start server --name=server1 --server-port=40411Starting a Geode Server in /Users/sunzuoquan/server1.......Server in /Users/xxx/server1 on 10.106.3.200[40411] as server1 is currently online.Process ID: 38769Uptime: 3 secondsGeode Version: 1.3.0Java Version: 1.8.0_121Log File: /Users/xxx/server1/server1.logJVM Arguments: -Dgemfire.default.locators=10.106.3.200[10334] -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true -XX:OnOutOfMemoryError=kill -KILL %p -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806Class-Path: /Users/xxx/workdir/software/apache-geode-1.3.0-src/geode-assembly/build/install/apache-geode/lib/geode-core-1.3.0.jar:/Users/xxx/workdir/software/apache-geode-1.3.0-src/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar

现在可以看看pulse监控,有什么变化了吗?
会看到有一个节点,这个节点里面有一个locater和一个server,以及他们的名字

可以开启http配置管理

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

远程配置

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

开启server,指定cache配置

start server --name=server1 --mcast-port=10338 \--cache-xml-file=../ServerConfigs/cache.xml --server-port=40404

开启server,使用配置文件

gfsh>start server --name=server1 \--properties-file=D:\gfeserver\gemfire.properties

开启server的相关参数

start server --name=value [--assign-buckets(=value)] [--bind-address=value]    [--cache-xml-file=value] [--classpath=value] [--disable-default-server(=value)]    [--disable-exit-when-out-of-memory(=value)] [--enable-time-statistics(=value)]    [--force(=value)] [--include-system-classpath(=value)] [--properties-file=value]    [--security-properties-file=value]    [--group=value] [--locators=value] [--locator-wait-time=value] [--log-level=value]    [--mcast-address=value] [--mcast-port=value] [--memcached-port=value]    [--memcached-protocol=value] [--rebalance(=value)] [--server-bind-address=value]    [--server-port=value] [--spring-xml-location=value]    [--statistic-archive-file=value] [--dir=value] [--initial-heap=value]    [--max-heap=value] [--use-cluster-configuration(=value)] [--J=value(,value)*]    [--critical-heap-percentage=value] [--critical-off-heap-percentage=value]     [--eviction-heap-percentage=value] [--eviction-off-heap-percentage=value]    [--hostname-for-clients=value] [--max-connections=value]    [--message-time-to-live=value] [--max-message-count=value] [--max-threads=value]    [--socket-buffer-size=value] [--lock-memory=value] [--off-heap-memory-size=value] 

locator 参数格式:locators=host1[9001],host2[9003]

查看状态

gfsh>status server --name=server1gfsh>status locator --name=locator1gfsh>start server --name=server_name --mcast-port=10338 --properties-file=serverConfig/gemfire.properties --security-properties-file=gfsecurity.properties

管理数据

创建一个复制持久化的region

创建

这里的region和关系数据库的表一样理解就好了
创建:注意类型REPLICATE_PERSISTENT,很明显复制+持久化。
也就是说region会复制到其他server,且会被持久化

可以指定组参数,如果没有指定则是所有成员有效
–groups=group1 如果指定了则只对特定的组有效

gfsh>create region --name=regionA --type=REPLICATE_PERSISTENTMember  | Status------- | --------------------------------------server1 | Region "/regionA" created on "server1"

查看服务的region

gfsh>list regionsList of regions---------------regionA

查看cluster的成员

gfsh>list members  Name   | Id-------- | -------------------------------------------------locator1 | 10.106.3.200(locator1:38535:locator)<ec><v0>:1024server1  | 10.106.3.200(server1:38769)<v1>:1025

查看具体信息

注意查询region用describe region ,查询locator或server用describe member

gfsh>describe region --name=regionA..........................................................Name            : regionAData Policy     : persistent replicateHosting Members : server1Non-Default Attributes Shared By Hosting Members Type  |    Name     | Value------ | ----------- | --------------------Region | data-policy | PERSISTENT_REPLICATE       | size        | 0       | scope       | distributed-ackgfsh>describe member --name=locator1Name        : locator1Id          : 10.106.3.200(locator1:38535:locator)<ec><v0>:1024Host        : 10.106.3.200Regions     :PID         : 38535Groups      :Used Heap   : 286MMax Heap    : 3641MWorking Dir : /Users/xx/locator1Log file    : /Users/xx/locator1/locator1.logLocators    : 10.106.3.200[10334]gfsh>describe member --name=server1Name        : server1Id          : 10.106.3.200(server1:38769)<v1>:1025Host        : 10.106.3.200Regions     : regionAPID         : 38769Groups      :Used Heap   : 52MMax Heap    : 3641MWorking Dir : /Users/xx/server1Log file    : /Users/xx/server1/server1.logLocators    : 10.106.3.200[10334]Cache Server InformationServer Bind              : nullServer Port              : 40411Running                  : trueClient Connections       : 0

使用gfsh管理region中的数据

增加数据

gfsh>put --region=regionA --key="1" --value="one"Result      : trueKey Class   : java.lang.StringKey         : 1Value Class : java.lang.StringOld Value   : <NULL>

查询数据

gfsh>query --query="select * from /regionA"Result : trueLimit  : 100Rows   : 2Result------twoone

停止

停止server

再启动查看数据,看看数据是否还存在?

gfsh>stop server --name=server1Stopping Cache Server running in /Users/sunzuoquan/server1 on 10.106.3.200[40411] as server1...Process ID: 38769Log File: /Users/sunzuoquan/server1/server1.log...gfsh>

gfsh>stop server –dir=server2 这个命令也可以停止服务

stop命令也可以停止locator,参数基本和停止server一致

停止集群

gfsh>shutdown –include-locators=true

–include-locators 参数可以停止localtor,如果没有这个参数,则只停止数据节点

–time-out=60 停止的超时时间,避免长时间等待

原创粉丝点击