【ZooKeeper Notes 27】ZooKeeper管理员指南——部署与管理ZooKeeper

查看PDF版本

1.部署

本章节主要讲述如何部署ZooKeeper,包括以下三部分的内容:

1. 系统环境

2. 集群模式的配置

3. 单机模式的配置

系统环境和集群模式配置这两节内容大体讲述了如何部署一个能够用于生产环境的ZK集群。如果仅仅是想在单机上将ZK运行起来,进行一些开发与测试,那么第三部分或许是你的菜。

1.1系统环境

1.1.1平台支持

平 台

运行client

运行server

开发环境

生产环境

GNU/Linux

Sun Solaris

FreeBSD

ⅹ,对nio的支持不好

Win32

MacOSX

注:运行client是指作为客户端,与server进行数据通信,而运行server是指将ZK作为服务器部署运行。

1.1.2软件环境

ZooKeeper Server是一个Java语言实现的分布式协调服务框架,因此需要6或更高版本的JDK支持。集群的机器数量方面,宽泛的讲,其实是任意台机器都可以部署运行的,注意,这里并没有说一定要奇数台机器哦!通常情况下,建议使用3台独立的Linux服务器构成的一个ZK集群。

1.2集群模式的配置

为了确保ZooKeeper服务的稳定与可靠性,通常是搭建成一个ZK集群来对外提供服务。关于ZooKeeper,需要明确一个很重要的特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的(本文下面就用“过半存活即可用”来代替这个特性吧^-^)。正是基于这个特性,建议是将ZK集群的机器数量控制为奇数较为合适。为什么选择奇数台机器,我们可以来看一下,假如是4台机器构成的ZK集群,那么只能够允许集群中有一个机器down掉,因为如果down掉2台,那么只剩下2台机器,显然没有过半。而如果是5台机器的集群,那么就能够对2台机器down掉的情况进行容灾了。

2. 设置Java heap 大小。避免内存与磁盘空间的交换,能够大大提升ZK的性能,设置合理的heap大小则能有效避免此类空间交换的触发。在正式发布上线之前,建议是针对使用场景进行一些压力测试,确保正常运行后内存的使用不会触发此类交换。通常在一个物理内存为4G的机器上,最多设置-Xmx为3G。

4. 配置文件zoo.cfg。初次使用zookeeper,按照如下这个简单配置即可:

本文后续章节会对这些参数进行详细的介绍,这里只是简单说几点:

A. 集群中的每台机器都需要感知整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式,每行写一个机器配置:server.id=host:port:port. 关于这个id,我们称之为Server ID,标识host机器在集群中的机器序号,在每个ZK机器上,我们需要在数据目录(数据目录就是dataDir参数指定的那个目录)下创建一个myid文件,myid中就是这个Server ID数字。

B. 在ZooKeeper的设计中,集群中任意一台机器上的zoo.cfg文件的内容都是一致的。因此最好是用SVN把这个文件管理起来,保证每个机器都能共享到一份相同的配置。

5. 关于myid文件。myid文件中只有一个数字,即一个Server ID。例如,server.1 的myid文件内容就是“1”。注意,请确保每个server的myid文件中id数字不同,并且和server.id=host:port:port中的id一致。另外,id的范围是1~255。

6. 至此,配置文件基本ok,可以尝试使用如下命令来启动zookeeper了:

$java-cpzookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf\org.apache.zookeeper.server.quorum.QuorumPeerMainzoo.cfg./zkServer.shstart

7. 连接ZK host来检验部署是否成功。

A. Java语言的话,可以通过运行这个命令来检测:

$java-cpzookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf:src/java/lib/jline-0.9.94.jar\org.apache.zookeeper.ZooKeeperMain-server127.0.0.1:2181

B. 如果是C语言的话,方法如下:

$makecli_st$makecli_mt

然后按照的这样的方式连接ZK:$ cli_mt 127.0.0.1:2181。无论运行哪种客户端,最终都是一个类似于文件系统的命令行操作。

注意:除了上面这种检测方法,其实%ZK_HOME%/bin也有其它脚本,下面这个命令执行后,就进入了zookeeper树状结构的文件系统中。

./zkCli.sh

另外,还有一种方式,能够查看ZK服务器当前状态,如下,这个能够很好的看出目前这个机器的运行情况了:

1.3单机模式的配置

如果你想安装一个ZooKeeper来进行开发测试,通常可以使用单机模式来启动ZK。大体的步骤和上面说的是一样了,除了配置文件会更加简单一些。详细的配置方法可以查看这里:

2.运 维

本章节主要要讲述如何更好地运维ZooKeepr,香港虚拟主机,大致包含以下几部分内容:

2.1. 部署方案的设计

2.2.日常运维

2.3. Server的自检恢复

2.4. 监控

2.5. 日志管理

2.6. 数据加载出错

2.7. 配置参数详解

2.8. 常用的四字命令

2.9. 数据文件管理

2.10. 注意事项

2.1 部署方案的设计

我们常说的ZooKeeper能够提供高可用分布式协调服务,是要基于以下两个条件:

人之所以能,是相信能。

【ZooKeeper Notes 27】ZooKeeper管理员指南——部署与管理ZooKeeper

相关文章:

你感兴趣的文章:

标签云: