/zookeeper-3.4.6.jar:/root/zk/zookeeper-3.4.6/bin/.. /zookeeper-3.4.6.jar:/root/zk/zookeeper-3.4.6.1/bin/.. tmp/zookeeper1/zookeeper_server.pid -rw-r--r-- 1 root root 4 Dec 3 19:33 /tmp/zookeeper2/zookeeper_server.pid ] [zk: localhost:2180(CONNECTED) 1] create /defg defg Created /defg [zk: localhost:2180(CONNECTED) 2] $MyWatcher@2e3fe12e 2015-12-03 20:24:38,756 [myid:] - INFO [main-SendThread(localhost:2182):ClientCnxn
常见的集群模式是: Master/Slave 模式(主备模式)。 但是,在 ZooKeeper 中并没有选择传统的 Master/Slave 概念,而是引入了 Leader、Follower 和 Observer 三种角色,如下图所示: ? ZooKeeper 集群 在 ZooKeeper 集群中,所有的机器通过 Leader 选举过程来选定一台称为 “Leader” 的机器,Leader 既可以为客户端提供写服务,也能提供读服务。 ZooKeeper 中的不同角色 当 Leader 服务器出现网络中断、崩溃退出或重启等异常情况时,ZAB 协议就会进人恢复模式,然后选举产生新的 Leader 服务器,这个过程大致是这样的: Leader ,同步完成之后,准 Leader 才会成为真正的 Leader; Broadcast(广播阶段): 到了这个阶段,Zookeeper 集群才能正式对外提供事务服务,并且 Leader 可以进行消息广播,
Zookeeper集群 Zookeeper集群简介 1为什么搭建Zookeeper集群 大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。 下面是zookeeper集群部署结构图: ? 2了解Leader选举 Zookeeper的启动过程中leader选举是非常重要而且最复杂的一个环节。那么什么是leader选举呢? 我们这里要求搭建一个三个节点的Zookeeper集群(伪集群)。 2准备工作 重新部署一台虚拟机作为我们搭建集群的测试服务器。 (1)安装JDK 【此步骤省略】。 指定ID为1,则输入命令 (2)在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表。 由此得出结论,3个节点的集群,从服务器挂掉,集群正常 (2)我们再把1号服务器(从服务器)也停掉,查看2号(主服务器)的状态,发现已经停止运行了。 ?
配置: tickTime=2000 dataDir=D:/zookeeper-3.2.2/data clientPort=2181 initLimit=5 syncLimit=2 server.1 =192.168.211.1:2888:3888 server.2=192.168.211.2:2888:3888 initLimit:客户端与服务器件多少个tickTime没有检查到心跳,则表示断开连接 ; syncLimit:服务器集群件多少个tickTime没有检查到心跳,则表示服务器挂了; server.zid=ip:cport:lport :其中zid为该服务器的标识,后面要用到,ip为机器地址 可见配置集群需要为每个zookeeper几点进行配置,这样如果添加节点那不是需要全部重新配置? 连接: new ZooKeeper("ip:port,ip:port...
前言 ZooKeeper 本身就是为分布式应用服务的,为了确保高可用所以很少使用 Standalone 模式,而更多是使用集群模式运行 一般而言使用3个或大于3个的奇数个server For replicated ,从而构成集群,这类集群可以展示集群的逻辑特性 但是由于其固有的架构缺乏实际的物理冗余,所以并不抗风险,不是真正意义上的高可用集群 ---- 拷贝目录 停掉应用后将 zookeeper-3.4.6 目录拷贝两份 [root@h101 zk]# ll -d zookeeper-3.4.6* drwxr-xr-x 10 1000 1000 4096 Dec 2 21:58 zookeeper-3.4.6 .1=127.0.0.1:8001:8101 server.2=127.0.0.1:8002:8102 [root@h101 zk]# ll zookeeper-3.4.6*/conf/zoo.cfg :8001:8101 server.2=127.0.0.1:8002:8102 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper2
zookeeper旧集群修改配置 旧集群使用的是静态配置,先修改成动态配置,只需要修改配置文件,加入以下内容,重启zookeeper服务,先重启两个follower,最后重启leader(这是第一次重启 reconfigEnabled=true # 启用动态配置 zookeeper新集群修改配置 新集群三个节点直接部署成动态配置,在配置文件中加入新、旧集群所有的节点地址 vim /data/program zookeeper服务 由于现在leader节点还在旧集群上,登录leader节点,动态添加新集群三个节点 . 节点,先动态移除旧集群节点的2个 follower 节点 . ,leader 在旧集群的第三个节点上,新集群三个节点都是follower 第二次重启 leader节点,zookeeper 会重新选举 leader,新集群会被选举为 leader 节点 .
: /root/zk/zookeeper-3.4.6/bin/.. /root/zk/zookeeper-3.4.6/bin/.. zk/zookeeper-3.4.6.1/bin/.. zk/zookeeper-3.4.6.2/bin/.. /zookeeper-3.4.6.jar:/root/zk/zookeeper-3.4.6/bin/..
-3.6.4-bin zookeeper[root@localhost local]# cd zookeeper/[root@localhost zookeeper]# mkdir data # initial # synchronization phase can takeinitLimit=10 #Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量),这里表示为10*2s sending a request and getting an acknowledgementsyncLimit=5 #Leader和Follower之间同步通信的超时时间,这里表示如果超过5*2s #metricsProvider.httpPort=7000#metricsProvider.exportJvmInfo=true#添加集群信息server.1=192.168.183.153:3188 :3288server.2=192.168.183.154:3188:3288server.3=192.168.183.155:3188:3288root@localhost zookeeper]# cd
集群规划 Zookeeper 是一个开源的分布式协调服务,主要用于管理和协调分布式系统中的各种服务和数据。通俗来说,它就像是一个“管理员”或“调度员”,帮助不同的服务和应用程序之间进行通信和协作。 hadoop102 hadoop103 hadoop104 zk zk zk 前提工作 集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper # 设置hadoop102的myid为2 vim myid 2 # 配置zoo.cfg文件 cd /opt/module/zookeeper/conf mv zoo_sample.cfg zoo.cfg # 修改设置配置文件 vim zoo.cfg # 修改数据存储路径配置 dataDir=/opt/module/zookeeper/zkData # 集群配置 server.2=hadoop102: 进程 查看每台机器的zk状态,可以显示 Zookeeper 的当前状态,包括集群信息、节点状态等 zkServer.sh status
安装zookeeper(三台主机上执行) 安装zookeeper cd /usr/local/src/ tar -C /usr/local/ -xzf zookeeper-3.5.4.tar.gz cd /usr/local/zookeeper-3.5.4 ln -s zookeeper-3.5.4 zookeeper 生成配置文件 cd /usr/local/zookeeper cp conf/zoo_sample.cfg =2181 server.1=192.168.3.220:2888:3888 server.2=192.168.3.221:2888:3888 server.3=192.168.3.222:2888:3888 2,创建的文件一定在数据文件夹中 启动zookeeper cd /usr/local/zookeeper/bin . /zkServer.sh start# ★★★★通过zkServer.sh status 查询节点状态出现问题★★★ 1、查看zk日志文件,host notreched ,(节点之间通信有问题) 2、防火墙放心端口
]# ls -l 总用量 1672 drwxr-xr-x 2 2002 2002 202 3月 7 2019 bin -rw-rw-r-- 1 2002 2002 97426 3月 7 2019 build.xml drwxr-xr-x 2 2002 2002 77 3月 7 2019 conf drwxr-xr-x 2 root root 6 9月 29 19:13 data drwxr-xr-x 2 2002 2002 4096 3月 7 2019 dist-maven -rw-rw-r-- 1 2002 2002 1709 2002 2002 308 3月 7 2019 lib -rw-rw-r-- 1 2002 2002 11970 3月 7 2019 LICENSE.txt drwxr-xr-x 2 -3.4.14/data dataLogDir=/opt/zookeeper-3.4.14/log server.1=192.168.129.200:2888:3888 server.2=192.168.129.201
最近公司用到了zookeeper做集群管理,这里按步骤记录一下其中的一些经验,也给后来的同学一些参考。由于这里只有一台服务器,因此搭建的其实是伪集群,多台服务器的搭建流程类似。 集群搭建环境: 发行版:CentOS-6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 集群搭建步骤: 1. 说明进程启动失败或集群未建立成功,这时需要查看对应目录中的zookeeper.out日志去找到相应的原因并去解决它。 8. 测试连接zookeeper集群 [root@rocket local]# cd zookeeper-server1;bin/zkCli.sh -server localhost:2181 ? 可以看到这里已经连接成功了,而且能查看节点情况,说明zookeeper集群已经开始工作了。 版权声明:本文为博主原创文章,未经博主允许不得转载。
本章主要讲解Zookeeper集群的搭建,搭建方式采用Docker容器的方式。 Zookeeper集群节点主机名称分别为zoo1,zoo2,zoo3 1.准备一份配置文件zoo.cfg,内容如下: tickTime=2000 dataDir=/var/lib/zookeeper/data server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 2.准备三分serverId文件 echo 1 > /usr/local/docker_app/zookeeper --ip 172.19.0.2 \ zookeeper # 启动zoo2节点 docker run -d \ -v /usr/local/docker_app/zookeeper/zoo2 --name=zookeeper3 \ --net zknet \ --ip 172.19.0.4 \ zookeeper 6.集群启动成功查看节点状态 # 进入容器 docker
一.环境准备 当前环境:centos7.3三台 软件版本:zookeeper-3.5.2 部署目录:/usr/local/zookeeper 启动端口:2181 配置文件:/usr/local/zookeeper /zookeeper-3.5.2-alpha/zookeeper-3.5.2-alpha.tar.gz 2.解压并移动,再创建一个数据目录data(3台同时操作) tar zxvf zookeeper- 4.创建节点文件(3台同时操作) vim conf/zoo.cfg.dynamic server.1=172.26.98.239:2888:3888 ##第一台节点IP端口 server.2=172.26.98.240 ##第二台节点IP端口 server.3=172.26.98.241:2888:3888 ##第三台节点IP端口 5.建立myid文件(3台同时操作) vim data/myid 1 #第二台是2, 第三台是3 三.使用验证 启动效验(3台同时操作) /usr/local/zookeeper/bin/zkServer.sh start 查看集群状态(3台同时操作) /usr/local/zookeeper
Zookeeper集群之前自己也搭建过了。这次又学习zookeeper,所以当复习一下。今天工作也做完了,闲着也是闲着。写点笔记。 首先要明确的是zookeeper的客户端连接的端口默认是2181,这个端口是可以设置的。因为集群环境下CP的保证需要心跳和通信。 也就是zookeeper中的leader选举和集群数据通信,其实这两块就对应两个端口,一个是选主,一个是通信。明确了这一点之后,我们就开始部署集群吧! 1.将我们的zookeeper复制三份(这里用三个节点的集群做实例) 2.进入每个实例修改配置文件,增加选主和通信的配置 需要说明的是这里的集群配置 server.0=192.168.21.119: 2871:3871 server.1=192.168.21.119:2881:3881 server.2=192.168.21.119:2891:3891 这里的server.节点编号=ip:选主端口:
# chown -R zk:zk/data/zookeeper 通过zk用户创建数据和日志文件夹: $ mkdir/data/zookeeper/data $ mkdir /data/zookeeper / # chown -R zk:zk /usr/local/zookeeper-3.4.6 改动ZooKeeper配置文件: $ cd/usr/local/zookeeper-3.4.6/conf ,内容为ServerId编号,如上配置文件里,三台的ZooKeeper的myid内容分布为1, 2, 3。 安装ZooKeeper到另外2台。构建一个三台的ZooKeeper集群。 启动ZooKeeper 启动 集群中的全部ZooKeeper都能够通过以下的命令启动: $ zkServer.sh start 正常情况下显示: JMX enabled by default Using
ZooKeeper 的应用场景包括但不限于统一命名服务、集群管理 和 分布式锁 等。 单机模式是指部署一个 ZooKeeper 进程,客户端直接与 ZooKeeper 进程进行通信;伪分布式模式是在单台计算机上运行多个 ZooKeeper 实例组成一个集群;集群模式则是在多台计算机上部署 在 ZooKeeper 集群中,会有一台机器作为 Leader 服务器负责管理和协调其他集群服务器。服务器的数量通常是单数。 ZooKeeper 集群的部署 这里使用三台虚拟机来部署 ZooKeeper 集群,三台虚拟机的服务器均为 CentOS,且主机名分别为 centos01、centos02 和 centos03 -3.4.10.tar.gz -C /opt/modules/ (2)配置 ZooKeeper 的配置文件 首先,在 ZooKeeper 的安装目录下创建一个 dataDir 目录,其用于存放
目标 在 3 台服务器上搭建 Zookeeper 的集群环境,配置完成后,验证是否正确可用 搭建思路 (1)在3台服务器上安装 Zookeeper (2)修改各个 Zookeeper 的配置文件 -3.4.8.tar.gz 分别拷贝到 3 台服务器的 /opt 目录下,解压缩 cd /opt tar xzvf zookeeper-3.4.8.tar.gz 2配置 进入配置文件所在目录 cd /opt zookeeper dataDir=/var/zookeeper 在文件末尾添加这 3 台服务器的信息 server.1=172.17.0.2:2888:3888 server.2=172.17.0.3 状态正确,集群搭建完成了 5操作测试 下面执行几个ZK客户端命令,看是否可以正常操作 节点列表 ? 初始状态下只有默认的 zookeeper 节点 添加节点 ? ? 获取节点数据 ? 删除节点 ? 测试的几个操作都正确执行,Zookeeper 集群可以正常工作了
目录 1 搭建要求 2 准备工作 3 配置集群 4 启动集群 5 模拟集群异常 ---- 1 搭建要求 真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群 我们这里要求搭建一个三个节点的Zookeeper集群(伪集群)。 2 准备工作 1、首先必须安装好JDK先。 /zookeeper-3/data 3 配置集群 1、在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。 由此得出结论,3个节点的集群,有一个从服务器挂掉,集群正常。 2、我们再把1号服务器(从服务器)也停掉。 由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。 3、我们再次把1号服务器启动起来。
文章目的:通过实践,介绍如何部署Zookeeper集群。二、简洁 Zookeeper 是由Apache Handoop的子项目发展而来。是知名的互联网公司Yahoo创建的。 三、集群安装官网:Apache ZooKeeper 1、下载&解压此处以zookeeper-3.4.6版本为例,到官网下载zookeeper-3.4.6.tar.gz并解压到/opt/tpapp/ /zookeeper/datadataLogDir=/opt/tpapp/zookeeper/log添加集群机器名称及通讯端口信息(server.myid值=机器对应域名:集群通讯端口:选举通讯端口): server.1=name1:2888:3888server.2=name2:2888:3888server.3=name3:2888:3888在A机器的/opt/tpapp/zookeeper/data 5.检测集群 在A服务器连接客户端查看集群启动情况,执行命令:sh /opt/tpapp/zookeeper/bin/zkCli.sh -server name1:9527,name2:9527