Zookeeper學習記錄(一)——環境部署

Ubuntu Docker Sed Java 大括號 大括號 2017-11-02

zk在公司系統中承擔著一個很重要的角色,因此作為開發有必要了解關於zk的一些知識,推薦文檔資料Zookeeper文檔目錄.


單機部署

zk的安裝很簡單,只需要下載修改配置啟動即可,本文主要是用Docker方式安裝,直接上Dockerfile文件

1234567891011121314151617181920212223242526272829303132333435363738394041
# Version 0.0.1FROM java:8MAINTAINER quding mrdear.cn#修改源信息RUN echo "deb //mirrors.163.com/ubuntu/ wily main restricted universe multiverse" > /etc/apt/sources.listRUN echo "deb //mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "deb //mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "deb //mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse">> /etc/apt/sources.listRUN echo "deb //mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse">> /etc/apt/sources.listRUN echo "deb-src //mirrors.163.com/ubuntu/ wily main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "deb-src //mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "deb-src //mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "deb-src //mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "deb-src //mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse" >> /etc/apt/sources.listRUN echo "APT::Get::AllowUnauthenticated 1 ;" >> /etc/apt/apt.conf#更新源,並安裝vimRUN apt-get updateRUN apt install vim -yENV ZOOKEEPER_VERSION 3.4.9# 下載zkRUN wget -q //mirror.vorboss.net/apache/zookeeper/zookeeper-${ZOOKEEPER_VERSION}/zookeeper-${ZOOKEEPER_VERSION}.tar.gz# 安裝RUN tar -xvf zookeeper-${ZOOKEEPER_VERSION}.tar.gz -C /opt# 配置zoo.cfgRUN mv /opt/zookeeper-${ZOOKEEPER_VERSION}/conf/zoo_sample.cfg /opt/zookeeper-${ZOOKEEPER_VERSION}/conf/zoo.cfgENV ZK_HOME /opt/zookeeper-${ZOOKEEPER_VERSION}RUN sed -i "s|/tmp/zookeeper|$ZK_HOME/data|g" $ZK_HOME/conf/zoo.cfg; mkdir $ZK_HOME/dataEXPOSE 2181 2888 3888WORKDIR /opt/zookeeper-${ZOOKEEPER_VERSION}VOLUME ["/opt/zookeeper-${ZOOKEEPER_VERSION}/conf", "/opt/zookeeper-${ZOOKEEPER_VERSION}/data"]CMD bash /opt/zookeeper-${ZOOKEEPER_VERSION}/bin/zkServer.sh start-foreground

build之後,啟動該docker image,暴露出2181端口,然後使用zkClient.sh連接即可操作.

多機部署

多機部署主要參考文章分佈式服務框架 Zookeeper – 管理分佈式環境中的數據.下面說下注意事項.

注意端口配置

initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裡所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集群中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是 52000=10 秒

syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 22000=4 秒

server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集群中的 Leader 服務器交換信息的端口;D 表示的是萬一集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。如果是偽集群的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。

如何驗證

zk是主從複製形式,那麼只要在leader節點中插入一個node,然後去salve中查看該node是否存在即可.

如何連接?

zk的安裝目錄下bin中有zkCli.sh,該工具格式為zkCli.sh -server host:port,使用其可以對zk進行增刪改查,具體命令使用參數-?即可翻閱.

相關推薦

推薦中...