Centos7 Zookeeper

本文版权归博客园和做者吴双本人共同全部 转载和爬虫请注明原文地址 www.cnblogs.com/tdwshtml

一.写在前面

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

二.集群配置和踩坑

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

1 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz   下载
2  
3 tar -zxvf zookeeper-3.4.10.tar.gz   解压
4  
5 mv zookeeper-3.4.10 /usr/local  剪切
6  
7 mv zookeeper-3.4.10/ zookeeper 重命名

下面修改配置文件命名apache

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

自行mkdir建立data文件夹。服务器

在配置文件末尾 配置集群 我是单台机器伪集群 三个节点
1 server.1=your_ip:20881:30881
2 server.2=your_ip:20882:30882
3 server.3=your_ip:20883:30883
在data文件夹中建立文件myid 来作一个标识
nano myid 在文件中填写0 而且保存。须要注意的是刚才咱们的zookeeper文件夹是不使用的,仅做为咱们copy新节点的本来。
接下来复制三份zk
1 cp -r zookeeper/ zookeeper1
2 cp -r zookeeper/ zookeeper2
3 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解决问题。
1 server.1=0.0.0.0:20881:30881
2 server.2=0.0.0.0:20882:30882
3 server.3=0.0.0.0:20883:30883

三.应用和小结

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

1.数据发布与订阅并发

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

 <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.分布式队列

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

相关文章
相关标签/搜索