: /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/..
常见的集群模式是: Master/Slave 模式(主备模式)。 但是,在 ZooKeeper 中并没有选择传统的 Master/Slave 概念,而是引入了 Leader、Follower 和 Observer 三种角色,如下图所示: ? ZooKeeper 集群 在 ZooKeeper 集群中,所有的机器通过 Leader 选举过程来选定一台称为 “Leader” 的机器,Leader 既可以为客户端提供写服务,也能提供读服务。 ZooKeeper 中的不同角色 当 Leader 服务器出现网络中断、崩溃退出或重启等异常情况时,ZAB 协议就会进人恢复模式,然后选举产生新的 Leader 服务器,这个过程大致是这样的: Leader ,同步完成之后,准 Leader 才会成为真正的 Leader; Broadcast(广播阶段): 到了这个阶段,Zookeeper 集群才能正式对外提供事务服务,并且 Leader 可以进行消息广播,
echo "1" > /opt/zookeeper/zk3.5.10/dataDir/myid为什么要弄个这样奇怪的文件,只能说照做就行了,这个配置是让ZK知道当前所处的集群使用哪一份配置。 图片其他机器同步我们目前有三台服务器,但是只启动了一台,根据集群规则,zookeeper集群还没有达到半数服务器运行,集群无法正常运行。 也可以去网上找些sync的脚本,在机器很多的时候很有必要,3台的工作量还不是很大。图片15. 观察集群信息7912(IP为131) 第二台机器被选择为 Leader。 个人Zookeeper集群配置备份本着最简单原则,这里提供本文个人实验导出的Java和ZK配置文件夹。 推荐阅读zookeeper入门到精通03——zookeeper集群搭建-腾讯云开发者社区-腾讯云 (tencent.com)
Zookeeper集群 Zookeeper集群简介 1为什么搭建Zookeeper集群 大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。 3/conf/zoo.cfg clientPort=2183dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data 3配置集群 (1)在每个zookeeper 5模拟集群异常 (1)首先我们先测试如果是从服务器挂掉,会怎么样 把3号服务器停掉,观察1号和2号,发现状态并没有变化 ? 由此得出结论,3个节点的集群,从服务器挂掉,集群正常 (2)我们再把1号服务器(从服务器)也停掉,查看2号(主服务器)的状态,发现已经停止运行了。 ? 由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。 (3)我们再次把1号服务器启动起来,发现2号服务器又开始正常工作了。
配置: tickTime=2000 dataDir=D:/zookeeper-3.2.2/data clientPort=2181 initLimit=5 syncLimit=2 server.1 2888:3888 server.2=192.168.211.2:2888:3888 initLimit:客户端与服务器件多少个tickTime没有检查到心跳,则表示断开连接; syncLimit:服务器集群件多少个 可见配置集群需要为每个zookeeper几点进行配置,这样如果添加节点那不是需要全部重新配置? 连接: new ZooKeeper("ip:port,ip:port...
前言 ZooKeeper 本身就是为分布式应用服务的,为了确保高可用所以很少使用 Standalone 模式,而更多是使用集群模式运行 一般而言使用3个或大于3个的奇数个server For replicated ,从而构成集群,这类集群可以展示集群的逻辑特性 但是由于其固有的架构缺乏实际的物理冗余,所以并不抗风险,不是真正意义上的高可用集群 ---- 拷贝目录 停掉应用后将 zookeeper-3.4.6 目录拷贝两份 drwxr-xr-x 10 root root 4096 Dec 3 19:24 zookeeper-3.4.6.1 drwxr-xr-x 10 root root 4096 Dec 3 19:24 zookeeper-3.4.6.2 -rw-r--r-- 1 root root 17699306 Oct 31 2014 zookeeper-3.4.6.tar.gz [root 3 19:25 zookeeper-3.4.6.2/conf/zoo.cfg -rw-r--r-- 1 root root 193 Dec 3 19:23 zookeeper-3.4.6/conf
zookeeper旧集群修改配置 旧集群使用的是静态配置,先修改成动态配置,只需要修改配置文件,加入以下内容,重启zookeeper服务,先重启两个follower,最后重启leader(这是第一次重启 zookeeper服务 由于现在leader节点还在旧集群上,登录leader节点,动态添加新集群三个节点 . # 现集群中有3个 follower zk_synced_followers 3 # 已同步的 follower 节点数 zk_pending_syncs 0 zk_last_proposal_size /zkServer.sh restart 然后登录新集群的 leader 节点,动态移除旧集群的最后一个节点 ./zkCli.sh reconfig -remove 3 停止旧集群最后一个节点服务 . /zkCli.sh -server 127.0.0.1:12181 set /pulsar/functions '复制上面输出的内容,并改成新的zookeeper地址,大概有3行 '
服务器IP服务器名称192.168.183.153server1192.168.183.154server2192.168.183.155server3每台zookeeper都需要有下面的操作:[root -3.6.4-bin zookeeper[root@localhost local]# cd zookeeper/[root@localhost zookeeper]# mkdir data # zookeeperAdmin.html#sc_maintenance# The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# #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 2888:3888 server.3=hadoop103:2888:3888 server.4=hadoop104:2888:3888 分发zookeeper至hadoop103、hadoop104 # /module/ # 分别登录修改hadoop103、hadoop104上的myid文件中内容为3、4 一键启动脚本 # 创建脚本 vim start-zk.sh #! 进程 查看每台机器的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 2888表示zookeeper程序监听端口,3888表示zookeeper选举通信端口。 2,创建的文件一定在数据文件夹中 启动zookeeper cd /usr/local/zookeeper/bin .
-- 1 2002 2002 1515359 3月 7 2019 zookeeper-3.4.14.jar -rw-rw-r-- 1 2002 2002 836 3月 7 2019 -- 1 2002 2002 41 3月 7 2019 zookeeper-3.4.14.jar.sha1 drwxr-xr-x 3 2002 2002 47 3月 7 2002 4096 3月 7 2019 zookeeper-docs drwxr-xr-x 3 2002 2002 35 3月 7 2019 zookeeper-it drwxr-xr-x 4 2002 2002 46 3月 7 2019 zookeeper-jute drwxr-xr-x 5 2002 2002 176 3月 7 2019 zookeeper-recipes drwxr-xr-x 3 2002 2002 32 3月 7 2019 zookeeper-server 切换到conf目录下, 复制zoo_sample.cfg 文件名为zoo.cfg
最近公司用到了zookeeper做集群管理,这里按步骤记录一下其中的一些经验,也给后来的同学一些参考。由于这里只有一台服务器,因此搭建的其实是伪集群,多台服务器的搭建流程类似。 集群搭建环境: 发行版:CentOS-6.6 64bit 内核:2.6.32-504.el6.x86_64 CPU:intel-i7 3.6G 内存:2G 集群搭建步骤: 1. 3.4.6.tar.gz zookeeper-server3 3. 说明进程启动失败或集群未建立成功,这时需要查看对应目录中的zookeeper.out日志去找到相应的原因并去解决它。 8. 可以看到这里已经连接成功了,而且能查看节点情况,说明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 /zookeeper/zoo3/data:/var/lib/zookeeper/data \ -v /usr/local/docker_app/zookeeper/zoo3/datalog:/ --name=zookeeper3 \ --net zknet \ --ip 172.19.0.4 \ zookeeper 6.集群启动成功查看节点状态 # 进入容器 docker
/apache/zookeeper/zookeeper-3.5.2-alpha/zookeeper-3.5.2-alpha.tar.gz 2.解压并移动,再创建一个数据目录data(3台同时操作) tar zxvf zookeeper-3.5.2-alpha.tar.gz mv zookeeper-3.5.2-alpha /usr/local/zookeeper 3.创建数据目录和日志目录 cd /usr /local/zookeeper mkdir /data mkdir /var/log/zookeeper 3.创建配置文件更改配置(3台同时操作) vim conf/zoo.cfg clientPort myid文件(3台同时操作) vim data/myid 1 #第二台是2,第三台是3 三.使用验证 启动效验(3台同时操作) /usr/local/zookeeper/bin/zkServer.sh start 查看集群状态(3台同时操作) /usr/local/zookeeper/bin/zkServer.sh status /usr/bin/java ZooKeeper JMX enabled
Zookeeper集群之前自己也搭建过了。这次又学习zookeeper,所以当复习一下。今天工作也做完了,闲着也是闲着。写点笔记。 首先要明确的是zookeeper的客户端连接的端口默认是2181,这个端口是可以设置的。因为集群环境下CP的保证需要心跳和通信。 也就是zookeeper中的leader选举和集群数据通信,其实这两块就对应两个端口,一个是选主,一个是通信。明确了这一点之后,我们就开始部署集群吧! 1.将我们的zookeeper复制三份(这里用三个节点的集群做实例) 2.进入每个实例修改配置文件,增加选主和通信的配置 需要说明的是这里的集群配置 server.0=192.168.21.119: 集群的配置设置之后,我们就直接复制粘贴到其他的节点的配置文件上就好了。 这里要注意的这里的节点编号。需要我们新创建一个文件myid。其中需要设置节点的编号。
# 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 服务器负责管理和协调其他集群服务器。服务器的数量通常是单数。 2888:3888 server.3=centos03:2888:3888 下面对配置项进行简单的说明: tickTime:表示每次心跳间隔的时间; initLimit:集群中的 Follower (3)复制 ZooKeeper 安装信息到其他节点 将 centos01 的 ZooKeeper 安装目录复制到 centos01 和 centos03 两个服务器上。
目标 在 3 台服务器上搭建 Zookeeper 的集群环境,配置完成后,验证是否正确可用 搭建思路 (1)在3台服务器上安装 Zookeeper (2)修改各个 Zookeeper 的配置文件 (3)启动各个 Zookeeper (4)状态检查及操作测试 详细过程 1安装 Zookeeper Zookeeper 的安装非常简单,只需要下载和解压( 安装前需确认服务器上已经安装了JAVA环境 zookeeper dataDir=/var/zookeeper 在文件末尾添加这 3 台服务器的信息 server.1=172.17.0.2:2888:3888 server.2=172.17.0.3 状态正确,集群搭建完成了 5操作测试 下面执行几个ZK客户端命令,看是否可以正常操作 节点列表 ? 初始状态下只有默认的 zookeeper 节点 添加节点 ? ? 获取节点数据 ? 删除节点 ? 测试的几个操作都正确执行,Zookeeper 集群可以正常工作了
/zookeeper-3.4.6.jar:/root/zk/zookeeper-3.4.6/bin/.. root root 4 Dec 3 19:33 /tmp/zookeeper0/zookeeper_server.pid -rw-r--r-- 1 root root 4 Dec 3 19:33 / tmp/zookeeper1/zookeeper_server.pid -rw-r--r-- 1 root root 4 Dec 3 19:33 /tmp/zookeeper2/zookeeper_server.pid 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 4 numChildren = 0 [zk: localhost:2180(CONNECTED) 3] $MyWatcher@2e3fe12e 2015-12-03 20:24:38,756 [myid:] - INFO [main-SendThread(localhost:2182):ClientCnxn
目录 1 搭建要求 2 准备工作 3 配置集群 4 启动集群 5 模拟集群异常 ---- 1 搭建要求 真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群 /zookeeper-3/data 3 配置集群 1、在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。 usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status 5 模拟集群异常 1、首先我们先测试如果是从服务器挂掉,会怎么样,把3号服务器停掉 由此得出结论,3个节点的集群,有一个从服务器挂掉,集群正常。 2、我们再把1号服务器(从服务器)也停掉。 由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。 3、我们再次把1号服务器启动起来。