僞分佈式集羣:在一臺Server中,啓動多個ZooKeeper的實例。apache
下面來看看zookeeper怎麼進行安裝的吧。vim
選擇一個穩定版本進行下載,我這裏下載的是zookeeper-3.4.6版本。服務器
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/conf #複製三份zookeeper配置文件 cp zoo_sample.cfg zoo1.cfg cp zoo_sample.cfg zoo2.cfg cp zoo_sample.cfg zoo3.cfg
#zoo1.cfg tickTime=2000 dataDir=/usr/local/zookeeper-3.4.6/data/zk1 clientPort=2181 initLimit=10 syncLimit=5 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883 #zoo2.cfg tickTime=2000 dataDir=/usr/local/zookeeper-3.4.6/data/zk2 clientPort=2182 initLimit=10 syncLimit=5 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883 #zoo3.cfg tickTime=2000 dataDir=/usr/local/zookeeper-3.4.6/data/zk3 clientPort=2183 initLimit=10 syncLimit=5 server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883
解釋:分佈式
dataDir定義zookeeper實例存儲持久出具的本地文件系統位置spa
clientPort定義zookeeper客戶端鏈接zookeeper服務端時使用的端口日誌
server定義zookeeper集羣的各個實例的ip和端口server
tickTime進程
指定了zookeeper中的基本時間單元(以毫秒爲單位)ip
zookeeper集羣中,每一個服務器都有一個id(數字),服務器id在集羣中是惟一的,而且取值範圍是1~255,經過一個名爲myid的純文本設置,這個文件保存在dataDir中get
server.n=hostname:port:portn是服務器id,第一個port是follower用來鏈接leader的端口,第二個port是用於leader選舉
clientPort監聽client鏈接的端口號
initLimit設定了全部follower與leader進行鏈接並同步的時間範圍。若是在設定的時間段內,半數以上的follower跟隨者未能完成同步,leader會宣佈放棄領導地位,而後進行另一次leader選舉,若是這種狀況常常發生,則代表設定的值過小
syncLimit設定了容許一個follower與leader這進行同步的時間。若是在設定的時間段內,一個follower未能完成同步,會本身重啓,全部關聯到follower的客戶端將鏈接到另外一個follower
建立dataDir和實例id文件 mkdir -p /usr/local/zookeeper/zk1/data mkdir -p /usr/local/zookeeper/zk2/data mkdir -p /usr/local/zookeeper/zk3/data #zoo1.cfg vim /usr/local/zookeeper/zk3/data/myid #輸入1 #zoo2.cfg vim /usr/local/zookeeper/zk3/data/myid #輸入2 #zoo3.cfg vim /usr/local/zookeeper/zk3/data/myid #輸入3
bin/zkServer.sh start ../conf/zoo1.cfg bin/zkServer.sh start ../conf/zoo2.cfg bin/zkServer.sh start ../conf/zoo3.cfg #查看zookeeper 服務角色狀態,[follower,leader] bin/zkServer.sh status ../conf/zoo1.cfg bin/zkServer.sh status ../conf/zoo2.cfg bin/zkServer.sh status ../conf/zoo3.cfg
jps
看到相似下面的進程就表示3個實例均啓動成功
13419 QuorumPeerMain
13460 QuorumPeerMain
13561 Jps
13392 QuorumPeerMain
若是未成功啓動,能夠到zookeeper.out文件中查看啓動失敗的日誌信息。
./zkCli.sh -server 127.0.0.1:2181
bin/zkServer.sh stop ../conf/zoo1.cfg bin/zkServer.sh stop ../conf/zoo2.cfg bin/zkServer.sh stop ../conf/zoo3.cfg