1? Zookeeper基本框架
Zookeeper集群主要角色有Leader,Learner(Follower,Observer(當服務器增加到一定程度,由于投票的壓力增大從而使得吞吐量降低,所以增加了Observer。)以及client:
Leader:領導者,負責投票的發起和決議,以及更新系統狀態
Follower:接受客戶端的請求并返回結果給客戶端,并參與投票
Observer:接受客戶端的請求,將寫的請求轉發給leader,不參與投票。Observer目的是擴展系統,提高讀的速度。
Client:客戶端,想Zookeeper發起請求。
Zookeeper的基本框架圖如下
1.2 zookeeper集群節點個數
zookeeper節點部署的越多,服務的可靠性也就越高。當然建議最好是部署奇數個,偶數個不是不可以。但是zookeeper集群是以宕機個數過半才會讓整個集群宕機的,所以奇數個集群更佳,最好部署3,5,7個zookeeper節點。本次實驗我們是以3個節點進行(centos6)。
二、zookeeper安裝
2.1安裝jdk
2.2安裝zookeeper
[root@localhost ~]# cd /usr/local/
[root@localhost local]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
[root@localhost local]# tar -xf zookeeper-3.4.8.tar.gz && rm -rf zookeeper-3.4.8.tar.gz && mv zookeeper-3.4.8 zookeeper && cd zookeeper && cp conf/zoo_sample.cfg conf/zoo.cfg
把zookeeper加入到環境變量,如下:
[root@localhost zookeeper]# vim /etc/profile
執行source命令使剛剛修改的環境生效,如下:
[root@localhost zookeeper]# source /etc/profile
[root@localhost zookeeper]# env
2.3修改zookeeper配置文件
[root@localhost zookeeper]# vim /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
server.1= 192.168.1.2:2888:3888
server.2= 192.168.1.3:2888:3888
server.3= 192.168.1.4:2888:3888
clientPort=2181
配置文件參數說明:
tickTime這個時間是作為zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是說每個tickTime時間就會發送一個心跳。
initLimit這個配置項是用來配置zookeeper接受客戶端(這里所說的客戶端不是用戶連接zookeeper服務器的客戶端,而是zookeeper服務器集群中連接到leader的follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。
當已經超過10個心跳的時間(也就是tickTime)長度后 zookeeper 服務器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗。總的時間長度就是 10*2000=20秒。
syncLimit這個配置項標識leader與follower之間發送消息,請求和應答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是5*2000=10秒。
dataDir顧名思義就是zookeeper保存數據的目錄,默認情況下zookeeper將寫數據的日志文件也保存在這個目錄里;
clientPort這個端口就是客戶端連接Zookeeper服務器的端口,Zookeeper會監聽這個端口接受客戶端的訪問請求;
server.A=B:C:D中的A是一個數字,表示這個是第幾號服務器,B是這個服務器的IP地址,C第一個端口用來集群成員的信息交換,表示這個服務器與集群中的leader服務器交換信息的端口,D是在leader掛掉時專門用來進行選舉leader所用的端口。
2.4創建相關目錄
[root@localhost zookeeper]# mkdir -p /usr/local/zookeeper/{data,logs}
2.5創建ServerID標識
除了修改zoo.cfg配置文件外,zookeeper集群模式下還要配置一個myid文件,這個文件需要放在dataDir目錄下。
這個文件里面有一個數據就是A的值(該A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路徑中創建myid文件。
在192.168.1.2服務器上創建myid文件,并設置為1,同時與zoo.cfg文件里面的server.1對應,如下:
echo "1" > /usr/local/zookeeper/data/myid
在192.168.1.3服務器上創建myid文件,并設置為2,同時與zoo.cfg文件里面的server.2對應,如下:
echo "2" ?> /usr/local/zookeeper/data/myid
在192.168.1.4服務器上創建myid文件,并設置為2,同時與zoo.cfg文件里面的server.2對應,如下:
echo "3" > /usr/local/zookeeper/data/myid
三、啟動zookeeper,查看集群
啟動:
[root@localhost zookeeper]# bin/zkServer.sh start
注意:在啟動第一臺zookeeper的時候可能會報錯,等三臺zookeeper全部啟動完成之后就不會報錯了。
查看狀態:
[root@localhost zookeeper]# bin/zkServer.sh status
四、連接zookeeper集群
[root@localhost zookeeper]# bin/zkCli.sh -server 192.168.1.3:2181
安裝完成。。。