2013年3月28日 星期四

gemfire 安裝

gemfire安裝上~ 其實非常的簡單~
偶這是安裝在ubuntu server 12上, 其實win也是很像~ 比hadoop還簡單一u一...
有收錢跟沒收錢的還是有差~~

首先安裝SUN JDK...並記錄一下JAVA_HOME的位置~
###install sun jdk
cd /etc
su
mkdir jdk
cd jdk
cp /home/administrator/Downloads/jdk-6u32-linux-x64.bin .
chmod 755 jdk-6u32-linux-x64.bin
./jdk-6u32-linux-x64.bin

從官網下載gemfire包~ 傳到主機上~
###install gemfire
#download gemfire (ex:vFabric_GemFire_70_b38623.zip)
#upload file to ap
#create work dir (change folder owner first~) (ex: /etc/gemfire)
#cp gemfire and unzip here

總之~ 解壓縮做完~ 就是開始做路徑設定~ 我是有啟用gfsh...
###active gfsh
cd /etc/gemfire/vFabric_GemFire_70/bin
vim gfsh
##add
JAVA_HOME=/etc/jdk/jdk1.6.0_32/
##append jars (如果不跑練習的話~ 就可以不用SampleCode的jar)
:$GEMFIRE/lib/commons-logging.jar
:$GEMFIRE/lib/gfSecurityImpl.jar
:$GEMFIRE/lib/jackson-core-asl-1.9.9.jar
:$GEMFIRE/SampleCode/quickstart/classes
:$GEMFIRE/SampleCode/tutorial/classes

另外他原本的shell~ 反正~ 如果有用到跑不起來~ 就都去設個JAVA_HOME或是xxx_HOME之類的~就是了一_一"...都是java程序配shell

以上這樣子~ 其實基本安裝就完成了!!

接著設定locator, server的位置
(主要這邊是放gemfire 系統log, 跟gemfire server的工作路徑~ 是可以隨便指定啦~ 但是一堆檔會亂七八糟~ 所以我後來都有弄地方給他們住)
我是以 /etc/gemfire/vFabric_GemFire_70 為管理的目錄來做~
cd /etc/gemfire/vFabric_GemFire_70
###create locator1 folder
mkdir locator1

###create server1 folder
mkdir server1

再來就是掛上自己寫的程式與設定...因為我後來一台機器有起N個Node(所以才叫server1, server2...)...為了佈署方便~ 所以也掛在管理的目錄底下
cd /etc/gemfire/vFabric_GemFire_70
###create my lib folder
mkdir libs

#install my libs
cp ~/xxxx.jar libs

除了程式jar檔之外~ 還有眾多設定檔~ 那~ 當gemfire server起來時~工作路徑classpath在那呢~ 噹噹~ 就是上面開的server1啦~~
cd /etc/gemfire/vFabric_GemFire_70
###install properties(include log4j/myproerties/gemfire properties)
cp ~/*.properties server1

布署gemfire server xml~ 這個server xml的位置是可以自己指定位置的~ 不過我習慣把他放在server/xml下, 以做區別(他這個server的細部設定~ 可以從程式init~ 也可從xml init...兩邊可以做的事情是一模一樣的~ 像hibernate一樣~ 只不過寫在xml裡~ )
cd /etc/gemfire/vFabric_GemFire_70
###install gemfire server properties
cp ~/xxx_server.xml server1/xml

簡單的說~ 該上去的檔都好了~ 可以啟動Server了~

使用的架構上~ 有使用locator...locator預設port就是10334...不過值寫清楚比較不會亂~
cd /etc/gemfire/vFabric_GemFire_70 
###start locator
bin/gfsh start locator --name=locator1 --port=10334

耐心等待~ 過一陣子~ 有成功的話就會寫xxxx running...
理論上, 在這就可以去locator1 folder裡面看到~ 生出了log, 幾個file...log可以殺~ 但是其他的檔不能殺~ 這些是他判定server狀態的檔...
啟動失敗有錯的話~ 就是看log才知道是怎麼了~Orz...console上只會顯示xxx Fail ...stop running...類似的字樣

locator起好後~ 起server
cd /etc/gemfire/vFabric_GemFire_70
###start cacheserver
bin/cacheserver start -classpath="../libs/mylib-1.0.jar:../libs/mylib2-1.0.jar" locators=localhost[10334] mcast-port=0 cache-xml-file=../server1/xml/xxx_server.xml -server-port=0 -dir=server1

有起來的話~ 他也會寫xxx running...失敗的話~ 會再多一行...xxx stop running...
import 自訂libs..在-classpath裡面加(其實偶實際用到是一拖拉庫~)
指定locators, 就是指到前面的locator1, 同一台可用localhost, 不同台打ip...
cache-xml-file, 指定gemfire server xml位置~
dir, 指定該server的工作路徑~
注意一下~ 路徑上除了dir外, 都是以bin路徑做相對路徑的撰寫...
cacheserver還有其他的參數可以定~

這個shell會長很大(因為要import的lib太多)~ 所以後面都是寫成一個shell..不然每次貼很麻煩~~

一個cacheserver就是一個node(也是一個java VM)...所以多個node就是多個server的意思~ locator主要只是紀錄叢集的登錄者~ 他只記有那台server有串連~ 或是提供給client一個統一的連結入口~
locator並不是一定要存在~ 單一node其實可以不需要locator就能讓系統運作~~

如果要起多個node指向同一份jar就是小改一下就好~~設定檔我習慣就是大家own自己的~
bin/cacheserver start -classpath="../libs/mylib-1.0.jar:../libs/mylib2-1.0.jar" locators=localhost[10334] mcast-port=0 cache-xml-file=../server2/xml/xxx_server.xml -server-port=0 -dir=server2

多個node要注意的是~ gemfire server xml的內容設定必須一模一樣!!!!...不然他會生氣錯亂就起不起來了XD...可是lib不一樣他不會叫喔XD...所以可以搞成~ 同一份的儲存形態~ 但是用不同的程式算XDXD"...(通常是多台先找一台來試~ 或是寫log...一台單測OK了才全換)

gemfire有個優點就是可以online擴充...在多node的時候~ 隨便換其中一個node下上~ 並不會影響整體的資料異動與運作~ 所以可以維持在資料不動的情況~ 抽換演算法(debug時算好用~ 不然去重倒一次資料超麻煩的...)

shutdown的方式如下~如果有指定資料夾就很方便
###shutdown server
bin/cacheserver stop -dir=server1

如果沒指定資料夾~ 就得找出他的pid...pid在他server生出來的pid檔裡~cat 一下就可以看到id(java程序id, 每次都會換的)
###shutdown server by pid
bin/gfsh stop server --pid=1564

停止locator我是用這樣, 去查locator1底下的pid檔~ 再關~(locator幾乎不會死~ 而且他也不用動內容~ 偶爾手動關是沒差)
###shutdown locator by pid
bin/gfsh stop locator --pid=1676

不過之前也有亂搞到~ 怎麼停也停不掉~
反正~ 最後還有reboot大法!!!
不過資料就會掉了XD(有加設定的話是會回存啦~)

沒有留言: