linux搭建zookeeper集群+kafka集群

一、zookeeper和kafka简介:
(1)ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。
原文链接:https://blog.csdn.net/weijifeng_/article/details/79775738

在zookeeper的集群模式中,当超过半数的服务器正常运行时,整个集群才能够正常运行。如:当集群机器数量为3时,当一台服务器挂掉,正常运行的服务器数还有2台,集群依旧可以正常服务,再挂掉一台就不能正常服务了。

为什么推荐奇数台机器呢?当集群机器数量为4时,集群最多允许挂掉一台服务器(挂掉2台,集群中正常运行的服务器没超过半数),而集群机器数量为3时,也是最多允许挂掉一台服务器,在可靠性相同的情况下,选择3台比选择4台会减少一台服务器的资源。

因为资源有限,本文采用伪分布式集群模式,即一台机器分别安装部署3个zookeeper(Linux系统),且版本号为3.4.14。

(2)Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

主要应用场景是:日志收集系统和消息系统。

Kafka主要设计目标如下:
以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
同时支持离线数据处理和实时数据处理。
支持在线水平扩展。
原文链接:https://www.cnblogs.com/frankdeng/p/9310684.html

因为资源有限,本文采用伪分布式集群模式,即一台机器分别安装部署3个kafka(Linux系统),且版本号为kafka_2.13-2.4.0。

二、zookeeper集群的部署
1.在官网http://mirror.bit.edu.cn/apache/zookeeper/
下载zookeeper压缩包后分别复制并解压到home目录下的zookeeper1,zookeeper2,和zookeeper3文件夹下。

2.分别在/home/zookeeper1/zookeeper-3.4.14/,/home/zookeeper2/zookeeper-3.4.14/,/home/zookeeper3/zookeeper-3.4.14/目录下创建data文件夹(用于存放zookeeper数据)和logs文件夹(用于存放日志文件)。以zookeeper1为例:

cd /home/zookeeper1/zookeeper-3.4.14
mkdir data
mkdir logs

分别执行以下命令copy配置文件,以zookeeper1为例:

cd /home/zookeeper1/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg

然后在zoo.cfg配置文件中分别设置数据和日志存放路径,以zookeeper1为例:

dataDir=/home/zookeeper1/zookeeper-3.4.14/data
dataLogDir=/home/zookeeper1/zookeeper-3.4.14/logs
截图

3.运行以下命令分别创建zookeeper myid文件:

cd /home/zookeeper1/zookeeper-3.4.14/data
touch myid
vim myid

输入1,按Esc+:wq保存退出。

cd /home/zookeeper2/zookeeper-3.4.14/data
touch myid
vim myid

输入2,按Esc+:wq保存退出。

cd /home/zookeeper3/zookeeper-3.4.14/data
touch myid
vim myid

输入3,按Esc+:wq保存退出。

注意:myid是zookeeper服务下的标识,myid内容不能重复。

4.分别修改zoo.cfg配置文件信息,配置集群节点:
vim /home/zookeeper1/zookeeper-3.4.14/conf/zoo.cfg
修改zookeeper1的运行端口号为2181,并在尾部添加如下集群节点信息:

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

注意:server.X=A:B:C 其中X是一个数字, 表示这是第几号server。A是该server所在的IP地址,B配置该server和集群中的leader交换消息所使用的端口,C配置选举leader时所使用的端口.。如果配置的是伪集群模式, 那么各个server的B,C参数必须不同。


截图

vim /home/zookeeper2/zookeeper-3.4.14/conf/zoo.cfg
修改zookeeper2的运行端口号为2182,并在尾部添加如下集群节点信息:

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

vim /home/zookeeper3/zookeeper-3.4.14/conf/zoo.cfg
修改zookeeper3的运行端口号为2183,并在尾部添加如下集群节点信息:

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

5.分别启动三个zookeeper并查看状态,以zookeeper1为例:

cd /home/zookeeper1/zookeeper-3.4.14/bin
./zkServer.sh start
./zkServer.sh status

启动图片分别如下:


截图
截图
截图

查询状态图片分别如下:


截图
截图
截图

其中Mode:leader表示主机器,Mode:follower表示从机器,可参考以下集群角色介绍:


截图

三、kafka的部署
1.在官网http://kafka.apache.org/downloads下载kafka压缩包后分别复制并解压到home目录下的kafka1,kafka2,和kafka3文件夹下。

2.分别在/home/kafka1/kafka_2.13-2.4.0/,/home/kafka2/kafka_2.13-2.4.0/,/home/kafka3/kafka_2.13-2.4.0/目录下创建logs文件夹(用于存放日志文件)。
教程和上方zookeeper类似。

3.分别修改配置文件:
(1)vim /home/kafka1/kafka_2.13-2.4.0/config/server.properties
修改内容如下:

broker.id=0           //需要保证每一台kafka都有一个独立的broker
listeners=PLAINTEXT://127.0.0.1:9092    //ip地址为本地的9092端口log.dirs=/home/kafka1/kafka_2.13-2.4.0/logs    //数据存放的目录
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  //zookeeper的连接地址信息

(2)vim /home/kafka2/kafka_2.13-2.4.0/config/server.properties
修改内容如下:

broker.id=1           //需要保证每一台kafka都有一个独立的broker
listeners=PLAINTEXT://127.0.0.1:9093    //ip地址为本地的9092端口log.dirs=/home/kafka2/kafka_2.13-2.4.0/logs    //数据存放的目录
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  //zookeeper的连接地址信息

(3)vim /home/kafka3/kafka_2.13-2.4.0/config/server.properties
修改内容如下:

broker.id=2           //需要保证每一台kafka都有一个独立的broker
listeners=PLAINTEXT://127.0.0.1:9094    //ip地址为本地的9092端口log.dirs=/home/kafka3/kafka_2.13-2.4.0/logs    //数据存放的目录
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  //zookeeper的连接地址信息

4.在确保zookeeper集群已经启动的情况下启动kafka集群:
分别进入项目根目录执行以下命令启动kafka:

bin/kafka-server-start.sh config/server.properties

启动后效果如下:


截图
截图
截图

每张图片最下面的brokerId即为不同的服务标识。

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