zookeeper安装:单机模式、伪集群模式、集群模式

zookeeper的安装分为三种模式: 单机模式、伪集群模式和集群模式。

安装需要用到的zookeeper文件,到http://zookeeper.apache.org/通过download链接下载。

一、单机模式安装zookeeper

1、设置环境变量

$ 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、创建安装目录并将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、新建数据和日志目录,生成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数据目录、日志目录、端口号、服务器列表并确认配置

$ 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并查看状态

$ 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

可以输入以下命令进行操作, 查看结果

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

二、通过vagrant一键安装单机版的zookeeper

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

echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>zk压缩包路径>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_FILE
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk安装路径&安装目录>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_INSTALL_PATH
echo $ZK_INSTALL_DIR
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>zk数据目录&日志目录>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_DATA_DIR
echo $ZK_LOG_DIR
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>zk的myid>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
echo $ZK_SERVER_ID
echo ">>>>>>>>>>>>>>>>>>>>>>>>>zk端口及服务器列表>>>>>>>>>>>>>>>>>>>>>>>>>"
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数据和日志目录及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|
    #设置虚拟机的box
    config.vm.box = "centos7-base-jdk8"

    
    #设置虚拟机的主机名
    config.vm.hostname = "centos7-jdk8-zk-standalone"
    #设置ip
    config.vm.network "private_network", ip: "192.168.13.10"
    #Virtualbox相关配置
    config.vm.provider "virtualbox" do |v|
        #设置虚拟机的名称
        v.name = "centos7-jdk8-zk-standalone"
        
        #设置虚拟机的内存大小为2G
        v.memory = 2048 
        
        #设置虚拟机的CPU个数
        v.cpus = 2 
    end 

    #使用shell脚本进行软件安装和配置
    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启动虚拟机

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

三、通过vagrant一键安装zookeeper伪集群

1、zk伪集群指的是在一台集群上安装zk集群

需要注意每个zk进程对外端口(默认2181,用于客户端链接zk集群),选主端口(默认3888-进行leader选举时使用的端口),集群通信端口(默认2888-集群follow链接leader的通信端口)配置不冲突。
myid=1, 2181, 2888, 3888
myid=2, 2182, 2887, 3887
myid=3, 2183, 2886, 3886

2、zk-install.sh同二使用的是相同内容,Vagrantfile如下:


# -*- mode: ruby -*-
# vi: set ft=ruby :
    
Vagrant.configure("2") do |config|
    #设置虚拟机的box
    config.vm.box = "centos7-base-jdk8"
    
    #设置虚拟机的主机名
    config.vm.hostname = "centos7-jdk-zk-local-cluster"
    
    #Virtualbox相关配置
    config.vm.provider "virtualbox" do |v|
        #设置虚拟机的名称
        v.name = "centos7-jdk-zk-local-cluster"
        
        #设置虚拟机的内存大小为1G
        v.memory = 2048 
        
        #设置虚拟机的CPU个数
        v.cpus = 2 
    end 
    

    (1..3).each do |i| 
    #使用shell脚本进行软件安装和配置
        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 命令,可以启动虚拟机,并自动安装

4、ssh进入虚拟机, 查看各个目录下对应的zk安装情况

可以看到,zk-server2作为leader节点, 其他两个节点作为follower节点

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

5、可以通过xshell给三个节点的zkCli.sh 分别发送命令,

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

四、通过vagrant一键安装zookeeper集群

1、集群ip规划

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同二使用的是相同内容,Vagrantfile如下:

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

Vagrant.configure("2") do |config|
    #设置虚拟机的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| 
            
            #设置虚拟机的主机名
            app_config.vm.hostname = zk_server_cfg[2]
            #设置ip
            app_config.vm.network "private_network", ip: zk_server_cfg[0]
            #Virtualbox相关配置
            app_config.vm.provider "virtualbox" do |v|
                #设置虚拟机的名称
                v.name = zk_server_cfg[2]
                
                #设置虚拟机的内存大小为1G
                v.memory = 1048 
                
                #设置虚拟机的CPU个数
                v.cpus = 2 
            end 

            #使用shell脚本进行软件安装和配置
            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 拉起三台虚拟机,并自动安装zk

安装完毕后,进入虚拟机,确认是否安装正确

zk-cluster-status
zk-cluster-status

OK, 到这里就结束了, 三种模式的安装通过vagrant可以快速安装实验环境。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容