- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个代理,3 个分区。每个代理是一个分区的领导者和所有的 ISR。假设我分别在端口 19092,29092,39092
上运行代理。
19092 - partition 0
29092 - partition 1
39092 - partition 2
我想这样命名!因为它只允许 OUTPUT 而不允许 INPUT
现在,我添加了以下 iptables 规则:
iptables -A INPUT -p tcp --dport 29092 -j DROP
在生产者中:
bin/kafka-console-producer --broker-list 10.54.8.172:19092 --topic ftest
上述 iptables 规则阻止 INPUT 访问,但不限制代理通过 Zookeeper 更新其 liveness 。所以zookeeper不会认为它死了,所以不会对partition 1进行leader选举。
但是,由于规则的原因,生产者无法连接到它,因此会抛出错误。
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for ftest-1: 1778 ms has passed since batch creation plus linger time
这一步,我已经手动完成,但可能还有其他原因导致 INPUT 访问被阻止(一些恶意软件、DDoS 或其他任何东西)。
在 iptables 规则之前:
Metadata for ftest (from broker 1: 10.54.8.172:19092/1):
3 brokers:
broker 2 at 10.54.8.172:29092
broker 1 at 10.54.8.172:19092
broker 3 at 10.54.8.172:39092
1 topics:
topic "ftest" with 3 partitions:
partition 2, leader 3, replicas: 3,1,2, isrs: 3,1,2
partition 1, leader 2, replicas: 2,3,1, isrs: 2,3,1
partition 0, leader 1, replicas: 1,2,3, isrs: 1,2,3
在 iptables 规则之后:
Metadata for ftest (from broker 1: 10.54.8.172:19092/1):
3 brokers:
broker 2 at 10.54.8.172:29092
broker 1 at 10.54.8.172:19092
broker 3 at 10.54.8.172:39092
1 topics:
topic "ftest" with 3 partitions:
partition 2, leader 3, replicas: 3,1,2, isrs: 3,1,2
partition 1, leader 2, replicas: 2,3,1, isrs: 2
partition 0, leader 1, replicas: 1,2,3, isrs: 1,2,3
因为只有一个领导者并且它死了(从某种意义上说它无法接收任何消息),不是单点故障吗?
I think, there must ideally be 2 way communication between Zookeeper and Kafka brokers. Isn't it? Does Kafka allow it? If so, how?
Also, when the 29092 is blocked for INPUT access its ISR shrinked to 1.
It could be because it is not able to receive any messages (heartbeats) from the other 2 brokers.
If it can connect (OUTPUT is enabled), then it can write to them and for the replication to get acknowledged, it needs INPUT access.
So both INPUT and OUTPUT should be there here also.
The broker 29092 is as good as nothing here. Leaving the system in an unrecoverable state!
最佳答案
您的问题可能最好通过理解 Kafka 如何利用 zookeeper 原语来维护和组织集群状态来回答。
在 Kafka 中,领导选举是由充当 Controller 的经纪人之一精心策划的。只有一个 Controller ,它是使用 zookeeper 在 broker 中选出的。
现在,每个代理都将自己注册为 zookeeper 中的“临时节点”。因此发起 zK session 的代理通过使用周期性心跳(zK 术语中的滴答)来维护成员资格。如果代理未能在超时间隔内打勾,zookeeper 将删除该节点,并且已注册自己以接收该事件通知(通过 zK watches )的 Kafka Controller 会收到通知。如果失败的代理是分区的领导者,这将触发新的领导者选举。 Controller 处理 leader 选举并通知所有 broker。
是的,Kafka 和 zK 之间存在双向通信——但就分区领导者选举而言,这并不是每个代理和 zK 之间的直接双向通信。在 Controller 的方式中有一个中间人。
在您的测试中,由于 Controller 永远不会收到代理 2 故障的通知,因此该代理仍然是分区 1 的领导者。
现在开始,我正在推测
输入被阻止的代理 2 无法接收元数据更新,因此它通过将 ISR 缩小到自身来 self 隔离。这可能 help
关于apache-kafka - 如果 leader 没有死但是在 Kafka 中收不到消息会怎样?单点故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55706589/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!