Zookeeper學習及偽集群搭建

寫在前面,

由于學習分布式,需要搭建zookeeper,單機版就不介紹了,介紹一下集群的搭建,但是本人很窮,只有一臺服務器,就搭建一下偽集群,出了一些問題,特此記錄與分享一下

1.zookeeper

zookeeper是一個開源的分布式協(xié)調(diào)服務,由雅虎創(chuàng)建的,基于Google chubby

是什么

分布式數(shù)據(jù)一致性的解決方案

能做什么

數(shù)據(jù)的發(fā)布訂閱,負載均衡,命名服務,master選舉,分布式隊列,分布式鎖

特性

  • 順序一致性
    嚴格按照請求順序來應用到zookeeper中
  • 原子性
    所有的事務請求的處理結(jié)果在真?zhèn)€集群中的所有機器上的應用情況是一致的,也就是說,要整個集群中的所有機器都成功應用了某一個事務,要么全部不應用
  • 可靠性
    一旦服務器成功的應用了某一個事務,并且響應了客戶端,那么這個數(shù)據(jù)在整個集群中一定是同步并且保留下來的
  • 實時性
    一旦一個事務被成功應用,客戶端就能夠立即從服務端讀取到事務變更后的最新數(shù)據(jù)狀態(tài),(在一段時間內(nèi),近實時)

2.zookeeper集群

有三個角色,leader/follower/observer

leader接受所有follower的提案請求并統(tǒng)一協(xié)調(diào)發(fā)起提案的投票,負責與follower交換數(shù)據(jù)

事務請求唯一的調(diào)度者和處理者,保證集群事務處理的順序性,集群內(nèi)部各個服務器的調(diào)度者

follower:直接為客戶端服務并參與提案的投票,同時與leader進行數(shù)據(jù)交換

observer:直接為客戶端服務,但不參與提案的投票,也與leader數(shù)據(jù)交換,是一種特殊的zookeeper節(jié)點,可以幫助解決zookeeper的擴展性(如果大量客戶端訪問集群,需要增加集群機器數(shù)量,從而導致zookeeper集群的性能,導致zookeeper的寫性能下降,zookeeper的數(shù)據(jù)變更需要半數(shù)以上服務器投票通過,造成網(wǎng)絡消耗增加投票成本)

觀察zookeeper集群中最新的狀態(tài)的變化并將這個狀態(tài)同步到observer中,

增加observer不影響集群中事務處理能力,同時還能提升集群的非事務處理能力

1.zookeeper的集群組成

zookeeper一般都是有2n+1臺

開始搭建

1.下載壓縮包,上傳到服務器

這個可以百度,實在不會,就聯(lián)系我

2.解壓

我自己新建了一個文件夾,zookeeper-cluster,用于存放zookeeper集群

將壓縮包解壓三分,放在這里面


image.png

這面三個腳本一會再說

3.修改配置

首先我們進入文件夾中,進入conf目錄,可以看到


image.png

zoo.cfg是沒有,我們需要執(zhí)行

cp zoo_sample.cfg zoo.cfg

需要拷貝一份,

然后修改zoo.cfg中的配置

4.配置文件

image.png

tickTIme= 2000 zookeeper中最小的時間單位長度

initLimit = 10 follower節(jié)點與leader節(jié)點進行數(shù)據(jù)同步的時間

syncLimit=5 follower節(jié)點與leader節(jié)點之間心跳通信的最大延遲時間

dataDir 表示zookeeper服務器存儲快照文件的目錄

dataLogDir 表示配置zookeeper事務日志的存儲路徑,默認

clientPort 客戶端連接的端口

我們在三個文件夾做同樣的事

,我們需要執(zhí)行三件事
1.修改clientport,因為我們是偽集群,連接的是同一臺服務器,所以需要改變客戶端連接端口,
我的三臺分別是,2182,2181,2183
2.修改dataDir 。這個是存放快照的目錄,還有我們要在這個目錄下新建一個myid文件,在里面分別寫入1,2,3,這個是指定,執(zhí)行這個目錄的zookeeper的id,
3.在配置文件的最后加入

server.1=47.106.64.158:2887:3887

server.2=47.106.64.158:2888:3888

server.3=47.106.64.158:2889:3889

server.4=47.106.64.158:2890:3890

server.id=ip:follow與leader通信的端口:選舉leader時候的端口

分別配置不同的端口,以防同一臺服務器出現(xiàn)端口占用的問題,

還需要添加一行

quorumListenOnAllIPs=true

先加上,功能后面說

這樣,我們就做好了集群,

我們就可以通過命令啟動
進入zookeeper的bin目錄下
./zkServer.sh start啟動
每個都啟動之后,即可在bin目錄下./zkServer.sh status查看該節(jié)點是follower還是leader,
每次啟動比較麻煩。

我們可以自己寫個簡單的腳本,啟動多個zookeeper實例,和查看zookeeper的角色,
我們前面文件夾新建的腳本,


image.png

將這個文件,賦可執(zhí)行的權(quán)限,chmod 777 文件,就可以執(zhí)行
查看也是一樣,


image.png

錯誤處理

前面還說了加了一行,是因為,沒加,會出現(xiàn)
無法連接的錯誤
我們查看bin目錄下的zookeeper.out日志文件


image.png

無法通信,與連接,
加上這一行就可以了

需要安裝包,或者共同交流可以加群:552113611

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容