寫在前面,
由于學習分布式,需要搭建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集群
將壓縮包解壓三分,放在這里面

這面三個腳本一會再說
3.修改配置
首先我們進入文件夾中,進入conf目錄,可以看到

zoo.cfg是沒有,我們需要執(zhí)行
cp zoo_sample.cfg zoo.cfg
需要拷貝一份,
然后修改zoo.cfg中的配置
4.配置文件

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的角色,
我們前面文件夾新建的腳本,

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

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

無法通信,與連接,
加上這一行就可以了
需要安裝包,或者共同交流可以加群:552113611