ZooKeeper的伪分布式集群搭建

时间:2022-02-18 04:05:25

ZooKeeper集群的一些基本概念

zookeeper集群搭建:

  • zk集群,主从节点,心跳机制(选举模式)
  • 配置数据文件 myid 1/2/3 对应 server.1/2/3
  • 通过 zkCli.sh -server [ip]:[port] 命令检测集群是否配置成功

和其他大多数集群结构一样,zookeeper集群也是主从结构。搭建集群时,机器数量最低也是三台,因为小于三台就无法进行选举。选举就是当集群中的master节点挂掉之后,剩余的两台机器会进行选举,在这两台机器中选举出一台来做master节点。而当原本挂掉的master恢复正常后,也会重新加入集群当中。但是不会再作为master节点,而是作为slave节点。如下:

ZooKeeper的伪分布式集群搭建

单机伪分布式搭建zookeeper集群

本节介绍单机伪分布式的zookeeper安装,官方下载地址如下:

https://archive.apache.org/dist/zookeeper/

我这里使用的是3.4.11版本,所以找到相应的版本点击进去,复制到.tar.gz的下载链接到Linux上进行下载。操作命令如下:

[root@study-01 ~]# cd /usr/local/src/
[root@study-01 /usr/local/src]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

下载完成之后将其解压到/usr/local/目录下:

[root@study-01 /usr/local/src]# tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local/
[root@study-01 /usr/local/src]# cd ../zookeeper-3.4.11/
[root@study-01 /usr/local/zookeeper-3.4.11]# ls
bin        dist-maven       lib          README_packaging.txt  zookeeper-3.4.11.jar.asc
build.xml  docs             LICENSE.txt  recipes               zookeeper-3.4.11.jar.md5
conf       ivysettings.xml  NOTICE.txt   src                   zookeeper-3.4.11.jar.sha1
contrib    ivy.xml          README.md    zookeeper-3.4.11.jar
[root@study-01 /usr/local/zookeeper-3.4.11]#

然后给目录重命名一下:

[root@study-01 ~]# cd /usr/local/
[root@study-01 /usr/local]# mv zookeeper-3.4.11/ zookeeper00

接着进行一系列的配置:

[root@study-01 /usr/local]# cd zookeeper00/
[root@study-01 /usr/local/zookeeper00]# cd conf/
[root@study-01 /usr/local/zookeeper00/conf]# cp zoo_sample.cfg zoo.cfg  # 拷贝官方提供的模板配置文件
[root@study-01 /usr/local/zookeeper00/conf]# vim zoo.cfg  # 增加或修改成如下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper00/dataDir
dataLogDir=/usr/local/zookeeper00/dataLogDir
clientPort=2181
4lw.commands.whitelist=*
server.1=192.168.190.129:2888:3888  # master节点,ip后面跟的是集群通信的端口
server.2=192.168.190.129:2889:3889
server.3=192.168.190.129:2890:3890
[root@study-01 /usr/local/zookeeper00/conf]# cd ../
[root@study-01 /usr/local/zookeeper00]# mkdir {dataDir,dataLogDir}
[root@study-01 /usr/local/zookeeper00]# cd dataDir/
[root@study-01 /usr/local/zookeeper00/dataDir]# vim myid  # 配置该节点的id
1
[root@study-01 /usr/local/zookeeper00/dataDir]# 

配置完之后,拷贝多个目录出来,因为是单机的伪分布式所以需要在一台机器上安装多个zookeeper:

[root@study-01 /usr/local]# cp zookeeper00 zookeeper01 -rf
[root@study-01 /usr/local]# cp zookeeper00 zookeeper02 -rf

配置 zookeeper01:

[root@study-01 /usr/local]# cd zookeeper01/conf/
[root@study-01 /usr/local/zookeeper01/conf]# vim zoo.cfg  # 修改内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper01/dataDir
dataLogDir=/usr/local/zookeeper01/dataLogDir
clientPort=2182  # 端口号必须要修改
4lw.commands.whitelist=*
server.1=192.168.190.129:2888:3888
server.2=192.168.190.129:2889:3889
server.3=192.168.190.129:2890:3890
[root@study-01 /usr/local/zookeeper01/conf]# cd ../dataDir/
[root@study-01 /usr/local/zookeeper01/dataDir]# vim myid
2
[root@study-01 /usr/local/zookeeper01/dataDir]#

配置 zookeeper02:

