zookeeper安裝:單機(jī)模式、偽集群模式、集群模式

zookeeper的安裝分為三種模式: 單機(jī)模式、偽集群模式和集群模式。

安裝需要用到的zookeeper文件,到http://zookeeper.apache.org/通過download鏈接下載。

一、單機(jī)模式安裝zookeeper

1、設(shè)置環(huán)境變量

$ ZK_FILE=/vagrant/zookeeper-3.4.13.tar.gz
$ ZK_INSTALL_PATH=/opt/zk
$ ZK_INSTALL_DIR=$ZK_INSTALL_PATH/zookeeper-3.4.13
$ ZK_DATA_DIR=$ZK_INSTALL_PATH/zookeeper-3.4.13/data 
$ ZK_LOG_DIR=$ZK_INSTALL_PATH/zookeeper-3.4.13/log
$ ZK_CFG=$ZK_INSTALL_DIR/conf/zoo.cfg 
$ ZK_SERVER_ID=1
$ ZK_PORT=2181
$ ZK_SERVER_LIST=server.1=127.0.0.1:2888:3888
prepare-install-env
prepare-install-env

2、創(chuàng)建安裝目錄并將zk到解壓安裝目錄

$ mkdir -p $ZK_INSTALL_PATH 
$ tar -zxvf $ZK_FILE -C $ZK_INSTALL_PATH >> /var/null
$ ls -l $ZK_INSTALL_PATH
make-dir-and-uzip
make-dir-and-uzip

3、新建數(shù)據(jù)和日志目錄,生成myid文件,拷貝配置zoo.cfg文件

$ mkdir $ZK_DATA_DIR
$ mkdir $ZK_LOG_DIR
$ echo $ZK_SERVER_ID >> $ZK_DATA_DIR/myid
$ cp $ZK_INSTALL_DIR/conf/zoo_sample.cfg $ZK_CFG
$ cat $ZK_CFG
copy-zoo-cfg
copy-zoo-cfg

4、配置zoo.cfg數(shù)據(jù)目錄、日志目錄、端口號、服務(wù)器列表并確認(rèn)配置

$ sed -i 's#dataDir=/tmp/zookeeper#dataDir='$ZK_DATA_DIR'#' $ZK_CFG
$ sed -i '$a \dataLogDir='$ZK_LOG_DIR  $ZK_CFG
$ sed -i 's/2181/'$ZK_PORT'/g' $ZK_CFG
$ sed -i '$a \'$ZK_SERVER_LIST $ZK_CFG

$ cat $ZK_CFG
config-zoo-cfg
config-zoo-cfg

5、啟動zk并查看狀態(tài)

$ sh $ZK_INSTALL_DIR/bin/zkServer.sh start 
$ sh $ZK_INSTALL_DIR/bin/zkServer.sh status
start-zookeeper
start-zookeeper

6、利用zkCli操作zk

$ sh $ZK_INSTALL_DIR/bin/zkCli.sh
use-zk-cli
use-zk-cli

可以輸入以下命令進(jìn)行操作, 查看結(jié)果

> ls / 
> create /test value1
> get /test
zk-cli-command
zk-cli-command

二、通過vagrant一鍵安裝單機(jī)版的zookeeper

1、整理一中的shell命令成zk-install.sh腳本文件

echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>zk壓縮包路徑>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_FILE
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk安裝路徑&安裝目錄>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_INSTALL_PATH
echo $ZK_INSTALL_DIR
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>zk數(shù)據(jù)目錄&日志目錄>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_DATA_DIR
echo $ZK_LOG_DIR
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk的myid>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_SERVER_ID
echo ">>>>>>>>>>>>>>>>>>>>>>>>>zk端口及服務(wù)器列表>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_PORT
echo $ZK_SERVER_LIST

echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk配置文件>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
ZK_CFG=$ZK_INSTALL_DIR/conf/zoo.cfg
echo $ZK_CFG

echo ">>>>>>>>>>>>>>>>>>>>新建zk安裝目錄并解壓zk到該目錄>>>>>>>>>>>>>>>>>>>" 
mkdir -p $ZK_INSTALL_PATH   

tar -zxvf $ZK_FILE -C $ZK_INSTALL_PATH >> /var/null


