本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws

一.写在前面

ZK是一个高效的分布式协调服务,高可用的分布式管理协调框架。 朋友推荐一本书《从paxos到zookeeper》,对我帮助的确很大。

二.集群配置和踩坑

java安装和环境变量配置可以参考 http://www.cnblogs.com/tdws/p/4096300.html

 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz   下载

 tar -zxvf zookeeper-3.4.10.tar.gz   解压

 mv zookeeper-3.4.10 /usr/local  剪切

 mv zookeeper-3.4.10/ zookeeper 重命名

下面修改配置文件命名

 cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
配置一共没几行 。指定配置中的  dataDir
dataDir=/usr/local/zookeeper/data

自行mkdir创建data文件夹。

在配置文件末尾 配置集群 我是单台机器伪集群 三个节点

 server.1=your_ip:20881:30881
server.2=your_ip:20882:30882
server.3=your_ip:20883:30883
在data文件夹中创建文件myid 来做一个标识
nano myid 在文件中填写0 并且保存。需要注意的是刚才我们的zookeeper文件夹是不使用的,仅作为我们copy新节点的原本。
接下来复制三份zk
 cp -r zookeeper/ zookeeper1
cp -r zookeeper/ zookeeper2
cp -r zookeeper/ zookeeper3
分别修改三台节点 其datadir 将路径指定到自己节点之下
分别修改其端口号和myid,是各个zoo.conf 配置的其中port 设置分别为2181 2182 2183
各个myid内容分别为1 2 3
下面 去三个zk bin目录下 执行zkServer.sh start
 
第一次 出错
Error contacting service. It is probably not running.
哎 检查好几个小时ZK配置文件 试了十几种方法, 结果之前JAVA_HOME不小心配置错了,我是yum安装的jdk。
 
第二次 出错与解决
后来又出一次错误 是我stop zk所有节点之后 再次启动起不来 首先 jps命令 然后看到进程id和QuorumPeerMain
把Quorumpeermain的进程kill -9杀死
 
第三次 我丢雷楼某! 这个真是困扰了
如果使用阿里云ECS 专有网络+弹性公网IP
一般不能直接在ECS实例的程序例绑定和使用弹性公网IP地址。因为这个公网IP地址在ECS之外。所以我开了所有的端口,根本没有用,最后使用0.0.0.0解决问题。
 server.1=0.0.0.0:20881:30881
server.2=0.0.0.0:20882:30882
server.3=0.0.0.0:20883:30883

三.应用和小结

学习ZK一段时间,原生API比较难以使用,一般使用zkClient(dubbo依赖于此)和curator框架来操作ZK比较容易。 其典型应用场景包括以下几点:

1.数据发布与订阅

ZK在dubbo中作为注册中心的角色,服务方和调用方都在这里注册。举例来说明,我发布了一个dubbo service,消费者webapp引用这个服务

 <dubbo:service interface="com.s2s.service.ItemService" ref="itemServiceImpl"/>   发布的服务
 <dubbo:reference interface="com.s2s.service.ItemService" id="itemService"/>     引用服务(将使用RPC调用)

  接下来去服务器上查看数据节点,

可以看到根目录上有dubbo节点,dubbo下有com.s2s.service.ItemService, 其节点下又有consumers和providers等。

服务提供者启动时向/dubbo/com.s2s.service.ItemService/providers目录下写入URL

服务消费者启动时订阅/dubbo/com.s2s.service.ItemService/providers目录下的URL。 并且向/dubbo/com.s2s.service.ItemService/consumers目录下写入自己的URL

监控中心启动时订阅/dubbo/com.s2s.service.ItemService/目录下的所有提供者和消费者URL。

所以dubbo监控中心,查看到消费者和服务提供者

2.负载均衡

3.命名服务

4.分布式通知和协调

5.集群管理与Master选举

 比如SolrCloud管理。管理集群配置,监控集群状态,选举分片leader

6.分布式锁

    有很多人用它做分布式锁 但是做法比较底层。临时节点是在一次会话内有效,保证了出现异常时,锁能得以释放。比如client1 做分布式操作 那他创建一个临时节点 然后去做一些其他数据操作 做完操作后, 再去把临时节点移除。这时c2才能去操作。如果有10个客户端 要操作同一个数据,但是这个数据,有多个复制的版本 在不同的DB当中(当然值是一致)。
这个时候 分布式锁的作用就是同步操作。客户端1 操作 这条数据, 那就去zk立即 就create个节点 代表占用了这条数据,这时候客户端2 并发操作这条数据 先去zk上get一下这个节点,get到的话 可以等待一下,等客户端1 释放掉后,去再次create一下占领数据。