[root@study-01 /usr/local]# cd zookeeper02/conf/
[root@study-01 /usr/local/zookeeper02/conf]# vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper02/dataDir
dataLogDir=/usr/local/zookeeper02/dataLogDir
clientPort=2183  # 端口号必须要修改
4lw.commands.whitelist=*
server.1=192.168.190.129:2888:3888
server.2=192.168.190.129:2889:3889
server.3=192.168.190.129:2890:3890
[root@study-01 /usr/local/zookeeper02/conf]# cd ../dataDir/
[root@study-01 /usr/local/zookeeper02/dataDir]# vim myid
3
[root@study-01 /usr/local/zookeeper02/dataDir]# 

以上就在单机上配置好三个zookeeper集群节点了,现在我们来测试一下,这个伪分布式的zookeeper集群能否正常运作起来:

[root@study-01 ~]# cd /usr/local/zookeeper00/bin/
[root@study-01 /usr/local/zookeeper00/bin]# ./zkServer.sh start  # 启动第一个节点
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper00/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@study-01 /usr/local/zookeeper00/bin]# netstat -lntp |grep java  # 查看监听的端口
tcp6       0      0 192.168.190.129:3888    :::*                    LISTEN      3191/java  # 集群通信的端口
tcp6       0      0 :::44793                :::*                    LISTEN      3191/java
tcp6       0      0 :::2181                 :::*                    LISTEN      3191/java
[root@study-01 /usr/local/zookeeper00/bin]# cd ../../zookeeper01/bin/
[root@study-01 /usr/local/zookeeper01/bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper01/bin/../conf/zoo.cfg  # 启动第二个节点
Starting zookeeper ... STARTED
[root@study-01 /usr/local/zookeeper01/bin]# cd ../../zookeeper02/bin/
[root@study-01 /usr/local/zookeeper02/bin]# ./zkServer.sh start  # 启动第三个节点
[root@study-01 /usr/local/zookeeper02/bin]# netstat -lntp |grep java   # 查看监听的端口
tcp6       0      0 192.168.190.129:2889    :::*                    LISTEN      3232/java
tcp6       0      0 :::48463                :::*                    LISTEN      3232/java
tcp6       0      0 192.168.190.129:3888    :::*                    LISTEN      3191/java
tcp6       0      0 192.168.190.129:3889    :::*                    LISTEN      3232/java
tcp6       0      0 192.168.190.129:3890    :::*                    LISTEN      3286/java
tcp6       0      0 :::44793                :::*                    LISTEN      3191/java
tcp6       0      0 :::60356                :::*                    LISTEN      3286/java
tcp6       0      0 :::2181                 :::*                    LISTEN      3191/java
tcp6       0      0 :::2182                 :::*                    LISTEN      3232/java
tcp6       0      0 :::2183                 :::*                    LISTEN      3286/java
[root@study-01 /usr/local/zookeeper02/bin]# jps  # 查看进程
3232 QuorumPeerMain
3286 QuorumPeerMain
3191 QuorumPeerMain
3497 Jps
[root@study-01 /usr/local/zookeeper02/bin]#

如上,可以看到,三个节点都正常启动成功了,接下来我们进入客户端,创建一些znode,看看是否会同步到集群中的其他节点上去:

[root@study-01 /usr/local/zookeeper02/bin]# ./zkCli.sh -server localhost:2181  # 登录第一个节点的客户端
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] create /data test-data
Created /data
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper, data]
[zk: localhost:2181(CONNECTED) 3] quit
[root@study-01 /usr/local/zookeeper02/bin]# ./zkCli.sh -server localhost:2182  # 登录第二个节点的客户端
[zk: localhost:2182(CONNECTED) 0] ls /  # 可以查看到我们在第一个节点上创建的znode,代表集群中的节点能够正常同步数据
[zookeeper, data]
[zk: localhost:2182(CONNECTED) 1] get /data  # 数据也是一致的
test-data
cZxid = 0x100000002
ctime = Tue Apr 24 18:35:56 CST 2018
mZxid = 0x100000002
mtime = Tue Apr 24 18:35:56 CST 2018
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
[zk: localhost:2182(CONNECTED) 2] quit
[root@study-01 /usr/local/zookeeper02/bin]# ./zkCli.sh -server localhost:2183  # 登录第三个节点的客户端
[zk: localhost:2183(CONNECTED) 0] ls /  # 第三个节点也能查看到我们在第一个节点上创建的znode
[zookeeper, data]
[zk: localhost:2183(CONNECTED) 1] get /data  # 数据也是一致的
test-data
cZxid = 0x100000002
ctime = Tue Apr 24 18:35:56 CST 2018
mZxid = 0x100000002
mtime = Tue Apr 24 18:35:56 CST 2018
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
[zk: localhost:2183(CONNECTED) 2] quit
[root@study-01 /usr/local/zookeeper02/bin]#

查看集群的状态、主从信息需要使用 ./zkServer.sh status 命令,但是多个节点的话,逐个查看有些费劲,所以我们写一个简单的shell脚本来批量执行命令。如下:

