Zookeeper 安装与部署

Zookeeper安装方式有三种,单机模式集群模式以及伪集群模式

■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;

■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;

■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)

单机模式

下载 ZooKeeper,解压,将 conf 目录下的 zoo_sample.cfg 复制一份重命名为 zoo.cfg

cp zoo_sample.cfg zoo.cfg

然后直接启动 ZooKeeper 就行了

bin/zkServer.sh start

启动 ZooKeeper

查看 ZooKeeper 运行状态

查看 ZooKeeper 运行状态

可以看到 ZooKeeper 的 Mode 是单机模式的(standalone)

使用客户端连接  ZK

本地连接

bin/zkCli.sh

本地连接 ZK

远程连接 ZK

bin/zkCli.sh -server ip:port

远程连接 ZK

停止 ZooKeeper

bin/zkServer.sh stop

停止 ZK


伪集群模式

Zookeeper不但可以在单机上运行单机模式Zookeeper,而且可以在单机模拟集群模式 Zookeeper的运行,也就是将不同节点运行在同一台机器。我们在实验的时候,可以先使用少量数据在集群伪分布模式下进行测试。当测试可行的时候,再将数据移植到集群模式进行真实的数据实验。这样不但保证了它的可行性,同时大大提高了实验的效率。这种搭建方式,比较简便,成本比较低,适合测试和学习,如果你的手头机器不足,就可以在一台机器上部署了 3个server。

注意事项

在一台机器上部署了3个server,需要注意的是:在伪分布式模式下我们使用的每个配置文件模拟一台机器,也就是说单台机器上运行多个Zookeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例。

■ clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183

■ dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的

■ server.X和myid: server.X 这个数字就是对应,data/myid中的数字。在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配 server.1 server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突。

同样将 conf 目录下的 zoo_sample.cfg 复制三份,分别重命名为 zoo1.cfg,zoo2.cfg,zoo3.cfg。

cp zoo_sample.cfg zoo1.cfg

cp zoo_sample.cfg zoo2.cfg

cp zoo_sample.cfg zoo3.cfg

然后分别修改每个配置文件,我的配置如下:

zoo1.cfg
zoo2.cfg
zoo3.cfg

创建 zoox.cfg 配置文件中 dataDir 和 dataLogDir 的路径,

# 创建数据目录

mkdir -p /var/elvis/zookeeper/data/server1

mkdir -p /var/elvis/zookeeper/data/server2

mkdir -p /var/elvis/zookeeper/data/server3

# 创建日志文件目录

mkdir -p /var/elvis/zookeeper/logs/server1

mkdir -p /var/elvis/zookeeper/logs/server1

mkdir -p /var/elvis/zookeeper/logs/server1

在每个 dataDir 目录下常见一个 myid 文件并在其中写入 server 对应的序号,比如在 /var/elvis/zookeeper/data/server1 目录下创建一个 myid 文件,并在 myid 中写入 1,其他目录同理。

dataDir 目录
dataLogDir 目录
每个 myid 中写入对应的 Server 序列号

然后使用每个配置文件启动3个 ZooKeeper 实例:

bin/zkServer.sh stop conf/zoo1.cfg

bin/zkServer.sh stop conf/zoo2.cfg

bin/zkServer.sh stop conf/zoo3.cfg

启动3个 ZK 实例

可以使用 jps 来查看是否启动成功

jps -ml

jps 查看 zk 是否启动

查看 zk 的运行状态

bin/zkServer.sh status conf/zoo1.cfg

bin/zkServer.sh status conf/zoo2.cfg

bin/zkServer.sh status conf/zoo3.cfg

查看 ZK 运行状态

可以看到 ZK 的 Mode 不再是 standalone 了,而且 server2 作为 leader,其他2台server 作为 follower。

客户端连接 zk 集群

本地连接/远程连接

bin/zkCli.sh -server ip:2181

bin/zkCli.sh -server ip:2182

bin/zkCli.sh -server ip:2183

连接 2181 端口
连接 2182 端口
连接 2183 端口

可以看见,我们远程连接任何一个端口都能够连接上。

上面我们知道 server2 是 leader,所以我们使用客户端连接到 server2上,然后创建一些节点。

bin/zkCli.sh -server 39.106.111.160:2182

create /zktest 123

连接 server2 并创建一个节点

现在我们在本地连接到 server1 看能不能看到刚才我们创建的节点。

bin/zkCli.sh -server localhost:2181

ls /

get /zktest

连接 server1 获取数据

可以看到我们在 server1 上也获取到了刚才我们通过远程连接在 server2 上创建的 /zktest 数据。

现在我们尝试将 server2 这个leader 给停掉。

bin/zkServer.sh stop conf/zoo2.cfg

停掉 server2 这个 leader

然后查看 server1和 server3 的运行状态

查看 server1 和 server3 状态

现在可以看到 ZooKeeper 通过选举,将 server3选举成了新的 leader。

这个时候我们刚才远程连接到 server2 的客户端开始报错了,zkCli.sh 客户端并没有实现连接断后,自动连接其他节点的功能。

zkCli.sh 连接到 server2 不断的报错

这时我们再重启 server2

bin/zkServer.sh start conf/zoo2.cfg

然后再来查看各个 server 的运行状态

server 的运行状态

可以看到 server2 再次加入组织,不过 server2已经不再是 leader 了。

这个时候连接 sever2 的客户端也从报错中恢复过来。

集群模式

集群模式和伪分布式部署基本相同,唯一的区别就是 zoo.cfg 中,ip 配置不在是127.0.0.1 或 localhost 了,而是真正的机器 ip。

server.2= ip:2288:3388

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容