echo ">>>>>>>>>>>>>>>>>>>>>新建zk數(shù)據(jù)和日志目錄及myid>>>>>>>>>>>>>>>>>>>>>" 
mkdir $ZK_DATA_DIR
mkdir $ZK_LOG_DIR
echo $ZK_SERVER_ID >> $ZK_DATA_DIR/myid

echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>配置zoo.cfg>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" 
cp $ZK_INSTALL_DIR/conf/zoo_sample.cfg $ZK_CFG

sed -i 's#dataDir=/tmp/zookeeper#dataDir='$ZK_DATA_DIR'#' $ZK_CFG
sed -i '$a \dataLogDir='$ZK_LOG_DIR  $ZK_CFG
sed -i 's/2181/'$ZK_PORT'/g' $ZK_CFG
sed -i '$a \'$ZK_SERVER_LIST $ZK_CFG

tail -n 20 $ZK_CFG
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>啟動zk>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"    
sh $ZK_INSTALL_DIR/bin/zkServer.sh start 

2、新建Vagrantfile文件

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
    #設(shè)置虛擬機(jī)的box
    config.vm.box = "centos7-base-jdk8"

    
    #設(shè)置虛擬機(jī)的主機(jī)名
    config.vm.hostname = "centos7-jdk8-zk-standalone"
    #設(shè)置ip
    config.vm.network "private_network", ip: "192.168.13.10"
    #Virtualbox相關(guān)配置
    config.vm.provider "virtualbox" do |v|
        #設(shè)置虛擬機(jī)的名稱
        v.name = "centos7-jdk8-zk-standalone"
        
        #設(shè)置虛擬機(jī)的內(nèi)存大小為2G
        v.memory = 2048 
        
        #設(shè)置虛擬機(jī)的CPU個數(shù)
        v.cpus = 2 
    end 

    #使用shell腳本進(jìn)行軟件安裝和配置
    config.vm.provision "shell" do |s| 
        s.path = "zk-install.sh"
        s.env = {ZK_FILE: "/vagrant/zookeeper-3.4.13.tar.gz",
            ZK_INSTALL_PATH: "/opt/zk", 
            ZK_INSTALL_DIR: "/opt/zk/zookeeper-3.4.13", 
            ZK_PORT: "2181",  
            ZK_DATA_DIR: "/opt/zk/zookeeper-3.4.13/data", 
            ZK_LOG_DIR: "/opt/zk/zookeeper-3.4.13/log", 
            ZK_SERVER_ID: "1", 
            ZK_SERVER_LIST: "server.1=127.0.0.1:2888:3888"}
    end
end

3、通過vagrant up啟動虛擬機(jī)

vagrant-up-standardlone-1
vagrant-up-standardlone-1
vagrant-up-standardlone-2
vagrant-up-standardlone-2

三、通過vagrant一鍵安裝zookeeper偽集群

1、zk偽集群指的是在一臺集群上安裝zk集群

需要注意每個zk進(jìn)程對外端口(默認(rèn)2181,用于客戶端鏈接zk集群),選主端口(默認(rèn)3888-進(jìn)行l(wèi)eader選舉時使用的端口),集群通信端口(默認(rèn)2888-集群follow鏈接leader的通信端口)配置不沖突。
myid=1, 2181, 2888, 3888
myid=2, 2182, 2887, 3887
myid=3, 2183, 2886, 3886

2、zk-install.sh同二使用的是相同內(nèi)容,Vagrantfile如下:


# -*- mode: ruby -*-
# vi: set ft=ruby :
    
Vagrant.configure("2") do |config|
    #設(shè)置虛擬機(jī)的box
    config.vm.box = "centos7-base-jdk8"
    
    #設(shè)置虛擬機(jī)的主機(jī)名
    config.vm.hostname = "centos7-jdk-zk-local-cluster"
    
    #Virtualbox相關(guān)配置
    config.vm.provider "virtualbox" do |v|
        #設(shè)置虛擬機(jī)的名稱
        v.name = "centos7-jdk-zk-local-cluster"
        
        #設(shè)置虛擬機(jī)的內(nèi)存大小為1G
        v.memory = 2048 
        
        #設(shè)置虛擬機(jī)的CPU個數(shù)
        v.cpus = 2 
    end 
    

    (1..3).each do |i| 
    #使用shell腳本進(jìn)行軟件安裝和配置
        config.vm.provision "shell" do |s| 
            s.path = "zk-install.sh"
            s.env = {ZK_FILE: "/vagrant/zookeeper-3.4.13.tar.gz",
                ZK_INSTALL_PATH: "/opt/zk/zk-server#{i}", 
                ZK_INSTALL_DIR: "/opt/zk/zk-server#{i}/zookeeper-3.4.13", 
                ZK_PORT: "218#{i}",  
                ZK_DATA_DIR: "/opt/zk/zk-server#{i}/zookeeper-3.4.13/data", 
                ZK_LOG_DIR: "/opt/zk/zk-server#{i}/zookeeper-3.4.13/log", 
                ZK_SERVER_ID: "#{i}", 
                ZK_SERVER_LIST: "server.1=127.0.0.1:2888:3888\\nserver.2=127.0.0.1:2887:3887\\nserver.3=127.0.0.1:2886:3886"}
        end 
    end         
