zookeeper 集群安裝和配置
zookeeper 集群安裝和配置
先主要介紹一下zoo.cfg的基本配置。
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data dataLogDir=/datalog clientPort=2181 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
配置的基本信息
tickTime=2000:毫秒級的基本時間單位,其他時間如心跳/超時等都為該單位時間的整數倍;
initLimit=10:tickTime的倍數,表示leader選舉結束后,followers與leader同步需要的時間,leader的數據非常多時或followers比較多,則該值應該適當大一些;
syncLimit=5:tickTime的倍數,表示follower和observer與leader交互時的最大等待時間,只不過是在與leader同步完畢之后,正常請求轉發或ping等消息交互時的超時時間。
clientPort=2181:監聽客戶端連接的服務端口
electionAlg=3:領導選舉算法,默認3。(No Java system property)
dataDir=/data:內存數據庫快照地址,事務日志地址(除非由 dataLogDir 另行指定)
dataLogDir=/datalog:事務日志目錄,可以使用專用的設備,以避免事務日志與快照之間的競爭。
server.x=[hostname]:nnnnn[:nnnnn], etc
集群配置中,在dataDir目錄下必須有一個myid文件,其中的值就是數字x,范圍是1-255。第一個nnnnn是與leader通訊使用,第二個nnnnn是選舉leader使用,electionAlg等于0時不需要此參數。(No Java system property)
在一臺機器上開啟zookeeper的三個實例,其實就是一個偽集群。集群中的三個配置為:
zookeeper實例一:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper-3.4.6-1/data dataLogDir=/zookeeper-3.4.6-1/datalog clientPort=2181 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
zookeeper實例二:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper-3.4.6-2/data dataLogDir=/zookeeper-3.4.6-2/datalog clientPort=2182 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
zookeeper實例三:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zookeeper-3.4.6-3/data dataLogDir=/zookeeper-3.4.6-3/datalog clientPort=2183 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883
其中,
dataDir=/zookeeper-3.4.6-1/data dataLogDir=/zookeeper-3.4.6-1/datalog
該目錄為其實例所在的目錄下。
最后別忘了在dataDir配置的目錄下建立myid文件。好了,集群基本就配置完了。
最后啟動每個zookeeper實例。
如下圖三個zookeeper實例啟動后的狀態:
打開任何一個客戶端,建立znode,如下,
[zk: localhost:2181(CONNECTED) 3] create /zk_test mydata Created /zk_test [zk: localhost:2181(CONNECTED) 4] get /zk_test mydata cZxid = 0x600000004 ctime = Mon Mar 16 17:51:58 CST 2015 mZxid = 0x600000004 mtime = Mon Mar 16 17:51:58 CST 2015 pZxid = 0x600000004 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0 [zk: localhost:2181(CONNECTED) 5]
打開另一個客戶端,如下,
[zk: localhost:2181(CONNECTED) 1] get /zk_test mydata cZxid = 0x600000004 ctime = Mon Mar 16 17:51:58 CST 2015 mZxid = 0x600000004 mtime = Mon Mar 16 17:51:58 CST 2015 pZxid = 0x600000004 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0 [zk: localhost:2181(CONNECTED) 2] ls / [mynode, zookeeper, zk_test] [zk: localhost:2181(CONNECTED) 3]
一個集群就搭建好了。
參考:http://ibruce.info/2014/10/23/zookeeper/
http://greemranqq.iteye.com/blog/2171449
http://www.cnblogs.com/yuyijq/p/3438829.html
==================================END==================================