本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 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. WCF系统内置绑定列表与系统绑定所支持的功能

      WCF系统内置绑定列表 绑定 配置元素 说明 传输协议 编码格式 BasicHttpBinding <basicHttpBnding> 一个绑定,适用于与符合 WS-Basic Pro ...

  2. Linux主机SSH免密设置解析

    为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录.那么该如何设置?是不是免密码登录就不安全了呢? 一.被 ...

  3. SourceTree for Mac 破解版

    soureTree For mac 破解版下载地址:链接: https://pan.baidu.com/s/1c19kFRi 密码: ai7f

  4. 函数的非固定参数-Day3

    一.函数非固定参数 1.默认函数,我们在传参之前,选给参数指定一个默认的值.默认参数特点是非必须传递的. def test(x,y=2): print(x) print(y) print(" ...

  5. Mybatis入门(一)之操作数据库

    Whats Mybatis 持久层框架, 替代MVC层中DAO,因为DAO 层的需求就是 :能与数据库交互的对象. 能执行SQL语句. 不同于JDBC的connection,MyBatis 中有个Sq ...

  6. 为什么要学ADO.NET。。。什么是ADO.NET。。。

    之前学的 •只能在查询分析器里查看数据,操作数据,我们不能让普通用户去学sql,所以我们搭建一个界面(Web Winform)让用户方便的操作数据库中的数据.   •ADO.NET就是一组类库,这组类 ...

  7. JAVA图片批量上传JS-带预览功能

    这篇文章就简单的介绍一个很好用的文件上传工具,批量带预览功能.直接贴代码吧,都有注释,很好理解. HTML页面 <!DOCTYPE html> <%@ taglib prefix=& ...

  8. Talk 3: Rob Pike on Upspin (Gopherfest 2017)

    Talk 3: Rob Pike on Upspin Upspin is an experimental project to build a framework for naming and sha ...

  9. C# new关键字和对象类型转换(双括号、is操作符、as操作符)

    一.new关键字 CLR要求所有的对象都通过new来创建,代码如下: Object obj=new Object(); 以下是new操作符做的事情 1.计算类型及其所有基类型(一直到System.Ob ...

  10. 脚本全选全不选操作asp.net treeview控件

    //树节点勾选(取消)上级自动全部勾选(取消)下级,勾选下级自动勾选上级,取消全部下级,自动取消上级 //事件响应函数 var HandleCheckbox = function () { //取得事 ...