CentOS ZooKeeper install

來源:互聯網
上載者:User

標籤:centos zookeeper install

環境:CentOS 6.7, java version "1.7.0_51, ZooKeeper 3.4.6

環境:CentOS 6.7, jdk 1.7.0_51, ZooKeeper 3.4.6
(可選)建立新使用者

一般我傾向於把需要啟動daemon進程,對外提供服務的程式,即伺服器類的程式,安裝在單獨的使用者下面。這樣可以做到隔離,營運方面,安全性也提高了。

建立一個新的group,

groupadd zookeeperuseradd -g zookeeper zookeeper


1. 單機模式(Standalone mode)單機模式在開發和調試階段很有用。1.1 下載,解壓cd /opt ;mkdir appcd app wget http://archive.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gztar zxf zookeeper-3.4.6.tar.gz


1.2 啟動預設就是單機模式,$ mv conf/zoo_sample.cfg conf/zoo.cfg$ ./bin/zkServer.sh start


1.3 使用java 用戶端串連ZooKeeper$ ./bin/zkCli.sh -server 127.0.0.1:2181然後就可以使用各種命令了,跟檔案操作命令很類似,輸入help可以看到所有命令。


1.4 關閉$ ./bin/zdServer.sh stop


2. 分布式模式(Replicated mode)在生產環境中,要配置成分布式模式,才能發揮威力。ZooKeeper叢集一般被稱為ZooKeeper ensemble,或者  quorum.


2.1 準備3台機器假設有三台機器,hostname和ip對應關係是:192.168.10.80 zk01192.168.10.81 zk02192.168.10.82 zk03ZooKeeper不存在明顯的master/slave關係,各個節點都是伺服器,leader掛了,會立馬從follower中選舉一個出來作為leader.由於沒有主從關係,也不用配置SSH無密碼登入了,各個zk伺服器是自己啟動的,互相之間通過TCP連接埠來交換資料。


2.2 修改設定檔conf/zoo.cfgdataDir=/opt/zookeeper/datadataLogDir=/opt/zookeeper/logsclientPort=2181tickTime=2000initLimit=5syncLimit=2server.1=zk01:2888:3888server.2=zk02:2888:3888server.3=zk03:2888:3888
註:  dataDir:資料目錄  dataLogDir:日誌目錄  clientPort:用戶端串連連接埠  tickTime:Zookeeper 伺服器之間或用戶端與伺服器之間維持心跳的時間間隔,也就是每個   tickTime 時間就會發送一個心跳。    initLimit:Zookeeper的Leader     接受用戶端(Follower)初始化串連時最長能忍受多少個心跳時間間隔數。當已經超過 5個心跳的  時間(也就是tickTime)長度後 Zookeeper 伺服器還沒有收到用戶端的返回資訊,那麼表明這個  用戶端串連失敗。總的時間長度就是 5*2000=10 秒  syncLimit:表示 Leader 與 Follower 之間發送訊息時請求和應答時間長度,最長不能超過多少  個tickTime 的時間長度,總的時間長度就是 2*2000=4 秒。  server.A=B:C:D:其中A 是一個數字,表示這個是第幾號伺服器;B 是這個伺服器的 ip 地址;  C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的連接埠;D 表示的是萬一叢集中的   Leader 伺服器掛了,需要一個連接埠來重新進行選舉,選出一個新的 Leader,而這個連接埠就是用來  執行選舉時伺服器相互連信的連接埠。如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的   Zookeeper 執行個體通訊連接埠號不能一樣,所以要給它們分配不同的連接埠號碼。
2.3 myid檔案要在每台機器的dataDir下,建立一個myid檔案,裡面存放一個數字,用來標識當前主機。echo "1" >> /opt/zookeeper/data/myidecho "2" >> /opt/zookeeper/data/myidecho "3" >> /opt/zookeeper/data/myid


2.4 啟動每台機器zookeeper-3.4.6/bin/zkServer.sh startzookeeper-3.4.6/bin/zkServer.sh startzookeeper-3.4.6/bin/zkServer.sh start


2.5 查看狀態zookeeper-3.4.6/bin/zkServer.sh status


3.使用java用戶端串連ZooKeeper叢集./bin/zkCli.sh -server zk01:2181./bin/zkCli.sh -server zk01:2181./bin/zkCli.sh -server zk01:2181
./zkCli.sh -server 127.0.0.1 2181Connecting to 127.0.0.12015-12-03 16:42:31,452 [myid:] - INFO  [main:[email protected]] - [zk: 127.0.0.1:2181(CONNECTED) 0] ls /     顯示當前資料[test1, zookeeper]
1) 建立節點    格式:create [-s] [-e] path data acl    其中"-s"表示建立一個"有序"節點,"-e"表示建立一個臨時節點.預設為持久性節點 ->create -s /test null  ->create /test null      如下為包括ACL的例子:    ->create -s /test null digest:test:Kk3Nr5X06NH+XdlGMyOrULgK/mo=:rwcda      建立一個path為"/test"的節點,值為"null",ACL授權方式為"digest",其中授權的使用者名稱:密碼為"test:Kk3Nr5X06NH+XdlGMyOrULgK/mo=",ACL的許可權列表為"r""w""c""d""a".    "digest"授權方式表示client方位此節點資料,需要指定使用者名稱和密碼,可以參考zookeeper中DigestAuthenticationProvider.generateDigest(String ipName)方法;通過向此方法指定原始的使用者名稱和密碼即可獲得"digest"之後的字串,比如傳入"test:test",將會得到"test:V28q/NynI4JI3Rk54h0r8O5kMug=",其內部原理是將"密碼"部分進行MD5 + sha1操作.再zkCli.sh指令上你需要傳遞digest之後的字串.    其中ACL的授權方式有很多種,你可以在ZooDefs類中找到更多的資訊.    最後一個參數為許可權列表,r表示"read",w表示"write",c表示"create",d表示"delete",a表示"admin" 2) 擷取節點資料    格式:get path    -> get /test  -e  cZxid = 0x5b  ctime = Mon Sep 16 14:14:06 CST 2013  mZxid = 0x5b  mtime = Mon Sep 16 14:14:06 CST 2013  pZxid = 0x67  cversion = 7  dataVersion = 0  aclVersion = 0  ephemeralOwner = 0x0  dataLength = 2  numChildren = 5      你可以從結果清單中,獲得所有的節點資訊.  3) 查看子節點列表    指令: ls /path4) 設定節點值    格式: set path data [version] -> set /test 1313131 -1      其中值需要為字串,版本號碼可以通過2)中的指令擷取,如果版本號碼為"-1"表示更新時忽略版本校正. 5) 刪除所有節點    格式: rmr path -> rmr /test      將會刪除"/test"以及其下的所有子節點. 6)  設定ACL    格式: setAcl path acl  -> setAcl /test digest:test:Kk3Nr5X06NH+XdlGMyOrULgK/mo=:rwcda      和create指令非常相似.  7) 刪除節點    格式: delete path [version] -> delete /test -1      需要注意的是,如果此path下還有子節點,將導致刪除失敗.這是和"rmr"指令的區別. 8) 添加授權資訊    格式: addauth schema auth -> addauth digest test:test     只有授權之後,才能夠訪問那些具有ACL控制的節點資料.注意"auth"資訊為原始的使用者名稱和密碼,而不是經過DigestAuthenticationProvider簽名之後的.  如果使用了錯誤的授權資訊,可能導致"Authentication is not valid : ".


本文出自 “Miles Away” 部落格,謝絕轉載!

CentOS ZooKeeper install

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.