[root@study-01 ~]# vim checked.sh  # 脚本内容如下
#!/bin/bash
/usr/local/zookeeper00/bin/zkServer.sh status
/usr/local/zookeeper01/bin/zkServer.sh status
/usr/local/zookeeper02/bin/zkServer.sh status
[root@study-01 ~]# sh ./checked.sh  # 执行脚本
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper00/bin/../conf/zoo.cfg
Mode: follower  # 从节点
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper01/bin/../conf/zoo.cfg
Mode: leader   # 主节点
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper02/bin/../conf/zoo.cfg
Mode: follower
[root@study-01 ~]# 

到此为止,我们就成功完成了单机zookeeper伪分布式集群的搭建,并且也测试成功了。

ZooKeeper的伪分布式集群搭建的更多相关文章

  1. zookeeper伪分布式集群搭建

    zookeeper集群搭建注意点:         配置数据文件myid1/2/3对应server.1/2/3         通过zkCli.sh -server [ip]:[port]检测集群是否 ...

  2. hadoop伪分布式集群搭建与安装(ubuntu系统)

    1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...

  3. Zookeeper,Hbase 伪分布,集群搭建

    工作中一般使用的都是zookeeper和Hbase的分布式集群. more /etc/profile cd /usr/local zookeeper-3.4.5.tar.gz zookeeper在安装 ...

  4. kafka系列一:单节点伪分布式集群搭建

    Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...

  5. Hadoop单机/伪分布式集群搭建(新手向)

    此文已由作者朱笑笑授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文主要参照官网的安装步骤实现了Hadoop伪分布式集群的搭建,希望能够为初识Hadoop的小伙伴带来借鉴意 ...

  6. 基于Hadoop伪分布式集群搭建Spark

    一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...

  7. Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建

    hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...

  8. Hadoop伪分布式集群搭建

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 1.下载Hadoop压缩包 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop- ...

  9. Hadoop框架:单服务下伪分布式集群搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.基础环境 1.环境版本 环境:centos7 hadoop版本:2.7.2 jdk版本:1.8 2.Hadoop目录结构 bin目录:存放 ...

随机推荐

  1. easyui 下拉树改造

    <select id="cc" style="width: 250px"></select> <div id="sp&q ...

  2. MVC5的AuthorizeAttribute详解

    现今大多数的网站尤其是购物网站都要求你登录后才能继续操作,当你匿名的将商品放入购物车后,不可能匿名购买这时可以转到登录界面让用户进行登录验证. 适用系统自带的过滤器 MVC5只要将属性[Authori ...

  3. 主席树&plus;启发式合并(LT) BZOJ3123

    好久没做题了,写道SBT又RE又T 查询:主席树裸题. 修改:对于两个树合并重建小的树. 注意fa[x][i]重新计算时要清空 #include<cstdio> #include<c ...

  4. 如何解决ASP&period;NET网站&&num;39&semi;&lowbar;&lowbar;doPostBack&&num;39&semi; is undefined的脚本错误

    最近碰到一个很奇怪的问题! 新发布一个ASP.NET的网站,基于.net 4.0 framework,基本没有用到什么特别新的技术,但是由于给客户预览用的服务器比较老,操作系统用的是Windows 2 ...

  5. JPA学习---第十一节:JPA中的多对多双向关联实体定义与注解设置及操作

    1.定义实体类,代码如下: (1).学生实体类: package learn.jpa.entity; import java.util.HashSet; import java.util.Set; i ...

  6. 如何打开mo文件并修改 PoEdit

    mo文件是被编译了的文件,一般在汉化的时候会用到. 比如我想修改phpmyadmin 的界面信息,就需要修改phpmyadmin.mo的文件内容. 可是用编辑器editplus或者Sublime 2打 ...

  7. 软件测试第二周作业 WordCount

    本人github地址:  https://github.com/wenthehandsome23 psp阶段 预估耗时 (分钟) 实际耗时 (分钟) 计划 30 10 估计这个任务需要多少时间 20 ...

  8. DUMP 3&period;8 企业级电商项目 支付宝之类

    ① 沙箱登录:https://openhome.alipay.com/platform/appDaily.htm 获得一个 使用环境描述 APPID.授权回调地址.沙箱钱包哪里下载之类的 ② 沙箱环境 ...

  9. MySQL体系结构图详解

    体系结构图如下: 连接层 思想为解决资源的频繁分配﹑释放所造成的问题,为数据库连接建立一个“缓冲池”.原理预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕 ...

  10. 合理配置SQLSERVER内存

    合理配置SQLSERVER内存 原文地址:https://www.cnblogs.com/lyhabc/archive/2012/09/28/2707857.html SQLSERVER是个很喜欢内存 ...