CAP:java
BASE:node
保證分佈式系統的一致性多種協議:算法
HDFS/HBase, Zookeeper:apache
三種部署方式:單機模式、僞分佈式模式、分佈式模式vim
安裝jdk服務器
# yum install java-1.7.0-openjdk-devel -y # vim /etc/profile.d/java.sh export JAVA_HOME=/usr # . /etc/profile.d/java.sh # java -version
~]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz ~]# mkdir /data/zookeeper/ -pv ~]# tar xf zookeeper-3.4.9.tar.gz -C /usr/local/ ~]# cd /usr/local/ local]# ln -sv zookeeper-3.4.9 zookeeper local]# cd zookeeper/conf/ conf]# cp zoo_sample.cfg zoo.cfg conf]# vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper clientPort=2181 #maxClientCnxns=60 server.1=192.168.0.17:2888:3888 #autopurge.snapRetainCount=3 #autopurge.purgeInterval=1 conf]# cd ../bin/ bin]# ./zkServer.sh start
~]# telnet localhost 2181 ruok stat srvr conf cons wchs envi ...
~]# cd /usr/local/zookeeper/bin/ bin]# ./zkCli.sh create ls ls2 stat delete rmr get set ...
基本配置參數: clinetPort=2181 dataDir=/data/zookeeper dataLogDir:事務日誌文件路徑; tickTime 存儲配置參數: preAllocSize:爲事務日誌預先分配的磁盤空間量,默認65535KB snapCount:每多少次事務後執行一次快照操做,每事務的平均大小在100字節左右 autopurge.snpRetainCount:保留自動快照數 autopurge.purgeInterval:自動purge操做的時間間隔,0表示不啓動 fsync.warningthiresholdms:zk進行事務日誌的fsync操做時消耗的時長報警閾值 weight.X=N:判斷quorum時投票權重,默認爲1 網絡配置參數: maxClientCnxns:每客戶端IP的最大併發鏈接數 clientPortAddress:zk監聽的IP地址 minSessionTimeout:會話的最短超時時長 maxSessionTimeout:會話的最大超時時長 集羣配置參數: initLimit:Follower連入Leader並完成數據同步的時長 syncLimit:心跳檢測的最大延遲 leaderServers:默認zk的leader接受讀寫請求,額外還要負責協調各Follower發來的事務等,所以,爲使得Leader集中處理zk集羣內部信息,建議不讓Leader直接提供服務 cnxTimeout:Leader選舉期間,各服務器建立TCP鏈接的超時時長 ellectionAlg:選舉算法,目前僅支持FastLeaderElection算法一種 server.id=[hostname]:port:port[:observer]:集羣內各服務器的屬性參數 第一個port:follwer與leader進行通訊和數據同步時所使用的端口 第二個port:leader選舉時使用的端口 observer:定義指定的服務器爲observer
###############node01:############### ~]# echo 1 > /data/zookeeper/myid ~]# vim /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper clientPort=2181 server.1=192.168.0.17:2888:3888 server.2=192.168.0.18:2888:3888 server.3=192.168.0.19:2888:3888 ~]# /usr/local/zookeeper/bin/zkServer.sh start
###############node02:############### ~]# echo 2 > /data/zookeeper/myid ~]# vim /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper clientPort=2181 server.1=192.168.0.17:2888:3888 server.2=192.168.0.18:2888:3888 server.3=192.168.0.19:2888:3888 ~]# /usr/local/zookeeper/bin/zkServer.sh start
###############node03:############### ~]# echo 3 > /data/zookeeper/myid ~]# vim /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper clientPort=2181 server.1=192.168.0.17:2888:3888 server.2=192.168.0.18:2888:3888 server.3=192.168.0.19:2888:3888 ~]# /usr/local/zookeeper/bin/zkServer.sh start
注意:運行爲集羣模式時,每一個節點在其數據目錄中應該有一個myid文件,其內容僅爲server的id網絡