virtualbox kafka nat + host-only集群 + windows 外网 多网卡

本文介绍了如何使用VirtualBox搭建Kafka集群,通过混合使用Nat和Host-Only网络策略,解决Windows环境下外网访问及集群内部通信的问题。详细阐述了网络配置步骤,包括Nat全局设置、单台服务器NAT配置,以及Windows机器通过不同端口访问Kafka集群的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

virtualbox kafka nat + host-only集群 + windows 映射访问

kafka集群搭建

背景

使用virtualbox搭建kafka集群,涉及到不同网络策略的取舍
在这里插入图片描述
首先 桥接 网络虽说 啥都可以,但是涉及到过多ip的时候,而且还不能保证使用的ip不被占用,所以个人选择kafka虚拟机集群的连通性上面使用host-only作为支撑。
host-only网络互通
这篇文章说的很美好。但是对于我这个一锁屏virtualbox就故障退出后续网络就无法ssh的来说是个奢望,搞了很久也没有搞好,也就是宿主机和host-only的集群之间无法直接访问[天秀啊,直接给我干成 现实内网了]。没辙,只能再搞一个nat的混搭风格再加上端口映射进来。
再叠上kafka集群的。buff直接加满。
以下是我使用的virtualbox 网络配置:

host-onlybd1bd2bd3
IPADDR10.1.16.11110.1.16.11210.1.16.113
HWADDRip addr 出来的对应值同左同左

host-only图片
host-only图片
全局nat设置[如果没有这个界面就是vritualbox版本不够考虑升级]
全局nat设置
单台服务器nat配置
单台机器nat配置

bd1 host-onlybd1 nat
TYPE=EthernetTYPE=Ethernet
BOOTPROTO=staticBOOTPROTO=static
DEFROUTE=yesNM_CONTROLLER=yes
NAME=enp0s8DEVICE=enp0s9
DEVICE=enp0s8ONBOOT=yes
ONBOOT=yesIPADDR=10.0.4.11 # 可看到和上图对应
NM_CONTROLLED=yesNETMASK=255.255.255.0
IPADDR=10.1.16.111GATEWAY=10.0.4.1
HWADDR=08:00:27:f2:0e:a1HWADDR=08:00:27:ee:3e:13
DNS1=114.114.114.114
DNS2=8.8.8.8

配合上述配置 举个栗子说明下:
甄选美图

kafka机器相关配置 ; EXTERNAL表示用于外网访问的ip; LOCAL表示kafka集群内部使用ip ; advertised.listeners表示给外界client返回节点信息所以使用的是外界能够访问过来的配置
bd1listeners=EXTERNAL://10.0.4.11:19092,LOCAL://10.1.16.111:9092 advertised.listeners=EXTERNAL://localhost:9991,LOCAL://10.1.16.111:9092 inter.broker.listener.name=LOCAL listener.security.protocol.map=EXTERNAL:PLAINTEXT,LOCAL:PLAINTEXT
bd2listeners=EXTERNAL://10.0.4.12:29092,LOCAL://10.1.16.112:9092 advertised.listeners=EXTERNAL://localhost:9992,LOCAL://10.1.16.112:9092 inter.broker.listener.name=LOCAL listener.security.protocol.map=EXTERNAL:PLAINTEXT,LOCAL:PLAINTEXT
bd3listeners=EXTERNAL://10.0.4.13:39092,LOCAL://10.1.16.113:9092 advertised.listeners=EXTERNAL://localhost:9993,LOCAL://10.1.16.113:9092 inter.broker.listener.name=LOCAL listener.security.protocol.map=EXTERNAL:PLAINTEXT,LOCAL:PLAINTEXT

windows 机器 通过 访问 localhost的不同端口 来访问不同kafka的外部地址。
例如, 访问 bd1的9092过程.
windows上访问 localhost:9991 走 10.0.4.11:19092, kafka收到数据 就会返回给 adverties.listener的配置【 localhost:9991 】 信息给客户端 完成一个闭环。
然后kafka 集群内部的访问 通过 10.1.16. 网段来进行。

参数解释
advertised.listeners发到客户端的请求返回来的节点信息。 有点对外交流渠道的意思
listeners是Broker用来监听网络请求的。
listener.security.protocol.map监听器名称和安全协议之间的映射关系集合. 形如:监听名称1:安全协议1,监听名称2:安全协议2
inter.broker.listener.name用于 Broker 之间通信的 listener 的名称。EXTERNAL 和 LOCAL 因为是同一台机器的所以需要不同的端口。

端口图
bd3端口图
集群内使用
集群内使用
集群内 /etc/hosts
在这里插入图片描述
windows 程序访问

// pom.xml
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dns-cache-manipulator</artifactId>
            <version>1.5.0</version>
        </dependency>
//dns-cache.properties
bd1=127.0.0.1
bd2=127.0.0.1
bd3=127.0.0.1

windows producer
服务端收到
windows消费者
至此完结。

致敬:
https://www.cnblogs.com/dongmzh/p/16403833.html
https://www.cnblogs.com/AzkbanHan/p/11277814.html
https://bbs.huaweicloud.com/blogs/198453
https://www.cnblogs.com/tinkone/p/10277034.html

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lliinnhhhan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值