问题标签 [gossip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
consul - spring cloud consul config app使用哪些端口与consul通信?
据我了解,spring cloud consul 配置默认仅使用端口 8500 与 consul 通信。如果这是正确的,这个应用程序不会参与八卦协议吗?如果是,它是如何完成的?
cassandra - Cassandra:Nodetool GossipInfo 和 Nodetool 状态中的替换节点显示
我们正在使用 Cassandra 3.9.0。最近我们在 1 个节点上遇到了一些麻烦。当磁盘使用率达到 100% 时,此节点崩溃。
根据 Datastax 提供的以下说明,我们正在考虑用新节点替换节点的一种方法。 https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsReplaceNode.html
在测试环境中完成替换后,当我们从新节点执行nodetool status时,旧节点不会出现。但是,当从其他节点执行时,会出现旧的死节点。类似地,当nodetool gossipinfo在新传入节点以外的现有节点中执行时,会找到旧节点的引用。
如下图,我们将 a2 替换为 a4
当节点工具状态从作为替换节点的新传入节点运行时,我们得到如下结果。
有什么推荐的方法来解决这种情况吗?
dns - Kubernetes master 无法加入集群
我们kops
在 AWS 中使用通过 1.9.3 管理的 k8s 1.9.3 和基于 Gossip 的 DNS,使用 weave cni 网络插件。
我正在对主 IG 进行滚动更新,以启用一些额外的准入控制器。(PodNodeSelector 和 PodTolerationRestriction)我在另外两个集群中做到了这一点,没有任何问题。当集群开始滚动第三个主实例(我们在 3 个主设置中运行我们的集群)时,它关闭了实例并尝试启动新的主实例,但新的主实例未能加入集群。在进一步研究和随后尝试滚动第三个主服务器以将其带入集群后,我发现第三个未能加入主服务器,继续尝试作为旧主服务器 IP 地址加入集群。即使它的IP地址是不同的。看着一个kubectl get nodes | grep master
表明集群认为它是旧的 ip 地址并且它失败了,因为它不再是那个 ip。似乎由于某种原因,基于集群八卦的 DNS 没有收到有关新主服务器 IP 地址的通知。
这会导致问题,因为 kubernetes svc 中仍然有旧主服务器的 IP 地址,这导致任何指向该不存在的后端主服务器的 api 请求失败。它也给 etcd 带来了问题,它一直试图在旧的 IP 地址上联系它。很多这样的日志:
一件奇怪的事情是,如果我etcdctl cluster-health
在可用的主 etcd 实例上运行,它们都会显示不健康的成员 ID,f90faf39a4c5d077
但是当我查看 etcd-events 日志时,我发现它看到不健康的成员 ID 为3b7c45b923efd852
. 所以似乎与etcd有些不一致。
由于我们在一个主节点关闭的三节点主节点设置中运行,我们不想重新启动任何其他主节点来尝试解决问题,因为我们害怕失去 etcd 集群上的仲裁。
我们使用weave
2.3.0 作为我们的网络 CNI 提供程序。
注意到失败的主服务器没有创建weave
cni 配置,并且工作主服务器上的文件没有正确更新新的主服务器 IP 地址。似乎由于某种原因没有得到更新。/etc/cni/net.d/10-weave.conf
/etc/hosts
kube-proxy
kops
运行1.9提供的默认 debian 8 (jessie) 映像。
我们如何才能让主服务器使用它的新 IP 地址正确更新 DNS?
cassandra - Cassandra nodetool 状态下降并且生成时间很旧
我们的 cassandra 集群宕机了。它没有得到适当的维护。每个节点的 nodetool 状态是不同的。所以,当我尝试八卦信息时,如果生成时间戳很旧。
我应该怎么做才能让节点八卦更多?谢谢
cassandra - 如何理解 cassandra 的 nodetool 的 gossipinfo 中的心跳?
当我在 cassandra 服务器上的一个节点上执行 nodetool gossipinfo 时,得到以下输出,
集群上的 gossip 协议运行不正常,很多节点显示为 DN。我正在尝试理解心跳,即 2147483647(将来)。这是八卦协议失败的原因吗?
谢谢
akka - Akka-Cluster:间接连接的成员没有收到关于他自己的 UnreachableMember 事件
关于故障检测和检测的八卦,我正试图了解一些事情。
我写的一个多 jvm 测试似乎表明,一个被检测为失败但仍可通过其他节点访问的成员将不会收到UnreachableMember(self)
事件,告诉他他已被某个成员检测为无法访问。
测试如下:在3节点集群中,node2
检测node3
为不可达,node3
检测node2
为不可达。然后node1
接收到无法访问的信息node2
(node3
通过八卦)。但是,node2
永远node3
不会收到他们自己被检测为无法访问的事实。
经过一番挖掘后,GossipSpec
我发现“错误”的不可访问成员将达到收敛,即使它被标记为Unreachable
(参见测试"not reach convergence when unreachable"
)。
这就是我没有看到UnreachableMember(self)
活动的原因吗?
我试图达到的最终目标是检测一个成员被错误地发现无法访问,因为由于两者之间的通道故障,该成员无法访问该成员。
java - Cassandra 是否有可能返回不一致的值?
我对 Cassandra 很陌生,我想知道,Cassandra 是否有可能返回不一致的值?
例如,假设我们有六个节点集群。
LOCAL_QUORUM = (replication_factor/2) + 1
这将为我们提供 4 的 Local Quorum。因此,对于简单的写入,六个节点中有四个必须响应,这意味着四个节点将具有最新值。
据我了解,没有更新的两个节点最终都是通过 Gossip Protocol 更新的。
如果是这样,如果客户端从协议发生之前未更新的两个节点之一读取会发生什么?他们是否有获得陈旧价值的风险?
阅读修复如何影响这一切?
*也是一个快速的旁注。并不是说您会这样做,但是如果您将复制因子设置为等于一致性级别,那么这与背面的 2PC(两阶段提交)本质上是否相同?
python - 在 python 中,网络中 3 台以上的计算机之间是否可以进行分散通信?
所以我一直在绞尽脑汁试图实现一个系统,在该系统中,网络上的计算机(网络上总是有三台或更多台计算机)能够通过相互发送数据来相互异步通信。
到目前为止,就解决方案而言,我所能找到的只是套接字——据我所知,它需要一个客户端和一个服务器脚本。我的第一个问题是我想删除任何客户端或服务器角色,因为网络上的所有计算机都是分散的,并且在没有服务器的情况下同时运行相同的脚本。其次,所有计算机都从特定时间点发送其他节点(随机选择)传感器数据。例如,如果我在网络上有 4 台计算机——因为它们都运行相同的脚本——它们决定同时将数据发送到另一台计算机,这不会导致等待锁定,因为所有的节点正在尝试与另一台计算机通信,但这些计算机无法接受连接,因为它们也在尝试发送数据?
我考虑过使用多线程同时运行我的 begin_sync 和 wait_sync 函数,但我不确定这是否可行。有没有人对我可以研究的解决方案有任何建议或想法?
谢谢你的时间!
hyperledger-fabric - gossip.discovery 关闭与端点的连接?
我创建了一个有 2 个组织的网络,每个组织有 2 个同行和 1ca。
创建网络后,我得到的错误是:
对于所有同龄人
我已经像这样设置了 gossip 参数(在 docker-compose.yml 中):
peer0.org1.example.com 与端口 7051:
peer1.org1.example.com 与端口 10051
peer0.org2.example.com 与端口 8051:
peer1.org2.example.com 与端口 9051
删除外部端点后,我看不到这些错误。
如果我做对了,则引导程序将端口公开以供组织内的对等方进行通信,而外部端点使端口公开,以便对等方可以与不同组织中的对等方进行通信。不是吗?
提前致谢