geode(一)

簡述

公司準備使用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 version
1.3.0

運行

進入gfsh命令模式

進入gfsh命令前,先選好工作目錄,比如在home下建立一個geode_worker的目錄,然後cd到這個目錄裏面執行gfsh,進入gfsh命令行。這樣可以讓你的geode文件存儲在geode_worker工作目錄裏。當然也可以不這樣做!

gfsh

so easy!

運行locator

name參數可以不傳,如果不傳,則使用隨機名

gfsh>start locator --name=locator1
Starting 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: 38535
Uptime: 3 seconds
Geode Version: 1.3.0
Java Version: 1.8.0_121
Log File: /Users/sunzuoquan/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/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.jar

Successfully 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 pulse
Launched 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=40411
Starting 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: 38769
Uptime: 3 seconds
Geode Version: 1.3.0
Java Version: 1.8.0_121
Log File: /Users/xxx/server1/server1.log
JVM 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=9223372036854775806
Class-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=server1

gfsh>status locator --name=locator1

gfsh>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_PERSISTENT
Member  | Status
------- | --------------------------------------
server1 | Region "/regionA" created on "server1"

查看服務的region

gfsh>list regions
List of regions
---------------
regionA

查看cluster的成員

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

查看具體信息

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

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 | data-policy | PERSISTENT_REPLICATE
       | size        | 0
       | scope       | distributed-ack

gfsh>describe member --name=locator1
Name        : locator1
Id          : 10.106.3.200(locator1:38535:locator)<ec><v0>:1024
Host        : 10.106.3.200
Regions     :
PID         : 38535
Groups      :
Used Heap   : 286M
Max Heap    : 3641M
Working Dir : /Users/xx/locator1
Log file    : /Users/xx/locator1/locator1.log
Locators    : 10.106.3.200[10334]


gfsh>describe member --name=server1
Name        : server1
Id          : 10.106.3.200(server1:38769)<v1>:1025
Host        : 10.106.3.200
Regions     : regionA
PID         : 38769
Groups      :
Used Heap   : 52M
Max Heap    : 3641M
Working Dir : /Users/xx/server1
Log file    : /Users/xx/server1/server1.log
Locators    : 10.106.3.200[10334]

Cache Server Information
Server Bind              : null
Server Port              : 40411
Running                  : true
Client Connections       : 0

使用gfsh管理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>query --query="select * from /regionA"
Result : true
Limit  : 100
Rows   : 2

Result
------
two
one

停止

停止server

再啓動查看數據,看看數據是否還存在?

gfsh>stop server --name=server1
Stopping Cache Server running in /Users/sunzuoquan/server1 on 10.106.3.200[40411] as server1...
Process ID: 38769
Log 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 停止的超時時間,避免長時間等待

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章