如何在Linux上部署Java应用程序
更新时间:2022-01-06 14:01
最满意答案
避免脑裂现象,用到的一个参数是:discovery.zen.minimum_master_nodes。这个参数决定了要选举一个Master需要多少个节点(最少候选节点数)。默认值是1。根据一般经验这个一般设置成 N/2 + 1,N是集群中节点的数量,例如一个有3个节点的集群,minimum_master_nodes 应该被设置成 3/2 + 1 = 2(向下取整)。 用到的另外一个参数是:discovery.zen.ping.timeout,等待ping响应的超时时间,默认值是3秒。如果网络缓慢或拥塞,建议略微调大这个值。这个参数不仅仅适应更高的网络延迟,也适用于在一个由于超负荷而响应缓慢的节点的情况。 如果您刚开始使用elasticsearch,建议搭建拥有3个节点的集群,这种方式可以把discovery.zen.minimum_master_nodes设置成2,这样就限制了发生脑裂现象的可能,且保持着高度的可用性:如果你设置了副本,在丢失一个节点的情况下,集群仍可运行。
相关问答
更多-
如何访问elasticsearch 集群[2022-03-11]
使用TransportClient的代码示例: try { int port = 9300; Map m = new HashMap (); // 设置client.transport.sniff为true来使客户端去 嗅探整个集群的状态, //把集群中其它机器的ip地址加到客户端中,这样本地节点挂了,程序还可以正常工作 Settings settings = Settings.settingsBuilder().put(m).put("cluster.name", " elasticsearch").pu ... -
如何设置elasticsearch集群[2023-07-12]
集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。在产品环境中显式地设定这个名字是一个好习惯,但是使用默认值来进行测试/开发也是不错的。 -
如何防止ElasticSearch集群出现脑裂现象[2023-06-25]
避免脑裂现象,用到的一个参数是:discovery.zen.minimum_master_nodes。这个参数决定了要选举一个Master需要多少个节点(最少候选节点数)。默认值是1。根据一般经验这个一般设置成 N/2 + 1,N是集群中节点的数量,例如一个有3个节点的集群,minimum_master_nodes 应该被设置成 3/2 + 1 = 2(向下取整)。 用到的另外一个参数是:discovery.zen.ping.timeout,等待ping响应的超时时间,默认值是3秒。如果网络缓慢或拥塞,建议 ... -
如何防止ElasticSearch集群出现脑裂现象[2023-04-01]
避免脑裂现象,用到的一个参数是:discovery.zen.minimum_master_nodes。这个参数决定了要选举一个Master需要多少个节点(最少候选节点数)。默认值是1。根据一般经验这个一般设置成 N/2 + 1,N是集群中节点的数量,例如一个有3个节点的集群,minimum_master_nodes 应该被设置成 3/2 + 1 = 2(向下取整)。 用到的另外一个参数是:discovery.zen.ping.timeout,等待ping响应的超时时间,默认值是3秒。如果网络缓 ... -
keepalived+nginx出现脑裂问题怎么解决? 求大神帮助 (最好是解决思路)[2022-01-14]
在配置keepalived和haproxy的时候遇到脑裂的问题,还请大家帮助我分析一下,谢谢。我的环境信息如下: 一共两台虚拟机,是同个一共模板复制出来的(我怀疑问题出在这里)。 主机IP:192.168.1.136 备机IP:192.168.1.135 VIP:192.168.1.118 主机的keepalived的配置如下: global_defs { notification_email { root } notification_email_from root smtp_server 192.168 ... -
如何处理裂脑?(How to handle split-brain?)[2023-02-09]
奥尔良利用存储提供商的一致性保证。 从粮食中调用this.WriteStateAsync() ,存储提供程序确保粮食已经看到所有先前的写入。 如果没有,则抛出异常。 您可以捕获该异常并调用DeactivateOnIdle()并重新抛出异常或调用ReadStateAsync()试。 因此,如果在裂脑场景中有2粒谷物,有史以来首先调用WriteStateAsync()阻止另一个人在未读取最新状态的情况下写入状态。 更新:从Orleans v1.5.0开始,允许InconsistentStateException ... -
根据Kibana文档,您只需要确保在kibana.yml配置中也设置了以下两个属性: elasticsearch.username:
elasticsearch.password: According to the Kibana docs you simply need to make sure that the following two properties are also set in your kibana.yml config: elasticsea ... -
不,选择。 负载平衡基于许多启发式,每种应用程序都有所不同。 很多设置已经在elasticsearch集群前面有硬件/软件负载均衡器。 在弹性搜索已经负载平衡的基础上,即使客户端一直命中一个节点,集群也可以让其他节点协调搜索。 当然故障转移是需要在应用程序中处理的事情(如果硬件/负载均衡器还没有解决这个问题),我可能会发布一个简单的实现,作为一个单独的nuget包,可以保留一组客户端但是现在我主要关注的是抛光NEST的API为1.0稳定/完全记录。 更新2014年 由于NEST 1.0群集故障转移和连接池内 ...
-
如何在弹性搜索中避免/最小化具有3个节点的裂脑(How to avoid/ minimize a split brain with 3 nodes in elastic search)[2023-06-20]
当某些群集节点无法连接到其他群集节点时,会出现裂脑情况。 由于大型地产 - 特别是地理位置分散 - 中间环节可能会丢失。 如果群集的两个部分都是quorate(有足够的节点可用,如配置中所定义的那样),它们会继续“工作”,最终会导致两者之间的数据不同步。 这在您的方案中不会发生,因为节点C知道A和B都在线 - 因此即使A和B之间的通信处于脱机状态,也不会形成两个单独的集群。 如果A完全丢失,B + C超过节点的50% - 因此您的群集知道它是“quorate”并且可以继续正常运行。 修复部分隔离的Zen发现 ... -
你需要定义“最近”。 在大多数具有插入复制的环境中,所有数据库在插入的几秒钟内将具有相同的数据(并且几秒钟似乎是悲观的)。 另一种方法是“从一个读取/全部写入”方法。 在这种情况下,读取通过系统传播。 然后,应用程序(或应用程序使用的公共层)将写入发送到所有节点。 但请记住,数据库复制的问题不是它工作时的工作方式。 问题是它在失败时如何恢复,甚至如何识别失败。 您需要确定节点发生故障时会发生什么,恢复丢失的事务的方式,以及您如何确定节点是否真正同步。 我建议您仔细阅读实际使用的数据库文档,并了解该平台提供的 ...