ZOOKEEPER基礎
搞數據開發的對一些產品非常熟悉,比如:
- HBase
- Hadoop
- …
但是對它們背后共同的“男人”沒有太多的了解,太不應該了。這篇是一個基礎的介紹,看完之后應該會對ZOOKEEPER有大概了解。
安裝部署
在這里下載包,放到你喜歡的目錄解壓縮:
sudo tar -zxvf zookeeper-3.4.7.tar.gz
配置信息在conf/zoo.cfg中(可以在zoo_sample.cfg中看到),常用的幾個設置項如下(更多看這里):
配置 | 作用 |
---|---|
tickTime | 客戶端和服務器之間的心跳間隔(毫秒) |
initLimit | FOLLOWER與LEADER初始連接的最大延遲心跳數 |
syncLimit | FOLLOWER與LEADER請求應答的最大延遲心跳數 |
dataDir | 數據文件目錄 |
dataLogDir | 日志文件目錄 |
clientPort | 客戶端連接端口 |
配置安成以后使用命令啟動(standalone模式):
./bin/zkServer.sh start
查看zookeeper的狀態(看看起來沒):
./bin/zkServer.sh start
當然也可以用客戶端試一下能不能連上:
./bin/zkCli.sh 或者 ./bin/zkCli.sh -server 127.0.0.1:2181
現在還是單個節點,離集群還差很多,怎么辦?暫時沒有很多機器,在單機上搞“偽集群”應該還是簡單的,這樣和真正的集群差的不是太多了。剛開始看這里感覺沒啥問題,但是有點煩,于是看下./bin/zkServer.sh的代碼:
if [ "x$2" != "x" ] then ZOOCFG="$ZOOCFGDIR/$2" fi
果然是可以指定配置文件的,于是創建文件./conf/zoo_1.cfg,內容如下:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper/1 # 新建個目錄 clientPort=3181 # 注意端口不要沖突 server.0=127.0.0.1:2008:6008 server.1=127.0.0.1:2007:6007
當然需要對原來的./conf/zoo.cfg做一點小修改:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper/0 # 新建個目錄 clientPort=2181 # 注意端口不要沖突 server.0=127.0.0.1:2008:6008 server.1=127.0.0.1:2007:6007
后面放的是ZK的服務器列表(每個節點上的列表都是一樣的),格式如下:
server.[myId]=[IP地址][通信端口][選舉端口]
另外需要寫入myid:
echo '0' > /tmp/zookeeper/0/myid echo '1' > /tmp/zookeeper/1/myid
現在可以啟動了:
./bin/zkServer.sh start ./conf/zoo.cfg ./bin/zkServer.sh start ./conf/zoo_1.cfg
再用命令查看狀態顯示Mode: follower,啟動成功(STOP的時候也需要指定配置文件)。
來自:http://wsztrush.github.io/編程技術/2015/12/22/ZOOKEEPER-BASIC.html