zookeeper 集群安裝與配置
阿新 • • 發佈:2019-04-29
準備 con skip image 定時 並發 調整 home 工作
Zookeeper安裝和配置
準備工作
安裝 JDK,此步略。
下載 zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz # 或者 curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
解壓 zookeeper
tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/
創建軟鏈,方便版本轉換
ln -s zookeeper-3.4.6 zookeeper
單機版安裝
切換到 zookeer 軟鏈目錄下執行
cd usr/local/zookeeper/conf/cp zoo_sample.cfg zoo.cfg
編輯 zoo.cfg 配置文件
vim zoo.cfg
啟動服務
# 啟動服務 bin/zkServer.sh start # 測試連接 bin/zkCli.sh –server 127.0.0.1:2181
集群安裝
? 在zoo.cfg 添加配置,並按照下面的配置部署到相應的機器上,並在相應的服務器的數據目錄下創建 myid
文件,並填寫本機對應的 server.NUM 數值.如 server.1,則填 1。
## 真集群示例 server.1=192.168.101:2888:3888 server.2=192.168.102:2888:3888 server.3=192.168.103:2888:3888 ## 偽集群示例 # server.1=127.0.0.1:2888:3888 # server.1=127.0.0.1:2889:3889 # server.1=127.0.0.1:2890:3890
配置文件詳解
Zookeeper 的默認配置文件為 zookeeper/conf/zoo_sample.cfg
,需要將其修改為 zoo.cfg
。
## CS通信心跳數 ## Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,以毫秒為單位。 tickTime=2000 ## 初始通信時限 ## 集群中的follower與leader之間初始連接時能容忍的最多心跳數(tickTime的數量)。 initLimit=10 ## LF同步通信時限 ## 集群中的follower與leader之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。 syncLimit=5 ## 數據文件目錄 ## 保存數據的目錄,默認情況下,Zookeeper將寫數據的日誌文件也保存在這個目錄裏。 dataDir=/home/ling/zookeeper/data ## 日誌文件目錄 ## 保存日誌文件的目錄。 dataLogDir=/home/ling/zookeeper/log ## 客戶端連接端口 ## 客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。 clientPort=2181 ## 服務器名稱與地址:集群信息(服務器編號,服務器地址,LF通信端口,選舉端口) ## 這個配置項的書寫格式比較特殊,規則如下: ## 如 server.N=YYY:A:B ## N 表示服務器編號; ## YYY 表示服務器的IP地址; ## A為LF通信端口表示該服務器與集群中的leader交換的信息的端口; ## B為選舉端口,表示選舉新leader時服務器間相互通信的端口(當leader掛掉時,其余服務器會相互通信,選擇出新的leader) ## 一般來說,集群中每個服務器的A端口都是一樣,每個服務器的B端口也是一樣。但是當所采用的為偽集群時,IP地址都一樣,只能時A端口和B端口不一樣 ## 真集群示例 server.1=192.168.101:2888:3888 server.2=192.168.102:2888:3888 server.3=192.168.103:2888:3888 ## 偽集群示例 # server.1=127.0.0.1:2888:3888 # server.1=127.0.0.1:2889:3889 # server.1=127.0.0.1:2890:3890 ## 最大請求堆積數 ## 默認是1000。在 server 無空閑來處理更多的客戶端請求時,允許客戶端將請求提交到服務器上來,以提高吞吐性能。當然,為了防止Server內存溢出,這個請求堆積數還是需要限制下的。 # globalOutstandingLimit=1000 ## 預先開辟磁盤空間 ## 用於後續寫入事務日誌。默認是64M,每個事務日誌大小就是64M。如果ZK的快照頻率較大的話,建議適當減小這個參數 # preAllocSize=65536 ## 快照 ## 每進行snapCount次事務日誌輸出後,觸發一次快照(snapshot), 此時,ZK會生成一個snapshot.*文件,同時創建一個新的事務日誌文件log.*。默認是100000.(真正的代碼實現中,會進行一定的隨機數處理,以避免所有服務器在同一時間進行快照而影響性能) # snapCount=100000 ## 用於記錄所有請求的log,一般調試過程中可以使用,但是生產環境不建議使用,會嚴重影響性能 # traceFile= ## session 超時時間,單位為毫秒 ## 默認值分別為2和20,即tickTime的2倍和20倍 # minSessionTimeout=2 # maxSessionTimeout=20 ## 不支持以系統屬性方式配置 ## 從Socket層面限制單個客戶端與單臺服務器之間的並發連接數,即以ip地址來進行連接數的限制。如果設置為0,表示不做任何限制。僅僅是單臺客戶端與單個Zookeeper服務器連接數的限制,不能控制所有客戶端的連接數總和 # maxClientCnxns=60 ## 單位為字節 ## 配置單個數據節點上可以存儲的最大數據量大小。在變更該參數時,需要變更集群中所有機器以及客戶端上均設置才能生效。 # jute.maxbuffer=1048575 ## 單位為字節,僅支持系統屬性方式配置:jute.maxBuffer。用於配置單個數據節點上可以存儲的最大數據量大小。在變更該參數時,需要變更集群中所有機器以及客戶端上均設置才能生效。 # clientPortAddress= ## 默認值為3,不支持以系統屬性方式配置。用於配置Zookeeper在自動清理的時候需要保留的快照數據文件數量和對應的事務日誌文件。此參數的最小值為3,如果配置的值小於3會自動調整到3。 # autopurge.snapRetainCount=3 ## 默認值為0,單位為小時,不支持以系統屬性方式配置。用於配置Zookeeper進行歷史文件自動清理的頻率。如果配置為0或負數,表示不需要開啟定時清理功能。 ?autopurge.purgeInterval=1 ? ?## 最大保留文件的個數,搭配 autopurge.purgeInterval 使用 ?autopurge.snapRetainCount=3 ## 默認值為1000,單位為毫秒,僅支持系統屬性方式配置 ## 配置Zookeeper進行事務日誌fsync操作時消耗時間的報警閾值。一旦fsync操作消耗的時間大於該參數指定的值,就在日誌中打印出報警日誌 # fsync.warningthresholdms=1000 ? ## 默認值為yes,可配置項為“yes”和“no”,僅支持系統屬性方式配置 ##配置Zookeeper服務器是否在提交的時候,將日誌寫入操作強制刷入磁盤,默認情況下,每次事務日誌寫入操作都會實時刷入磁盤,如果設置為“no”,則能一定程度的提高ZooKeeper的寫性能,但會存在類似機器斷電等安全風險。 ## forceSync=yes ## 默認值為yes,可選配置項為“yes”和“no”,僅支持系統屬性方式配置 ## 用於配置Leader服務器是否能夠接受客戶端的連接,即是否允許Leader向客戶端提供服務。默認情況下,Leader服務器能夠接受並處理客戶端的所有讀寫請求。在Zookeeper的架構設計中,Leader服務器主要用來進行對事務更新 # leaderServes=yes ## 默認值為no,可選配置項為“yes”和“no”,僅支持系統屬性方式配置 ## 用於配置ZooKeeper服務器是否跳過ACL權限檢查,默認情況下,會對每一個客戶端請求進行權限檢查。如果設置為“yes”,則能一定程度的提高ZooKeeper的讀寫性能,但同時也將向所有客戶端開放Zookeeper的數據,包括之前設置過ACL權限的數據節點,也不在接受權限控制 # skipAcl=no ## 默認值為5000,單位毫秒,僅支持系統屬性方式配置 ## 配置在Leader選舉過程中各服務器之間進行TCP連接創建的超時時間 # cnxTimeout=5000
zookeeper 集群安裝與配置