阿里云kafka部署踩坑系列,连接不上等问题

1.防火墙踩坑

之前看的一些说连接不上,就关闭防火墙,不过其实是一些端口你没有开放等。
打开防火墙端口2181、9092、3306
`
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent

端口开启之后需重新加载,记得!!

firewall-cmd --reload

查看已经开放的端口

firewall-cmd --list-ports
`
打开云服务器端口,添加安全组规则,流程我在上一篇说有说过,这里不重复
添加3306、9092和2181三个端口,已经有了就不管

2.修改kafka配置文件

2.1 zookeeper文件修改

你自己的zookeeper文件配置目录下的zoo.cfg(改名后的,一般都改成这个,我也不知道为什么)
server.0=xxx.xx.xx.xx:2888:3888
最后一行添加上面代码,其中xxx为你的服务器公网ip

2.2 修改kafka配置文件

进入kafka配置目录打开server.properties那个配置文件
原先的localhost注释掉,该成 你的公网ip

listeners修改为内网ip,同时添加外部代理地址,为外网ip

`
listeners=PLAINTEXT://172.17.8.172:9092

外部代理地址

advertised.listeners=PLAINTEXT://106.14.250.7:9092

客户端连接的ip地址,必须要写成服务器的ip地址!advertised.host.name

advertised.host.name =106.14.250.7
host.name=172.17.8.172
port=9092
`
记得该成自己的公网内网ip。

最后还有一个修改地方:
原先的localhost改为公网ip

测试

创建主题:
bin/kafka-topics.sh --create --zookeeper 192.168.103.10:2181 --topic hw_data --partitions 2 --replication-factor 1
查看主题:
bin/kafka-topics.sh --list --zookeeper 192.168.103.10:2181
查看主题 详情:
./kafka-topics.sh --describe --topic hw_data --zookeeper 192.168.103.10:2181

开启消费者监听
bin/kafka-console-consumer.sh --bootstrap-server 106.14.250.7:9092 --topic topic1

在springboot中生产消息
`
package com.example.demo.Kafka;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.util.Properties;

/**

  • HKj
    */
    public class Producer {
    private static final String brokerList="106.14.250.7:9092";
    private static final String topic="test";
    private static final String topic1="topic1";
    public static void main(String[] args){
    Properties properties=new Properties();
    //设置key序列化器
    properties.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
    //设置重试次数
    properties.put(ProducerConfig.RETRIES_CONFIG,10);
    //设置值序列化器
    properties.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
    //设置集群地址
    properties.put("bootstrap.servers",brokerList);

     KafkaProducer<String,String> producer=new KafkaProducer<String, String>(properties);
     ProducerRecord<String,String> record=new ProducerRecord<>(topic1,"kafka-demo","hello,kafka");
     try{
         producer.send(record);
     }catch (Exception e){
         e.printStackTrace();
     }
     producer.close();
    

    }
    }
    `

posted @ 2021-04-23 10:56  HKnight  阅读(2227)  评论(0编辑  收藏  举报