(二)、Zookeeper安装

Dubbo支持多种注册中心,但是官方建议使用Zookeeper注册中心。

1.Zookeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper分布式服务框架Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据管理问题。
如:集群管理、统一服务命名、分布式配置管理、分布式消息队列、分布式锁、分布式通知协调等。
ZooKeeper对分布式开发带来很多便利,利用ZK的独有特性巧妙地解决了很多难题,很多分布式技术用到ZooKeeper或多或少特性,尤其是新生代分布式技术几乎都会依赖ZooKeeper特性,如HBase、火爆的Storm

2.Zookeeper安装

2.1单机模式

1.下载ZooKeeper,最新是zookeeper-3.4.8.tar.gz
http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
2.将下载文件解压。找到对应的conf目录创建zoo.cfg(或者复制zoo_sample.cfg改名为zoo.cfg)修改对应的配置项。如下:


3.启动ZooKeeper(配置环境变量或进入到对应的bin目录下启动)zkServer.cmd


4.输入JPS查看。启动后jps可以看到QuorumPeerMain的进程。如下:


5.启动客户端查看(zkCli.cmd)
启动Server成功的日志:


启动Server失败的日志:

2.2集群模式

1.复制三个ZooKeeper的服务,如下图:
 
2.修改对应的conf下得Zoo.cfg文件


3.在对应的镜像dataDir创建对应的myid值对应为1、2、3
4.启动ZooKeeper服务,如我这里配置三个ZooKeeper。当三个启动都成功后不会报错,有服务没有启动报如下错误(这个错误无关紧要)。

 

2.3伪集群分布模式

1.复制conf下zoo.cfg
zoo4.cfg,zoo5.cfg,zoo6.cfg
内容如下:
 
2.在对应的镜像dataDir创建对应的myid值对应为4、5、6
3.复制三份zkEnv.cmd,修改其加载ZOO.cfg的路径。如下:


4.复制三份zkServer.cmd,修改其加载zkEnv.cmd 的路径。如下:


 或者:
1-2一样,去掉第三部,直接在zkSever.cmd 中设置ZOO.cfg的加载路径:
如下:

3.ZooKeeper配置文件说明

dataDir
用于存放内存数据库快照的文件夹,同时用于集群的 myid 文件也存在这个文件夹里。
dataLogDir
用於单独设置 transaction log 的目录,transaction log 分离可以避免和普通 log 还有快照的竞争。
tickTime
心跳时间,为了确保 client-server 连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。
clientPort
客户端监听端口。
globalOutstandingLimit
client 请求队列的最大长度,防止内存溢出,默认值为 1000。
preAllocSize
预分配的 Transaction log 空间 block 为 proAllocSize KB,默认 block 为 64M,一般不需要更改,除非 snapshot 过于频繁。
snapCount
在 snapCount 个 snapshot 后写一次 transaction log,默认值是 100,000。
traceFile
用于记录请求的 log,打开会影响性能,用于 debug,最好不要定义。
maxClientCnxns
最大并发客户端数,用于防止 DOS 的,默认值是 10,设置为 0 是不加限制。
clientPortBindAddress
可以设置指定的 client ip 以及端口,不设置的话等于 ANY:clientPort
minSessionTimeout
最小的客户端 session 超时时间,默认值为 2 个 tickTime,单位是毫秒
maxSessionTimeout
最大的客户端 session 超时时间,默认值为 20 个 tickTime,单位是毫秒
electionAlg
用于选举的实现的参数,0 为以原始的基于 UDP 的方式协作,1 为不进行用户验证的基于 UDP 的快速选举,2 为进行用户验证的基于 UDP 的快速选举,3 为基于 TCP 的快速选举,
默认值为 3。
initLimit
多少个 tickTime 内,允许其他 server 连接并初始化数据,如果 zooKeeper 管理的数据较大,则应相应增大这个值。
syncLimit
多少个 tickTime 内,允许 follower 同步,如果 follower 落后太多,则会被丢弃。
leaderServes
leader 是否接受客户端连接。默认值为 yes。leader 负责协调更新。当更新吞吐量远高
于读取吞吐量时,可以设置为不接受客户端连接,以便 leader 可以专注于同步协调工作。
server.x=[hostname]:nnnnn[:nnnnn]
配置集群里面的主机信息,其中 server.x 的 x 要写在 myid 文件中,决定当前机器的 id,第一个 port 用于连接 leader,第二个用于 leader 选举。如果 electionAlg 为 0,则不需要第二
个 port。hostname 也可以填 ip。
group.x=nnnnn[:nnnnn]
分组信息,表明哪个组有哪些节点,例如 group.1=1:2:3 group.2=4:5:6 group.3=7:8:9。
weight.x=nnnnn
权重信息,表明哪个结点的权重是多少,例如 weight.1=1 weight.2=1 weight.3=1。
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章