zk集羣搭建
----------------------
1.myid文件
a.[${zk_home_data}/myid]
1 //1~255
b.[zoo.cfg]
tickTime=2000
dataDir=/disk1/zookeeper
dataLogDir=/disk2/zookeeper
clientPort=2181
initLimit=5 //初始化同步時間數
syncLimit=2 //發送消息到接收確認的時間差。
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
2.流程
zk server啓動時,讀取${zk_data}/myid文件,以便確定是哪一個服務器,
之後在讀取zoo.cfg配置文件,以便決定自己使用哪些端口和其他的zk服務器端口。
客戶端連接時,需要使用地址的組合 ip1:2181,ip2:2181,ip3:2181,...
僞分佈式zk集羣
------------------------
1.創建三個配置文件(cp zoo.cg----> zoo1.cg---->zoo2.cg----->zoo3.cg三個文件然後配置一下內容)
a.[onf/zoo1.cfg]
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
a.conf/zoo2.cfg
dataDir=/home/ubuntu/zk/data2
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
a.conf/zoo3.cfg
dataDir=/home/ubuntu/zk/data3
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
(也就是在zk目錄下創建data1、data2、data3目錄,再往data目錄裏面追加:echo 1>>myid 三個文件都追加一遍),形式如下:
2.創建每個服務器myid文件
${zk_data}/zoo1/myid //1
${zk_data}/zoo2/myid //2
${zk_data}/zoo3/myid //3
3.分別啓動zkServer.sh start zoo1.cfg
4.查看服務器的狀態
$>zkServer.sh stauts
leader | follwer
---------------------------------------------------
配置hadoop的namenode的ha的自動failover
1、自動容災需要引入兩個組件
zk的Quorum
zk的ZKFC(zookeeper Failover controller)
2、組件
Failure detection:故障檢測,每個nn都和zk連接,如果主機故障,session過期,通知其他的nn觸發容災機制
Active NameNode election:
活動nn推選,由zk推選一個nn,作爲active節點
zkfc是zk的新組件,監控並管理nn的狀態,每個nn節點都運行了zkfc進程
zkfc進程負責如下工作:
1、監控:週期性ping處理,如果遇到異常情況,健康監視器標誌不監控狀態
2、zookeeper session management:
session管理
3、Zookeeper-based election
3、Deploying Zookeeper
部署zk,有zk的進程是輕量級的,可以將zk配置到nn節點上