ZooKeeper
ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。(百度百科)
1、下載與解壓
下載:apache-zookeeper-3.5.5.tar.gz
解壓:tar -xzvf apache-zookeeper-3.5.5.tar.gz -C /usr/local/zookeeper
進入:cd /usr/local/zookeeper/apache-zookeeper-3.5.5/
目錄:
命令:
2、啟動
2.1、單個節點啟動
2.1.1、配置
cat conf/zoo.cfg
dataDir=/var/zookeeper
clientPort=2181
2.1.2、啟動
bin/zkServer.sh start
查看進程:
未發現服務成功啟動!查看日志如下:
cat logs/zookeeper-root-server-localhost.out
錯誤: 找不到或無法加載主類 org.apache.zookeeper.server.quorum.QuorumPeerMain
查看cat README.md文件:需要mvn打包源碼生成jar包,注意跳過測試類(太耗時!)
mvn clean install -DskipTests
再次啟動:
bin/zkServer.sh start
2.1.3、客戶端連接
連接服務端:
bin/zkCli.sh -server localhost:2181
查看節點:
[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]
創建節點:
[zk: localhost:2181(CONNECTED) 5] create /zk_test my_data
Created /zk_test
[zk: localhost:2181(CONNECTED) 6] ls /
[zk_test, zookeeper]
[zk: localhost:2181(CONNECTED) 7] get /zk_test
my_data
修改節點:
[zk: localhost:2181(CONNECTED) 8] set /zk_test junk
[zk: localhost:2181(CONNECTED) 9] get /zk_test
junk
刪除節點:
[zk: localhost:2181(CONNECTED) 11] delete /zk_test
junk
2.2、多個節點啟動
2.2.1、配置
序號 |
服務與端口 |
數據目錄 |
|
1 |
192.168.220.13:2181 |
/var /zookeeper |
|
2 |
192.168.220.14:2181 |
/var /zookeeper |
|
3 |
192.168.220.15:2181 |
/var /zookeeper |
|
zoo.cfg配置文件:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/var/zookeeper # the port at which the clients will connect clientPort=2181
server.1=192.168.229.13:2888:3888 server.2=192.168.229.14:2888:3888 server.3=192.168.229.15:2888:3888
# the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 |
分別在每個服務器/var /zookeeper下創建myid文件,內容如下:
1,2,3(對應zoo.cfg中的server.x)。
端口說明:
1、2181:對cline端提供服務
2、3888:選舉leader使用
3、2888:集群內機器通訊使用(Leader監聽此端口)
zk各節點防火牆設置:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT |
2.2.2、啟動
登錄各節點啟動服務:bin/zkServer.sh start
節點操作:bin/zkCli.sh -server 192.168.229.13:2181
[zk: 192.168.229.13:2181(CONNECTED) 5] ls /
[admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
[zk: 192.168.229.13:2181(CONNECTED) 6] create /zk_test zk_test_data
Created /zk_test
[zk: 192.168.229.13:2181(CONNECTED) 7] ls /
[admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zk_test, zookeeper]
[zk: 192.168.229.13:2181(CONNECTED) 8] get /zk_test
zk_test_data
[zk: 192.168.229.13:2181(CONNECTED) 9] set /zk_test my_data
[zk: 192.168.229.13:2181(CONNECTED) 10] get /zk_test
my_data
[zk: 192.168.229.13:2181(CONNECTED) 11]