7.分布式队列

本文主要是安装配置,分布式理论的学习还是比较好,接下来将会继续分享实践中的收获。

Centos7 Zookeeper的更多相关文章

  1. Centos7 ZooKeeper 安装过程

    www.apache.org/dist/上可以下载Hadoop整个生态环境的组件,我下的Zookeeper3.4.6版本 我一般都是在一个虚拟机上将一.二步都做完,然后克隆出来,再到克隆出来的虚拟机上 ...

  2. CentOs7&zookeeper

    下载安装包 wget http://www.apache.dataguru.cn/zookeeper/stable/zookeeper-3.4.6.tar.gz 解压 tar xzvf zookeep ...

  3. Centos7 zookeeper单机/集群安装详解和开机自启

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  4. Centos7 Zookeeper 集群安装

    1:安装java 环境 -openjdk* 2:zookeeper 安装 (官网 http://www.apache.org/dyn/closer.cgi/zookeeper/) 2.1 目录创建 自 ...

  5. Linux centos7 zookeeper集群搭建

    Zookeeper集群搭建 描述:本章节主要单服务器搭建集群,在一个服务器上启动多个不同端口的zookeeper服务,非真实环境. 真实环境下zookeeper集群会搭建在多个物理服务器上,并非单一的 ...

  6. CentOS7 Zookeeper 安装

    集群部署 192.168.38.6  zk01192.168.38.7  zk02192.168.38.8  zk03 安装zookeeper,必须安装jdk. 1.下载 $ cd /usr/loca ...

  7. centos7 zookeeper集群的搭建

    说明:该集群的搭建是为了服务于solr集群,请参考我的关于solr集群搭建的博客. 1.创建solr-cloud目录 mkdir /usr/local/solr-cloud 2.将解压的apache- ...

  8. Centos7:zookeeper安装,配置与使用

    配置jdk环境 解压缩zookeeper的压缩包 配置 创建data目录 复制zoo_sample.cfg为zoo.cfg 修改confg/zoo.cfg中dataDir=**/data 常用命令 . ...

  9. Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结

    本文源码:GitHub·点这里 || GitEE·点这里 一.下载解压 1.Zookeeper简介 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供 ...

随机推荐

  1. 《About Face 3:交互设计精髓》【PDF】下载

    <About Face 3:交互设计精髓>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230384328 内容简介 全书分成3篇:第1 ...

  2. iOS Label 自适应高度

    推荐第二个 测试一,只改变numberOfLines属性,label的高度不会自适应(会有text中的一部分内容称为......) NSString *str = @"jgreijgirje ...

  3. Visual Studio 2017 : client version 1.22 is too old

    使用Vs2017 编译 eShopOnContainers-ServicesAndWebApps 时,报了错误: Microsoft.DotNet.Docker.CommandLineClientEx ...

  4. 为什么CPU需要时钟这种概念?

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/132 最近在研究计算机里的基本逻辑电路,想到一个问题:为什么CP ...

  5. 一个APP页面一个接口

    目前所在的公司做的是健康产业方面的APP,这个产品包括了安卓和IOS还有web三方面,除了要写后台管理的系统外,还要写移动端的接口.第一次写移动端接口就犯了一个错误,以为和web一样是怎么方便怎么来, ...

  6. bzoj 4012: [HNOI2015]开店

    Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的 想法当然非常好啦,但是她们也发现 ...

  7. 在海航云中部署 keepalived

    **本文属自我学习,不适合转载** 1. 准备工作 1.1 网络方面的准备工作 1.1.1 创建安全组 注意这里要添加 vrrp 协议支持,否则 keepalived 将无法正常工作. 1.1.2 创 ...

  8. 关于VS2017安装的一点扩充说明(15.5)

    其实逆天不推荐自己慢慢离线,找个离线包更新下再打包更快 Key:http://www.cnblogs.com/dunitian/p/4667038.html VS完整卸载工具:https://gith ...

  9. FPGA浮点数定点化

    因为在普通的fpga芯片里面,寄存器只可以表示无符号型,不可以表示小数,所以在计算比较精确的数值时,就需要做一些处理,不过在altera在Arria 10 中增加了硬核浮点DSP模块,这样更加适合硬件 ...

  10. 基于Docker的ELK日志平台搭建

    1.安装Docker Docker可简单理解为一个轻量级的虚拟机.Docker对进程进行封装隔离,隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器.Docker和传统虚拟化方式的不同.传统虚拟 ...