Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)

简介: 【2月更文挑战第19天】Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)

我使用的安装文件是 kafka_2.11-2.4.1.tgz ,以下内容均以此版本进行说明。zookeeper集群也是伪集群,zk的伪集群搭建方法可参考《Zookeeper-3.6.0 伪集群版 搭建指南》

1 安装kafka

之前有单机版的铺垫《kafka_2.11-2.4.1 单机版安装指南》,这里省略部分说直接开装,也可参考官网《kafka_2.13-2.8.0 quickstart》官网网速可不 quick :snail:

# 解压安装包并移动到 /usr/local/ 文件夹下
[root@aliyun kafka]# tar -zxvf kafka_2.11-2.4.1.tgz
[root@aliyun kafka]# mv ./kafka_2.11-2.4.1/ /usr/local/kafka

配置环境变量【目的随时随地执行命令】配置方法比较多,这里统一将环境变量放在 /etc/profile.d/my_env.sh 内。

# 配置环境变量:
vim /etc/profile.d/my_env.sh
# 添加 KAFKA_HOME和bin
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin
# 使得配置的环境变量立即生效:
    # 首先是要赋权限【只操作一次就行】
    chmod +x /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh

单机版 kafka 安装结束,是不是很惊讶!就是这么 quick :zap:

2 分布式配置

进入${KAFKA_HOME}/config/ 目录下 ,拷贝三份 server.properties 配置文件:

cp ./server.properties ./server-1.properties
cp ./server.properties ./server-2.properties
cp ./server.properties ./server-3.properties
# 【先查看一下zk伪集群的地址】无关信息不再贴出
Client port found: 2181. Client address: localhost.
Client port found: 2182. Client address: localhost.
Client port found: 2183. Client address: localhost.
# 分别修改三个 server.properties 配置文件【以第一个为例】
vim /usr/local/kafka/config/server-1.properties
# - - - - - - 内容如下 - - - - - - 
# 1.集群中每个节点的唯一标识
broker.id=0【三个配置文件不同 server-2 为1 server-3 为2】
# 2.监听地址
listeners=PLAINTEXT://aliyun:9091【三个配置文件不同 server-2 为9092 server-3 为9093】
# 数据的存储位置
log.dirs=/usr/local/kafka/kafka-logs/01【三个配置文件不同 server-2 为02 server-3 为03】
# zookeeper集群地址【这里搭建的是伪集群】
zookeeper.connect=aliyun:2181,aliyun:2182,aliyun:2183【三个配置文件相同】

kafka的 log.dirs 指的是数据日志的存储位置,就是分区数据的存储位置,而不是程序运行日志信息的位置。配置程序运行日志信息的位置是通过同一目录下的 log4j.properties 进行的。至此,集群配置已完成。

3 启动集群并测试

由于配置过环境变量 KAFKA_HOME 所有在任何文件夹下都可以进行启动:

# 使用三个不同的配置文件分别启动三个实例【使用三个不同的终端窗口 且启动后不要关闭 否则服务就会停止】
kafka-server-start.sh /usr/local/kafka/config/server-1.properties
kafka-server-start.sh /usr/local/kafka/config/server-2.properties
kafka-server-start.sh /usr/local/kafka/config/server-3.properties

进行测试:

# 创建一个主题
kafka-topics.sh --create --bootstrap-server tcloud:9092 \
--replication-factor 3 \
--partitions 1 \
--topic yuan

# 查看主题信息
[root@tcloud ~]# kafka-topics.sh --describe --bootstrap-server tcloud:9092 --topic yuan
[2021-08-07 18:07:38,587] WARN [AdminClient clientId=adminclient-1] Connection to node 2 (localhost/127.0.0.1:9093) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
Topic: yuan     PartitionCount: 1       ReplicationFactor: 3    Configs: segment.bytes=1073741824
        Topic: yuan     Partition: 0    Leader: 0       Replicas: 0,1,2 Isr: 0,1

可以看到有1分分区3个副本,且三个副本都是可用副本,当前只有 0,1在 ISR(in-sync Replica 同步副本)列表中,其中 0 为首领副本,此时代表集群已经搭建成功。

4 总结

最终总结一下曲折的启动历程,由于我是用的是云服务器1核2G,内存是真不够用,启动第三个的时候:

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; 
error='Cannot allocate memory' (errno=12)

我只好在我的另一台服务器上启动了第三个节点,最终才启动起来 :sob:

目录
相关文章
|
7月前
|
人工智能 负载均衡 监控
使用 Go 和 Gin 实现高可用负载均衡代理服务器
本文基于Go语言和Gin框架,实现了一个企业级负载均衡代理服务器,支持动态路由、健康检查、会话保持等功能。具备高可用性与高性能,单节点支持100k+ QPS,延迟达亚毫秒级,并提供完整的压力测试方案与优化建议。
235 7
|
消息中间件 运维 算法
Kafka 为什么要抛弃 Zookeeper?
本文探讨了Kafka为何逐步淘汰ZooKeeper。长久以来,ZooKeeper作为Kafka的核心组件,负责集群管理和协调任务。然而,随着Kafka的发展,ZooKeeper带来的复杂性增加、性能瓶颈及一致性问题日益凸显。为解决这些问题,Kafka引入了KRaft,这是一种基于Raft算法的内置元数据管理方案,不仅简化了部署流程,还提升了系统的一致性和扩展性。本文详细分析了这一转变背后的原因及其带来的优势,并展望了Kafka未来的发展方向。
939 1
|
8月前
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
361 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
|
10月前
|
消息中间件 运维 Java
搭建Zookeeper、Kafka集群
本文详细介绍了Zookeeper和Kafka集群的搭建过程,涵盖系统环境配置、IP设置、主机名设定、防火墙与Selinux关闭、JDK安装等基础步骤。随后深入讲解了Zookeeper集群的安装与配置,包括数据目录创建、节点信息设置、SASL认证配置及服务启动管理。接着描述了Kafka集群的安装,涉及配置文件修改、安全认证设置、生产消费认证以及服务启停操作。最后通过创建Topic、发送与查看消息等测试验证集群功能。全网可搜《小陈运维》获取更多信息。
906 1
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
3121 1
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
453 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
弹性计算 监控 容灾
阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行
在数字化时代,企业对信息技术的依赖加深,确保业务连续性至关重要。阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行。无论是小型企业还是大型企业,都能从中受益,确保在面对各种风险时保持业务稳定。
306 4
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
1315 5
|
消息中间件 分布式计算 监控
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
344 6
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
401 4