kafka连接外网加密内网不加密的配置方式_kafka_server_jaas(1)

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. kafka的内部端口端口不需要加密处理。
  2. kafka的broker之间通讯不需要加密处理。
  3. zookeeper之间不需要加密处理。

(二)kafka配置

kafka中jaas.config配置

新建kafka_server_jaas.conf文件,该文件为kafka服务使用。

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    serviceName="kafka"
    username="admin"
    password="admin123"
    user_admin="admin123"
    user_client="123456";
};

serviceName:定义服务的名称

username:定义内部连接使用的用户名

password:定义内部连接使用的用户名对应的密码。

user_admin:定义用户名和密码,根据上面配置来看,user_admin中admin为用户名,后面的admin123为密码。

user_client:定义用户名和密码,根据上面配置来看,user_client中client为用户名,后面的123456为密码。

新建kafka_client_jaas.conf文件,该文件为客户端使用:

KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="client"
    password="123456";
};

username:为KafkaServer中的定义的用户名

password:为KafkaServer定义用户名的密码

修改kafka的配置文件server.properties

修改配置文件kafka/config/server.properties

#在文件中增加如下配置
# 配置listener名字和协议的映射(所以它是一个key-value的map),key是“listener名字”,value是“协议名称”
listener.security.protocol.map=LOCAL:PLAINTEXT,INTERNAL:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
# 监听端口,根据上面定义的listener名称定义对应的端口
listeners=LOCAL://172.16.180.42:9091,INTERNAL://kafka1:19091,EXTERNAL://kafka1:29091
# 定义对外的端口信息。
advertised.listeners=INTERNAL://kafka1:19091,EXTERNAL://kafka1:29091
# 定义sasl的mechanisms
sasl.enabled.mechanisms=PLAIN
#定义内部broker使用的通讯协议
inter.broker.listener.name=INTERNAL
#完成身份验证的类
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

#当没有找到ACL配置时,允许所有的访问操作。
allow.everyone.if.no.acl.found=true

其中最重要的就是 listeners 和 advertised.listeners :集群启动时监听listeners配置的地址,并将 advertised.listeners 配置的地址写到Zookeeper里面,作为集群元数据的一部分。我们可以将客户端(生产者/消费者)连接Kafka集群进行操作的过程分成2步:

  1. 通过 listeners 配置的连接信息(ip/host)连接到某个Broker(broker会定期获取并缓存zk中的元数据信息),获取元数据中 advertised.listeners 配置的地址信息。
  2. 通过第1步获取的 advertised.listeners 连接信息和Kafka集群通信(读/写)。

根据上面配置我们要把EXTERNAL对应的端口代理出去,并且使用账户密码的方式进行验证连接。所以我们对EXTERNAL配置的时候ip尽量使用hostName的方式。因为你配置的ip不一定是客户端直接使用的ip,就是说你这里配置本机的内网ip为192.16.1.102。但是客户端使用的时候可能使用公网的ip:xxx.xx.xxx.xx。这样会造成连接失败的问题。所以我们使用hostName配置的方式。在客户端使用的时候也用hostName的方式配置。

根据上面配置得到:内部端口使用19091免密连接。外部端口使用19092使用秘钥连接。

修改kafka的启动脚本kafka-server-start.sh

首先把kafka_server_jaas.conf放到kafka/config下。

编辑kafka/bin/kafka-server-start.sh

#在顶部增加
export KAFKA_OPTS="-Djava.security.auth.login.config=/kafka/config/kafka_server_jaas.conf"

(三)连接测试

测试使用kafka自带脚本来测试。

在kafka/bin下有两个脚本:kafka-console-consumer.sh和kafka-console-producer.sh分别对应消费端和生产端。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值