Kakfa集群安装和部署

1. 安装启动kafka

1.1. 使用Docker方式进行安装

1.1.1. 下载镜像

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

1.1.2. 启动

  • 启动Zookeeper容器
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
1.1.2.1. 启动kafka容器,其中192.168.59.101是宿主机的IP地址
docker run -d --name kafka --publish 9092:9092 
--link zookeeper 
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 
--env KAFKA_ADVERTISED_HOST_NAME=192.168.59.101 
--env KAFKA_ADVERTISED_PORT=9092 
--volume /etc/localtime:/etc/localtime 
wurstmeister/kafka:latest
1.1.2.2. kafka docker 启动参数说明
  • -e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
  • -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.56:2181/kafka 配置zookeeper管理kafka的路径192.168.155.56:2181/kafka
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092 把kafka的地址端口注册给zookeeper
  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
  • -v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

1.1.3. 验证启动

运行 docker ps,找到kafka的 CONTAINER ID,运行 docker exec -it ${CONTAINER ID} /bin/bash,进入kafka容器。进入kafka默认目录 /opt/kafka_2.11-0.10.1.0

2. kafka 常用配置项说明

  • 配置文件位置:${KAFKA_HOME}/config/server.properties

  • 修改内容如下

    # 默认配置 advertised.listeners=PLAINTEXT://your.host.name:9092
    advertised.listeners=PLAINTEXT://${本机服务器IP}:9092
    # broker.id标识本机
    broker.id=0
    # log.dirs
    log.dirs=/data/logs/kafka-logs
    # zookeeper.connect指定连接的zookeeper集群地址
    
  1. ip为服务器ip
  2. hostname和端口是用来建议给生产者和消费者使用的,如果没有设置,将会使用listeners的配置,如果listeners也没有配置,将使用java.net.InetAddress.getCanonicalHostName()来获取这个hostname和port,对于ipv4,基本就是localhost了。
  3. "PLAINTEXT"表示协议,可选的值有PLAINTEXT和SSL,hostname可以指定IP地址,也可以用"0.0.0.0"表示对所有的网络接口有效,如果hostname为空表示只对默认的网络接口有效。也就是说如果你没有配置advertised.listeners,就使用listeners的配置通告给消息的生产者和消费者,这个过程是在生产者和消费者获取源数据(metadata)。

3. 集群配置

3.1. 环境说明

三台机器:192.168.244.128 192.168.244.130 192.168.244.131

3.1.1. 三台主机上的配置内容

# 192.168.244.128
broker.id=1
log.dirs=/data/logs/kafka-logs
zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181

# 192.168.244.130  
broker.id=2
log.dirs=/data/logs/kafka-logs
zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181

# 192.168.244.131
broker.id=3
log.dirs=/data/logs/kafka-logs
zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181

3.2. 启动

在三个节点上分别执行nohup ./kafka-server-start.sh -daemon ../config/server.properties &

4. Kafka 基本操作命令

# 创建TOPIC
./kafka-topics.sh --create --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181  --replication-factor 3 --partitions 6 --topic kfk_test

#列出创建的topic
./kafka-topics.sh --list --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 

# 生成数据,注意这里的端口号是kafka的端口  9092
./kafka-console-producer.sh -broker-list 192.168.244.128:9092,192.168.244.130:9092,192.168.244.131:9092   --topic kfk_test

# 消费生产数据,kafka 0.9版本之前用zookeeper 
./kafka-console-consumer.sh --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181  --from-beginning --topic kfk_test

# kafka 0.9版本之后不推荐zookeeper方式,仍然支持,但逐渐会被取消,推荐bootstrap-server方式,注意这里的端口号是kafka的端口  9092
./kafka-console-consumer.sh --bootstrap-server  192.168.244.128:9092,192.168.244.130:9092,192.168.244.131:9092  --from-beginning --topic kfk_test

#查看指定topic信息
./kafka-topics.sh --describe --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --topic kfk_test

#删除kafka中的topic
./kafka-topics.sh --delete --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --topic kfk_test

# 删除zookeeper中的topic信息
rmr /brokers/topics/kfk_test
rmr /config/topics/kfk_test
rmr /admin/delete_topics/kfk_test
rmr /consumers/kfk_test-group

# 删除topic数据相关的目录
rm -rf /var/local/kafka/data/kfk_test*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值