zookeeper单机集群部署

     阅读(61)  2019-06-26 14:42:54

什么是Apache ZooKeeper

Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据。ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。

ZooKeeper提供的常见服务如下 :

  • 命名服务 - 按名称标识集群中的节点。它类似于DNS,但仅对于节点。
  • 配置管理 - 加入节点的最近的和最新的系统配置信息。
  • 集群管理 - 实时地在集群和节点状态中加入/离开节点。
  • 选举算法 - 选举一个节点作为协调目的的leader。
  • 锁定和同步服务 - 在修改数据的同时锁定数据。此机制可帮助你在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。
  • 高度可靠的数据注册表 - 即使在一个或几个节点关闭时也可以获得数据。

分布式应用程序提供了很多好处,但它们也抛出了一些复杂和难以解决的挑战。ZooKeeper框架提供了一个完整的机制来克服所有的挑战。竞争条件和死锁使用故障安全同步方法进行处理。另一个主要缺点是数据的不一致性,ZooKeeper使用原子性解析。

单机集群部署

生产环境下至少需要三台机器,开发环境下可以在单台机器上部署集群,这里会部署三个服务

准备

点击下载apache-zookeeper-3.5.5-bin.tar.gz

直接解压缩就可以使用了,在bin目录下:

tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
cd apache-zookeeper-3.5.5-bin/bin

配置文件

这里我在/usr/local下新建目录zkcluster

/usr/local/zkcluster
  zk1
    data
      myid    
    log
    zoo.cfg
  zk2
    ...
  zk3
    ...

data:数据目录下面的myid文件内容分别是:1, 2, 3(就一个数字)
log:日志目录
zoo.cfg:配置文件,zk1的配置文件如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zkcluster/zk1/data
dataLogDir=/usr/local/zkcluster/zk1/log
clientPort=2181
server.1=127.0.0.1:2287:3387
server.2=127.0.0.1:2288:3388
server.3=127.0.0.1:2289:3389

zk2和zk3的zoo.cfg内容跟上面一样,只是将dataDir和dataLogDir中的zk1改为自己目录的名字

启动三个服务

./zkServer.sh start /usr/local/zkcluster/zk1/zoo.cfg
./zkServer.sh start /usr/local/zkcluster/zk2/zoo.cfg
./zkServer.sh start /usr/local/zkcluster/zk3/zoo.cfg

这样很简单的zookeeper集群就部署好了

解释

myid:服务的唯一标识,对应server.1,server.2,server.3后面的数字,1~255之间
server.1:格式是host:port:port,第一个端口是zookeeper服务器之间的通信端口,第二个端口是选举leader的端口

文章评论

Keep it simple,stupid
文章数
290
总访问量
305797
今日访问
440
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部