html
前提:先安裝jdk,zookeeper運行依賴於java環境。
(1.)下載安裝包java
http://mirror.bit.edu.cn/apache/zookeeper https://zookeeper.aphache.org
(2.)解壓文件apache
tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/ mv /usr/local/zookeeper-3.4.13.tar.gz /usr/local/zookeeper //便於記憶,重命名
(3.)編輯配置文件vim
cd zookeeper-3.4.13/conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg dataDir=/tmp/zookeeper/data //修改成本身建立的目錄,臨時目錄存放數據不安全 dataLogDir=/tmp/zookeeper/log
集羣場景配置安全
若是想配置集羣的話,請zoo.cfg文件的clientPort下面添加服務器的ip。如
server.1=192.168.180.132:2888:3888 //這裏是1,2,3 就是myid的對應的服務器編號,前面的2888端口用於和leader交換數據的,用於同步副本通訊的端口
server.2=192.168.180.133:2888:3888 // 後面這個3888端口用於選舉的,在選主的時候用這個端口進行通訊
server.3=192.168.180.134:2888:3888
若是電腦內存比較小,zookeeper還能夠設置成僞集羣。也就是所有服務器採用同一個ip,可是使用不一樣的端口。服務器
若是是配置集羣,還須要在前面配置過的dataDir路徑下新增myid文件,在data目錄下建立文件,文件名爲「myid」, 編輯該「myid」文件,並在對應的IP的機器上輸入對應的編號。
如在192.168.180.132上,「myid」文件內容就是1。在192.168.180.133上,內容就是2。
cd /tmp/zookeeper/data
touch myid
vim myid數據結構
(4.)設置環境變量負載均衡
vi /etc/profiel ZOOKEEPER_HOME=/usr/local/zookeeper/ PATH=$PATH:$ZOOKEEPER_HOME/bin source /etc/profile
(5.)zookeeper啓動分佈式
zkServer.sh start //單機模式 zkServer.sh start zoo1.cfg //僞集羣分佈式模式
(6.)進程查看oop
jps
(7.)客戶端的啓動
zkcli.sh //啓動客戶端 ls /path //查看當前節點中所包含的內容 ls2 / //查看詳情 create /path "xxx" //建立普通節點 create -e /path1/path2/xxx "xxx" //建立臨時節點 create -s /path1/path2 "xxx" //建立帶序列號的節點,即自增節點 get /path //獲取數據 set /path1/path2 "yyy" //修改數據 get /path1/path2 watch //節點值變化監聽 ls /path1 watch //路徑變化監聽,註冊時執行一次,即只執行一次 quit //退出
(1.) 半數機制:半數以上工做正常,適合奇數安裝。初始化時的選舉,就採用該種方式。
(2.) 選舉時先投本身,不能成爲master後,再投給節點數比本身大的節點。
(1.)持久型:client與server斷開鏈接後,建立的節點不刪除,序列號順序編號,單調遞增。
(2.)臨時型:clent與Server斷開鏈接後,建立的節點本身刪除,節點順序編號。
xsync zookeeper/xxx //同步後,其餘節點也有該文件夾
(1.)統一配置管理:
分佈式環境下,配置文件同步:
a. 集羣中全部節點的配置信息一致,如kafka集羣
b. 對配置文件修改後,能夠快速的同步到其餘各個節點上。
配置管理可交給zookeeper實現:
c. 可將配置信息寫入zookeeper的一個節點上。
d. 各個客戶端監聽這個節點,一旦節點中的數據被修改,zookeeper將通知各個客戶端,同步數據
(2.) 統一命名服務:
域名 --> 多個IP
(3.)統一集羣管理
a.分佈式環境中,實現掌握各個節點的狀態,可根據節點的實施狀態,作出一些調整
b.zookeeper 能夠實現實時監控節點狀態變化,可將節點信息寫入zookeeper的一個節點,監聽這個節點可獲取它的實時狀態變化。
(4.)服務器動態上下線
客戶端實時洞察服務器上下線變化,若是該節點掛掉則訪問其餘節點
(5.)軟負載均衡
在zookeeper中記錄每臺服務器的訪問數,讓訪問數最少的服務器去處理最新的客戶端請求。
(1.)樹狀存儲
(2.)默認每一個節點只能存儲1M數據
(3.)按路徑訪問
(1.)zookeeper = 文件系統 + 通知機制
(2.)zookeeper 一個leader,N個follower
(3.)集羣中只要有半數 以上節點存活,則zookeeper集羣能夠正常服務
(4.)全局數據一致:每一個server保存一份相同的數據的副本,客戶端不管連到哪一個服務端,數據都是一致的。
(5.)數據更新的原子性,一次數據更新要麼成功,要麼失敗
(6.)實時性,在必定時間內能夠獲取最新的數據
(7.)zookeeper監聽服務端下線原理:
服務端啓動時,去註冊信息到zookeeper,客戶端獲取在線服務列表,並註冊監聽。當服務器節點下線時,zookeeper推送服務端下線的事件給客戶端,客戶端接收到通知後,從新獲取服務器列表,並註冊監聽。
———————————————————————————————————————————————————————————
http://kafka.apache.org/downloads.html
tar -zxvf kafka_2.11-2.0.0.tgz -C /usr/local/
./kafka-server-start.sh …/config/server.properties //啓動Kafka,需指定配置文件