阿里云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();
}
}
`