本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 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. 《CLR via C#(第4版)》【PDF】下载

    <CLR via C#(第4版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382189 via C#(第4版)>[PD ...

  2. 【java】反射简单示例

    package 反射; public class Test反射 { public static void main(String[] args) { System.out.println(Runtim ...

  3. Thymeleaf引擎支持Multi Prefix

    最近团队的一个项目在重构,希望引入Thymeleaf减少页面端的代码复杂性.在重构过程中,发现html文件需要保存在多个不同的目录中,但Thymeleaf缺省的实现不支持这种方式. 1        ...

  4. 【知了堂学习笔记】_String、StringBuffer与StringBuilder的区别

    String Stringbuffer  StringBuilder的区别: 1.string是字符串常量,且长度是不可改变的,Stringbuffer.stringBuilder是字符串变量 2.S ...

  5. K:java中properties文件的读写

    Properties类与.properties文件:   Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集的类,不过Properties有特殊 ...

  6. shiro Filter--拦截器

    一 shiro自带的filter:下面主要叙述顺序是 NameableFilter->OncePerRequestFilter->AdviceFilter->PathMatching ...

  7. 使用 mysql PDO 防止sql注入

    技巧: 1. php升级到5.3.6+,生产环境强烈建议升级到php 5.3.9+ php 5.4+,php 5.3.8存在致命的hash碰撞漏洞. 2. 若使用php 5.3.6+, 请在在PDO的 ...

  8. day9集合以及这段时间的总结 未完待续

    随笔: # 可变类型:# 列表(可以存放多个值,可以按索引取值,是有序的),# 字典(字典里面是KEY:VALUE类型,key必须是不可变类型,不能按索引取值 因为它们是无序的,按KEY取值),# 集 ...

  9. Keras 学习之旅(一)

    软件环境(Windows): Visual Studio Anaconda CUDA MinGW-w64 conda install -c anaconda mingw libpython CNTK ...

  10. 一个超级简单的demo带你走进redux的大坑

    先上代码 import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import { createStor ...