我在 vpc 中有一个亚马逊 msk 集群(kafka),我可以通过同一 vpc 中的客户端(EC2 实例)访问它。我的问题是..我可以从本地计算机上的客户端访问我的集群吗?我该如何做这个配置?我尝试更改 vpc 和子网络的路由表,但仍然无法。
4 回答
这是不可能的。根据MSK 常见问题解答
是的,从 Amazon MSK 集群生成和使用数据的唯一方法是通过 VPC 中的客户端与 Amazon MSK 集群之间的私有连接。Amazon MSK 不支持公共终端节点。
相反,您需要一个 VPN 连接入站到您的 VPC,或者需要一个堡垒主机来代理从本地主机到 MSK 的流量。
我遇到了同样的问题,我发现本文中的答案有效。基本上,您会查找集群的 ENI,每个 zookeeper 节点应该是 5 - 3 个,每个代理应该是 2 个。它们应带有类似于以下内容的描述:
DO NOT DELETE - Amazon MSK network interface for cluster arn:aws:kafka:...
。
您为它们中的每一个创建一个弹性 IP,这可能意味着要求支持提高您的限制,因为我认为每个区域每个帐户的标准 EIP 限制是 5 或 6,您可能会在其他地方使用一些。然后从 EC2 控制台中的 ENI 界面将 EIP 与每个 MSK ENI 相关联。
虽然我的 URL 有问题,但编辑我的主机文件似乎不起作用。broker 和 zookeeper 的 URL 仍然解析为私有 IP,所以我最终直接使用公共 IP。
编辑:好吧,事实证明我错了。您必须至少为引导服务器编辑主机文件。我以为我从我的主机文件中删除了它们并进行了测试,它可以工作,但它们可能已被缓存。因此,您需要将公共 EIP 映射到引导服务器,并且需要将正确的 IP 映射到正确的 URL,否则会出现元数据错误。但是,出于某种原因,zookeeper 似乎在没有将其公共 IP 映射到其 URL 的情况下工作 - 只需使用公共 IP。虽然没有将公共 IP 映射到引导服务器 URL,但似乎公共 IP 被转换为 URL,然后解析为它的私有 IP。
1. Create public end point . Make sure plain text access is disabled.Security & NACL are enabled for your source location.
2. Go to window local machine
3. set the profile in .aws/config & .aws/credential
in config-
[default]
region = ap-northeast-1
output = json
[profile <Your profile name>]
region = ap-northeast-1
output = json
in credential file - Create a user in AWS and give the required MSK permission.
Generate secret id & secret key and set in below file
[<Your profile name>]
aws_access_key_id = <AWS USER ACCESS KEY ID>
aws_secret_access_key = <AWS SECRET ACCESS KEY>
4. Now go to CMD prompt of window and set the below variable
set AWS_PROFILE=<Your profile name>
5. Create the client.properties file in config folder of kafka and put below values
ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
security.protocol=SASL_SSL
sasl.mechanism=AWS_MSK_IAM
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required; sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
5. Now get public end point of broker on port 9198. Ready to execute public end point outside of VPC.
/kafka-console-producer.sh --bootstrap-server <public broker servers on enter code here`ort 9198> --topic <Your topic name> --producer.config config/client.properties
Amazon MSK 现在支持公共访问。您可以使用此功能从开放 Internet 的任何位置访问您的集群。有某些按要求,例如打开加密和启用客户端代理通信。请在此处查看详细信息:https ://docs.aws.amazon.com/msk/latest/developerguide/public-access.html