此处软件版本为:jdk-8,zookeeper-3.4.14,kafka-2.3,网络环境:阿里云内网&外网(互联网)
服务器名 kafka内网IP:PORT kafka外网IP:PORT zookeeper内网IP:PORT KAFKA01 192.168.1.157:9092 116.151.157.185:19092 192.168.1.157:2181 KAFKA02 192.168.1.158:9092 116.151.157.185:29092 192.168.1.157:2181 KAFKA03 192.168.3.159:9092 116.151.157.185:39092 192.168.1.157:2181 以上外网地址是将各自内网地址在SLB中单独监听产生
####更新及安装系统软件
yum update -y
yum -y install epel-release make gcc gcc-c++ curl wget git zip unzip xz vim perl sysstat lsof lvm2
下载jdk
wget http://61.160.245.8:6001/jdk-8u102-linux-x64.tgz
tar zxf jdk-8u102-linux-x64.tgz
解压缩后移动到目录/usr/java/ 下
mv jdk1.8.0_102/ /usr/local/java
配置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
修改hosts
192.168.1.157 KAFKA01 KAFKA01
192.168.1.158 KAFKA02 KAFKA02
192.168.3.159 KAFKA03 KAFKA03
下载zookeeper
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
新建目录与安装
mkdir /opt/bigdata
tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/bigdata
复制配置文件
cd /opt/bigdata/zookeeper-3.4.14/
cp conf/zoo_sample.cfg conf/zoo.cfg
修改配置文件zoo.cfg如下:
dataDir=/opt/bigdata/data/zookeeper/zkdata
dataLogDir=/opt/bigdata/data/zookeeper/zkdatalog
server.1=KAFKA01:2888:3888
server.2=KAFKA02:2888:3888
server.3=KAFKA03:2888:3888
创建myid文件
mkdir -vp /opt/bigdata/data/zookeeper/zkdata
echo x > /opt/bigdata/data/zookeeper/zkdata/myid
注意:x表示主机的编号,不可重复
配置环境变量(每个主机都需要配置)
vim /etc/profile
#set java environment , append
export ZOOKEEPER_HOME=/opt/bigdata/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使得配置生效
. /etc/profile
启动服务
cd /opt/bigdata/zookeeper-3.4.14
bin/zkServer.sh start
查看状态
bin/zkServer.sh status
注意:zk集群一般只有一个leader,多个follower,主一般是响应客户端的读写请求,而从同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。
客户端连接
zkCli.sh
下载解压kafka
wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
tar -zxvf kafka_2.11-2.3.0.tgz
mv kafka_2.11-2.3.0 /opt/kafka
修改server.properties
broker.id=1 ###三台的broker.id不可相同,分别为1 、2、3
delete.topic.enable=true ###添加,如果我们需要删除topic,还需要配置一下内容
listeners=PLAINTEXT://kafka内网IP:PORT ###修改成相应内网地址
advertised.listeners=PLAINTEXT://kafka外网IP:PORT #所有节点都必须配置否则无法访问
log.dirs=/opt/kafka-logs
zookeeper.connect=KAFKA01:2181,KAFKA02:2181,KAFKA03:2181
#此外,可以在log.retention.hours=168 下面新增下面三项:
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
思路:以下给出几条kafka指令。创建一个topic,一个节点作为生产者,两个节点作为消费者分别看看能否接收数据,进行验证:
启动
cd /opt/kafka
bin/kafka-server-start.sh -daemon config/server.properties &
创建及查看topic
bin/kafka-topics.sh -list -zookeeper KAFKA01:2181
bin/kafka-topics.sh --create --zookeeper KAFKA01:2181 --replication-factor 1 --partitions 1 --topic myTopic #单机
bin/kafka-topics.sh --create --zookeeper KAFKA01:2181 --replication-factor 3 --partitions 3 --topic myTopic #三节点集群
开启生产者
bin/kafka-console-producer.sh --broker-list KAFKA01:9092 --topic myTopic
开启消费者
bin/kafka-console-consumer.sh --bootstrap-server KAFKA01:9092 --topic myTopic --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server KAFKA02:9092 --topic myTopic --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server KAFKA03:9092 --topic myTopic --from-beginning
外网消费
bin/kafka-console-consumer.sh --bootstrap-server 116.151.157.185:19092 --topic myTopic --from-beginning
查看topic的详细信息
bin/kafka-topics.sh -zookeeper PORTAL-KAFKA02:2181 --describe --topic myTopic
为topic增加副本
bin/kafka-reassign-partitions.sh --zookeeper PORTAL-KAFKA01:2181 --reassignment-json-file json/partitions-to-move.json -execute
删除topic
bin/kafka-topics.sh --zookeeper PORTAL-KAFKA01:2181 --delete --topic myTopic
关闭kafka
bin/kafka-server-stop.sh