爲順利的安裝zookeeper,須要對:Linux的基本操做簡單瞭解:java
一、建立用戶、組 adduser ...linux
二、文件權限受權 chmod u+x ....算法
三、Linux 安裝java環境shell
ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。 ZooKeeper的基本運轉流程: 一、選舉Leader。 二、同步數據。 三、選舉Leader過程當中算法有不少,但要達到的選舉標準是一致的。 四、Leader要具備最高的執行ID,相似root權限。 五、集羣中大多數的機器獲得響應並follow選出的Leader。 目前阿里開源的dubbo分佈式服務框架推薦的註冊中心。 其更詳細原理能夠參考:http://cailin.iteye.com/blog/2014486/
服務器CentOS7_64_1的ip:192.168.116.130,hostname:edu-provider-01apache
首先使用wugong用戶登陸CentOS7_64_1,將zookeeper-3.4.11的安裝包下載傳至/home/wugong目錄下 vim
http下載路徑: http://apache.fayea.com/zookeeper/
linux命令下載:windows
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
工具: CentOS.7,zookeeper-3.4.11,Xshell5centos
注:zookeeper自己由java編寫,運行在java環境,故同窗們必須先裝好java環境,才能夠繼續zookeeper的安裝,這裏我對java環境不作講解 bash
tar -zxvf zookeeper-3.4.11.tar.gz
解壓後進入zookeeper-3.4.11目錄,建立data目錄和logs目錄,zookeeper默認是不帶這兩個目錄的,須要用戶自行建立並指定。 服務器
在dataDir=/home/grid/zookeeper-3.4.11/data下建立myid文件
編輯myid文件,並在對應的IP的機器上輸入對應的編號。如在第一臺zookeeper上,咱們給該myid文件內容指定就是1。若是隻在單點上進行安裝配置,那麼只有一個server,後面講集羣的時候會有多態server故會有2,3,4…等等。
接着進入zookeeper-3.4.11/conf目錄下,將zoo_sample.cfg文件複製一份取名zoo.cfg
cd /home/wugong/zookeeper-3.4.11/conf cp zoo_sample.cfg zoo.cfg
注:之因此取名zoo.cfg是由於這是啓動時默認約定讀取的
複製完畢以後,編輯zoo.cfg
server.1=edu-provider-01:2888:3888的解釋以下:
1是指一個數字,與前面建立的myid對應便可,標誌這是第幾臺機器,edu-provider-01(主要是我在虛擬機上作配置,ip會變化)是我配置的映射名,你們能夠直接將h1改成本身的ip,如server.1=192.168.2.101:2888:3888;
Hosts映射配置:vi /etc/hosts,輸入本身的ip對應寫個名字便可,與windows相似,此配置步驟能夠忽略,直接在zookeeper下的zoo.cfg文件寫ip地址便可
2888 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端,2888端口簡單來講就是zookeeper服務之間的通訊端口;
3888端口是zookeeper與其餘應用程序通訊的端口
tickTime=2000
tickTime這個時間是做爲Zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個tickTime時間就會發送一個心跳。
initLimit=10
initLimit這個配置項是用來配置Zookeeper接受客戶端(這裏所說的客戶端不是用戶鏈接Zookeeper服務器的客戶端,而是Zookeeper服務器集羣中鏈接到Leader的Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過10個心跳的時間(也就是tickTime)長度後Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是10*2000=20 秒。
syncLimit=5
syncLimit這個配置項標識Leader與Follower之間發送消息,請求和應答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是5*2000=10秒。
dataDir=/home/grid/zookeeper-3.4.11/data
dataDir顧名思義就是Zookeeper保存數據的目錄,默認狀況下Zookeeper將寫數據的日誌文件也保存在這個目錄裏。
clientPort=2181
clientPort這個端口就是客戶端(應用程序)鏈接Zookeeper服務器的端口,Zookeeper會監聽這個端口接受客戶端的訪問請求
修改該用戶下的.bash_profile文件,此文件默認爲隱藏的
vim /home/wugong/.bash_profile
export ZOOKEEPER_HOME=/home/wugong/zookeeper-3.4.11 export PATH=$ZOOKEEPER_HOME/bin:$PATH // 而後讓配置生效 source /home/wugong/.bash_profile
在防火牆中打開要用到的端口,通常默認是開放了22端口,因此咱們才能使用遠程工具使用22進行鏈接,如今咱們去配置2181 2888 3888端口,切換到root用戶執行以下命令
chkconfig iptables on設置開機啓動
service iptables start 啓動防火牆
注:centos7 沒有iptables,須要手動安裝---https://my.oschina.net/u/3027745/blog/1524107
vi /etc/sysconfig/iptables
啓動並測試zookeeper(使用wugong用戶啓動,不要使用root帳戶),在zookeeper目錄的bin下面執行
異常處理:
確保myid/data logs目錄 這個文件的權限是否足夠
查看日誌:
// 保證這個文件有執行權限,個人原本沒又執行權限,手動受權的 tail -f zookeeper.out
簡單命令總結:
[wugong@localhost bin]$ zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/wugong/zookeeper-3.4.11/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [wugong@localhost bin]$ zkServer.sh status ZooKeeper JMX enabled by default Using config: /home/wugong/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: standalone [wugong@localhost bin]$ zkServer.sh stop ZooKeeper JMX enabled by default Using config: /home/wugong/zookeeper-3.4.11/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED [wugong@localhost bin]$
配置zookeeper爲grid用戶開機啓動,否則在生產環境會很麻煩
編輯/etc/rc.local文件,加入:
su - wugong -c ‘/home/grid/zookeeper-3.4.11/bin/zkServer.sh start’
集羣的安裝我就先放過它,哼,等我學會啦使用,再來寫