zookeeper單機安裝詳解

聲明:

爲順利的安裝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

建立data和logs目錄

解壓後進入zookeeper-3.4.11目錄,建立data目錄和logs目錄,zookeeper默認是不帶這兩個目錄的,須要用戶自行建立並指定。 服務器

建立myid文件

在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與其餘應用程序通訊的端口

其餘cfg參數說明

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服務

啓動並測試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’

集羣的安裝我就先放過它,哼,等我學會啦使用,再來寫

相關文章
相關標籤/搜索