一、安裝jdk
① :下載jdk ,下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html,下載完成之后使用tar 命令解壓;
② :配置環境變量
修改 /etc/profile
vi /etc /profile
#在末尾追加以下內容
export JAVA_HOME=/root/apps/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
③ :source /etc/profile
④ :檢測是否安裝成功
java -version
二、搭建zookeeper集群
①:下載zookeeper,下載地址http://mirror.bit.edu.cn/apache/zookeeper/
②:解壓 tar -zxvf zookeeper.tar.gz
③:修改zoo.cfg
cp zooo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir= /tmp/zookeeper/data //修改dataDir的目錄
#在zoo.cfg末尾添加以下內容
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
zoo.cfg配置文件詳解:
clientPort:
clientPort這個端口就是客戶端連接Zookeeper服務器的端口,Zookeeper會監聽這個端口接受客戶端的訪問請求;
tickTime
tickTime 是zookeeper中的基本時間單元,代表發送心跳的間隔時間,單位是毫秒;
initLimit
initLimit是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集群中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過5個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務器還沒有收到客戶端的返回信息,那么表明這個客戶端和leader連接失敗。總的時間為:10*2000=20秒;
ataDir
dataDir是zookeeper持久化存放數據存放的目錄;.
syncLimit
Leader和Follower之間發送消息時,請求和應答的時間長度,最長不能超過多少個tickTime的時間長度,默認值為5,所以總的時間為5*2000=10秒;
④:分發zookeeper
使用scp命令將配置好的zookeeper分發到server2 ,server3對應的目錄,如果沒有scp命令,使用 yum install openssl 安裝即可;
scp /root/apps/zookeeper-3.4.14/ root@192.168.1.2:/root/apps/
scp /root/apps/zookeeper-3.4.14/ root@192.168.1.3:/root/apps/
分發完成之后分別在server1,server2,server3的/tmp/zookeeper/data中創建myid文件,然后分別寫入以下內容
echo 1 > /tmp/zookeeper/data/myid
echo 2 > /tmp/zookeeper/data/myid
echo 3 > /tmp/zookeeper/data/myid
注意事項:192.168.1.1對應的是第一台server,所以在192..168.1.1這台server中輸入:echo 1 > /tmp/zookeeper/data/myid,其它同理;跟zoo.cfg配置文件必須相對應
⑥:啟動zookeeper集群:分別在server1s,server2,server3上執行以下命令
cd /root/apps/zookeeper-3.4.14/bin/
./zkServer.sh start
如果使用CRT,可以在view ===> Command Window勾選,然后在Command Window中勾選Send Commands to All Sessions,執行一次命令即可;
⑥:查看zookeeper集群的狀態
./zkServer.sh status //兩個follower 一個leader即集群搭建成功;
三、關於zookeeper命令的介紹
①:連接zookeeper:./zkCli.sh -server 1962.168.1.1
②:使用--help查看幫助文檔
③:查看所有得節點: ls /
④:創建節點:create /zkdemo helloworld (默認創建的是永久的節點,如果想要創建臨時的節點,可以使用 -e )
注意:同級節點必須唯一性,即在同一節點下不可能出現兩個同名的節點;臨時節點下不能創建子節點;
⑤:查看節點信息: get /zkdemo
節點信息詳解:
helloworld -- 節點的數據信息
cZxid -- cZxid指的是節點創建時的事務id. 不變.
ctime - 節點的創建時間. 不變.
mZxid -- 節點最近一次修改的事務id. 包括對本節點數據的修改. 本節點acl的修改,子節點的增加刪除以及子節點acl的修改都不會影響到該值.
mtime -- 節點最近一次修改的時間.
pZxid -- 對子節點最近的一次修改, 包括子節點的增加刪除, 但是子節點的數據修改和acl權限控制,不會影響這個信息.
cversion -- 子節點的版本號, 對子節點的增加和刪除操作, 版本號都會加1.但是子節點的數據和acl修改不會影響這個信息.
ataVersion -- 數據版本.本節點的數據信息每被修改一次, 加1
aclVersion -- acl 版本號. acl指的是對改節點的訪問權限, 每更改一次就加1
ephemeralOwner -- ephemeral節點所屬的客戶端的sessionId. 如果是persist 節點, 則為0
dataLength -- 數據長度
numChildren -- 子節點的數量
⑥:修改節點信息:set /zkdemo zookeeper
get /zkdemo
⑦:刪除節點:
delete /zkdemo