end

3、同樣使用vagrant up 命令,可以啟動虛擬機(jī),并自動安裝

4、ssh進(jìn)入虛擬機(jī), 查看各個目錄下對應(yīng)的zk安裝情況

可以看到,zk-server2作為leader節(jié)點, 其他兩個節(jié)點作為follower節(jié)點

zk-local-cluster-status
zk-local-cluster-status

5、可以通過xshell給三個節(jié)點的zkCli.sh 分別發(fā)送命令,

zk-local-cluster-cli
zk-local-cluster-cli

四、通過vagrant一鍵安裝zookeeper集群

1、集群ip規(guī)劃

zk_server1 => 1 192.168.13.21 centos7-jdk-zk-cluster-1
zk_server2 => 2 192.168.13.22 centos7-jdk-zk-cluster-2
zk_server3 => 3 192.168.13.23 centos7-jdk-zk-cluster-3

2、zk-install.sh同二使用的是相同內(nèi)容,Vagrantfile如下:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
    #設(shè)置虛擬機(jī)的box
    config.vm.box = "centos7-base-jdk8"
    
    zk_servers = {
        :zk_server1 => ["192.168.13.21", "1", "centos7-jdk-zk-cluster-1"], 
        :zk_server2 => ["192.168.13.22", "2", "centos7-jdk-zk-cluster-2"], 
        :zk_server3 => ["192.168.13.23", "3", "centos7-jdk-zk-cluster-3"]
    }
    zk_server_list = "server.1=192.168.13.21:2888:3888\\nserver.2=192.168.13.22:2888:3888\\nserver.3=192.168.13.23:2888:3888"
    
    zk_servers.each do |zk_server_name, zk_server_cfg| 
        config.vm.define zk_server_name do |app_config| 
            
            #設(shè)置虛擬機(jī)的主機(jī)名
            app_config.vm.hostname = zk_server_cfg[2]
            #設(shè)置ip
            app_config.vm.network "private_network", ip: zk_server_cfg[0]
            #Virtualbox相關(guān)配置
            app_config.vm.provider "virtualbox" do |v|
                #設(shè)置虛擬機(jī)的名稱
                v.name = zk_server_cfg[2]
                
                #設(shè)置虛擬機(jī)的內(nèi)存大小為1G
                v.memory = 1048 
                
                #設(shè)置虛擬機(jī)的CPU個數(shù)
                v.cpus = 2 
            end 

            #使用shell腳本進(jìn)行軟件安裝和配置
            app_config.vm.provision "shell" do |s| 
                s.path = "zk-install.sh"
                s.env = {ZK_FILE: "/vagrant/zookeeper-3.4.13.tar.gz",
                    ZK_INSTALL_PATH: "/opt/zk", 
                    ZK_INSTALL_DIR: "/opt/zk/zookeeper-3.4.13", 
                    ZK_PORT: "2181",  
                    ZK_DATA_DIR: "/opt/zk/zookeeper-3.4.13/data", 
                    ZK_LOG_DIR: "/opt/zk/zookeeper-3.4.13/log", 
                    ZK_SERVER_ID: zk_server_cfg[1], 
                    ZK_SERVER_LIST: zk_server_list}
            end
        end 
    end 
end

3、通過vagrant up 拉起三臺虛擬機(jī),并自動安裝zk

安裝完畢后,進(jìn)入虛擬機(jī),確認(rèn)是否安裝正確

zk-cluster-status
zk-cluster-status

OK, 到這里就結(jié)束了, 三種模式的安裝通過vagrant可以快速安裝實驗環(huán)境。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容