如何更改Kafka经纪人列表ip

时间:2018-04-08 22:00:38

标签: apache-kafka

我有3个Kafka经纪人在一个孤立的网络区域运行,我的客户端无法直接连接它们,所以我必须使用VIP(虚拟IP)来连接经纪人。

例如:

我的经纪人的IP是:10.5.1.5, 10.5.1.6, 10.5.1.7

我的VIP的IP是:200.100.1.5, 200.100.1.6, 200.100.1.7,他们是一对一的配对。

因此,当我将引导列表指示为200.100.1.5时,群集会响应混合的VIP和Broker ips,例如:10.5.1.5, 10.5.1.6, 200.100.1.5, 200.100.1.6 ...,然后连接失败,因为我的程序无法访问代理的ip ,只能到达VIP。

我目前的配置如下,它同时响应IP和VIP:

listeners=INTERNAL://:9092,EXTERNAL_PLAINTEXT://:8080

advertised.listeners=EXTERNAL_PLAINTEXT://200.100.1.5:8080,INTERNAL://10.5.1.5:9092

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT

inter.broker.listener.name=INTERNAL

我怎样才能让卡夫卡只回复贵宾名单。

我得到了答案,可能是以下内容:

advertised.listeners=PLAINTEXT://200.100.1.5:8080
listeners=PLAINTEXT://10.5.1.5:9092
And remove the listener.security and inter.broker.

1 个答案:

答案 0 :(得分:3)

您可以使用名为class MainAdapter(lifecycleOwner: LifecycleOwner) : FirebaseRecyclerAdapter<Category, CategoryHolder>(buildOptions(lifecycleOwner)) { companion object { private fun buildQuery() = FirebaseDatabase.getInstance() .reference .child("").child("categories") .limitToLast(50) private fun buildOptions(lifecycleOwner:LifecycleOwner) = FirebaseRecyclerOptions.Builder<Category>() .setQuery(buildQuery(), Category::class.java) .setLifecycleOwner(lifecycleOwner) .build() } class CategoryHolder(val customView: View, var category: Category? = null) : RecyclerView.ViewHolder(customView) { fun bind(category: Category) { with(category) { customView.textView_name?.text = category.name customView.textView_description?.text = category.description } } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CategoryHolder { return CategoryHolder(LayoutInflater.from(parent.context) .inflate(R.layout.category_row, parent, false)) } protected override fun onBindViewHolder(holder: CategoryHolder, position: Int, model: Category) { holder.bind(model) } override fun onDataChanged() { // Called each time there is a new data snapshot. You may want to use this method // to hide a loading spinner or check for the "no documents" state and update your UI. // ... } } 的代理设置告诉您的代理在其对客户的响应中包含不同的IP /主机名。

advertised.listeners

  

监听器发布到ZooKeeper以供客户端使用(如果不同)   比advertised.listeners配置属性。在IaaS环境中,这可能   需要与代理绑定的接口不同。如果   如果未设置,将使用listeners的值。不像   listeners宣传0.0.0.0元地址无效。

在您的示例中,您可以拥有第一个经纪人:

listeners