zookeeper環境的準備
簡介
介紹
- 是什麼
zooKeeper 是一個分佈式的,開放源碼的分佈式應用程序協調服務,爲分佈式提供一致性服務。 - 有什麼用
它提供了分佈式一致性問題解決方案 - 特性
順序一致性、原子性、可靠性、實時性等
原理
zookeeper維護了一套被稱爲znode節點的數據結構,每個節點擁有唯一的id,並且可以存放對應的姓名與數據。
znode節點:
znode節點分爲持久化節點和臨時節點兩大類,分別包含永久(臨時)與順序
watcher通知
zk中節點發生變化會通過watcher對客戶端進行通知
watcher接口:
public interface Watcher {
public interface Event {
public enum KeeperState {
@Deprecated
Unknown (-1),
Disconnected (0),
NoSyncConnected (1),
SyncConnected (3),
AuthFailed (4),
ConnectedReadOnly (5),
SaslAuthenticated(6),
Expired (-112);
}
...
}
服務狀態
LOOKING:集羣中leader機器宕機其他機器會出現該狀態,表示要選取新的leader
FOLLOWING:從機器狀態
LEADING:主機器狀態
OBSERVING:觀察者狀態
集羣選取機制
zookeeper集羣最少要有3臺機器,一主兩從。
leader機器作爲集羣的核心,所有數據都會在此統一,並同步至其他從機器上。
當leader機器宕機時,其他從機器會採取選取機制重新選取leader。
選取機制:投票選舉機制,並依據機器id、最新事務id來判斷選舉機器爲誰。
應用
- 下載
可以去官方網站下載,也可以直接在服務器上下載安裝
1.1 環境
centos7
1.2指令
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz - 啓動
2.1解壓
tar -zxvf xx.gz
2.2配置調整
如果不需要調整,則可跳過本步,拷貝zoo_sample.cfg爲zoo.cfg
cp xx.cfg xxx.cfg
目的:更改zk的日誌與數據存放位置
2.3更改系統環境變量
vi /etc/profile添加:
然後重新加載:source /etc/profileexport ZOOKEEPER_HOME=/home/zookeeper/zookeeper-3.4.9/ export PATH=$ZOOKEEPER_HOME/bin:$PATH export PATH
2.4啓動
進入bin路徑:zkServer.sh start
啓動成功。 - 關於集羣的配置
集羣配置需要調整上述zoo.cfg文件,新增集羣節點:
server.1=xx.xx.xx.xx:2288:3888
server.2=xx.xx.xx.xxx:2289:3889
…
其中2288爲與leader交換信息端口,3888爲leader宕機後選取新leader的端口 - 操作
4.1查詢
進入bin目錄:./zkCli.sh -server 192.168.99.128:2181
ls查看:
創建:create [path]
刪除:delete [path]
刪除文件夾及內容:rmi [path]
等等…