目录
前言
本文主要记录Kafka安装、Kafka基本命令和Go语言如何操作Kafka。
一、kafka安装
1.安装jkd
进入甲骨文官网下载JDK1.8,下载好像比较麻烦,需要登录账号才可以下载。
安装包下载好后,通过xftp放到Linux系统的/usr/local目录下,然后对压缩包进行解压:
tar -zxvf jdk-xxxxxxx你的压缩包名称
解压好之后需要配置环境,编辑profile文件:
vim /etc/profile
在文件末尾添加:
export JAVA_HOME=/usr/local/jdk1.8 #你jdk安装的目录
export PATH=$JAVA_HOME/bin:$PATH
重新加载profile文件:
source /etc/profile
检查是否安装成功:
java -version
2.安装zookeeper
注意:搭建zk集群节点数量必须是奇数个!!!!!
- 官网下载压缩包,选择一个你适合的版本进行下载,下载后通过xftp放到Linux系统的/usr/local目录下,进行解压:
tar -zxvf apache-zookeeper-xxxxxx #你的压缩文件名称
嫌弃名字太长可以进行修改文件名。
- 进入解压后的zookeeper目录中,创建一个日志存储位置:
mkdir dataDir
- 然后在dataDir目录下创建一个myid文件:
vim dataDir/myid
在文件中输入数字1,每一台服务器输入都不一样,服务器A输入1,服务器B输入2,服务器C输入3。
- 修改zookeeper/conf/zoo_simple.cfg内容:
vim zookeeper/conf/zoo_sample.cfg
可以将其中内容全删除,反正用不到,然后添加以下内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/dataDir
server.1=服务器A的私网IP:2888:3888
server.2=服务器B的私网IP:2888:3888
server.3=服务器C的私网IP:2888:3888
clientPort=2181
maxClientCnxns=60
- 设置systemctl启动zk的方式:
vim /usr/lib/systemd/system/zookeeper/service
- 添加内容:
[Unit]
Description=zookeeper.service
After=network.target
[Service]
Type=forking
Environment="PATH=/usr/local/jdk1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
User=root
Group=root
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
整个搭建过程,只有编辑myid文件时,三台服务器输入的内容不同,剩下步骤都是相同的。
3.安装kafka
- 1.下载
首先进入Kafka官网:Apache Kafka,选择一个版本进行下载
下载完毕后将压缩包放入Linux的/opt目录下
-
2.解压
使用命令进行解压,解压到/opt/module目录下:
tar -zxvf kafka_2.12-x.x.x.tgz -C /opt/module #压缩包替换成你实际的名称
对解压文件进行重命名:
mv kafka_2.12-x.x.x/ kafka
- 3.更改配置文件
vim /kafka/config/server.properties
############################# Socket Server Settings #############################
# The address the socket server listens on. If not configured, the host name will be equal to the value of
# java.net.InetAddress.getCanonicalHostName(), with PLAINTEXT listener name, and port 9092.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://当前节点的私网IP地址:9092 #修改这里
############################# Log Basics #############################
# A comma separated list of directories under which to store log files
log.dirs=/opt/module/kafka/datas #修改这里
############################# Zookeeper #############################
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=zk服务器1私网地址:2181,zk服务器2私网地址:2181,zk服务器3私网地址:2181/kafka #修改这里
slave节点:
############################# Server Basics #############################
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1 #修改这里
############################# Socket Server Settings #############################
# The address the socket server listens on. If not configured, the host name will be equal to the value of
# java.net.InetAddress.getCanonicalHostName(), with PLAINTEXT listener name, and port 9092.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://当前节点的私网IP地址:9092 #修改这里
############################# Log Basics #############################
# A comma separated list of directories under which to store log files
log.dirs=/opt/module/kafka/datas #修改这里
############################# Zookeeper #############################
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=zk服务器1私网地址:2181,zk服务器2私网地址:2181,zk服务器3私网地址:2181/kafka #修改这里
- 4.配置Kafka环境变量
两台服务器都需要修改/etc/profile
vim /etc/profile
#在最后一行添加
export KAFKA_HOME=/opt/module/kafka #你的Kafka路径
export PATH=:$PATH:${KAFKA_HOME}
两台服务器都需要执行:
source /etc/profile
- 设置systemctl启动zk的方式:
vim /usr/lib/systemd/system/kafka.service
- 添加内容:
[Unit]
Description=zookeeper.service
After=network.target
[Service]
Type=forking
Environment="PATH=/usr/local/jdk1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
User=root
Group=root
ExecStart=/opt/module/kafka/bin/kafka-server-start.sh /opt/module/kafka/config/server.properties
ExecStop=/opt/module/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 启动kafka,两个节点都需要启动kafka
systemctl start kafka
- 创建topic:
kafka/bin/kafka-topics.sh --create --topic demo-topic --bootstrap-server kafka节点1的私网IP地址:9092,kafka节点1的私网IP地址:9092 --partitions 1 --replication-factor 1
总结
以上就是今天要讲的内容,本文仅仅简单介绍了kafka集群搭建的过程,后续kafka命令行操作和go语言操作kafka会持续更新。