ZooKeeper的伪分布式集群搭建
ZooKeeper集群的一些基本概念
zookeeper集群搭建:
- zk集群,主从节点,心跳机制(选举模式)
- 配置数据文件 myid 1/2/3 对应 server.1/2/3
- 通过 zkCli.sh -server [ip]:[port] 命令检测集群是否配置成功
和其他大多数集群结构一样,zookeeper集群也是主从结构。搭建集群时,机器数量最低也是三台,因为小于三台就无法进行选举。选举就是当集群中的master节点挂掉之后,剩余的两台机器会进行选举,在这两台机器中选举出一台来做master节点。而当原本挂掉的master恢复正常后,也会重新加入集群当中。但是不会再作为master节点,而是作为slave节点。如下:

单机伪分布式搭建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的伪分布式集群搭建的更多相关文章
- zookeeper伪分布式集群搭建
zookeeper集群搭建注意点: 配置数据文件myid1/2/3对应server.1/2/3 通过zkCli.sh -server [ip]:[port]检测集群是否 ...
- hadoop伪分布式集群搭建与安装(ubuntu系统)
1:Vmware虚拟软件里面安装好Ubuntu操作系统之后使用ifconfig命令查看一下ip; 2:使用Xsheel软件远程链接自己的虚拟机,方便操作.输入自己ubuntu操作系统的账号密码之后就链 ...
- Zookeeper,Hbase 伪分布,集群搭建
工作中一般使用的都是zookeeper和Hbase的分布式集群. more /etc/profile cd /usr/local zookeeper-3.4.5.tar.gz zookeeper在安装 ...
- kafka系列一:单节点伪分布式集群搭建
Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...
- Hadoop单机/伪分布式集群搭建(新手向)
此文已由作者朱笑笑授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文主要参照官网的安装步骤实现了Hadoop伪分布式集群的搭建,希望能够为初识Hadoop的小伙伴带来借鉴意 ...
- 基于Hadoop伪分布式集群搭建Spark
一.前置安装 1)JDK 2)Hadoop伪分布式集群 二.Scala安装 1)解压Scala安装包 2)环境变量 SCALA_HOME = C:\ProgramData\scala-2.10.6 P ...
- Hadoop学习笔记(一):ubuntu虚拟机下的hadoop伪分布式集群搭建
hadoop百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin hadoop官网:http://hadoop.apache.org/ ...
- Hadoop伪分布式集群搭建
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 1.下载Hadoop压缩包 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop- ...
- Hadoop框架:单服务下伪分布式集群搭建
本文源码:GitHub·点这里 || GitEE·点这里 一.基础环境 1.环境版本 环境:centos7 hadoop版本:2.7.2 jdk版本:1.8 2.Hadoop目录结构 bin目录:存放 ...
随机推荐
- 【洛谷P1005】矩阵取数游戏
矩阵取数游戏 题目链接 每行分别跑一趟区间DP即可 这道题区间DP是非常裸的,按套路来即可 但是很毒瘤的是需要高精度, “我王境泽就是爆零,从这跳下去,也不会用__int128的!” #include ...
- Android学习笔记_15_网络通信之文件断点下载
一.断点下载原理: 使用多线程下载文件可以更快完成文件的下载,多线程下载文件之所以快,是因为其抢占的服务器资源多.如:假设服务器同时最多服务100个用户,在服务器中一条线程对应一个用户,100条线程在 ...
- git submodule update --init --recursive
最近在跑好几个模型,视频检测,物体检测,搭建mxnet时,有点问题,记录一下. 视频检测,mxnet需要用指定版本,git 切换到指定版本后,update了,但是依然提示说有些库找不到.想了想,应该是 ...
- js标准对象——Date
在JavaScript中,Date对象用来表示日期和时间. 要获取系统当前的时间: var now = new Date(); alert(now); now;//Mon Oct 23 2017 11 ...
- Oracle 数据导出注意事项
1.数据导出exp.expbd和imp.impbd 区别: exp,imp:既可以在客户端执行也可以在服务端执行,效率慢于expbd.impbd expbd.impbd:只能够在服务端执行,impbd ...
- ASP.NET安全验证
一.为什么要用安全验证,使用安全验证有什么好处. 构造特殊的链接地址,导致文件内的数据泄露 数据库泄露 安全防范的首要策略:所有的HTTP访问都要经过IIS,所以限制IIS的安全性是关键 二.安全验证 ...
- numpy数组用法大全
机器学习的最基础模块就是numpy模块了,而numpy模块中的数组操作又是重中之重,所以我们要把数组的各种方法弄得明明白白的,以下就是数组的一些常用方法 1.创建各种各样的数组: import num ...
- centos7上部署新版 jumpserver 跳板机服务
CentOS 7 建议在一个纯净的 centos7上进行下面的安装部署 关闭 selinux 和防火墙 [root@jumpserver ~]# setenforce 0 [root@jumpserv ...
- 最小费用最大流模板 洛谷P3381
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表 ...
- 开学测试之——ATM
---恢复内容开始--- package ATM; //信1705-2 20173568 李泽宇 import java.util.*; import java.io.File; import ...