在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

关于脑裂??节点宕机之后重启无法再加入原有集群?

Elasticsearch | 作者 foxfire881 | 发布于2017年04月20日 | 阅读数:9223

CentOS单机配置了3个节点A、B、C,全部都设成是master+data节点(默认配置),cluster名设置成一样的,同时discovery.zen.minimum_master_nodes参数设置成(3+1)/2=2。
 
问题症状:
首次启动A、B、C节点后,三个节点成功组成了一个cluster;然后强制kill掉其中一个节点的进程(如A节点宕机了),剩下B、C两个节点会选举B作为master节点,B、C仍然成功组成cluster;此时如果再次重新启动A节点(保持所有配置不变),则A节点无法再加入B、C组成的cluster,并且把A节点的data、logs清空之后作为一个新节点重新启动,仍然无法加入到B、C组成的原有cluster  ——  请前辈指点一下这是什么原因?应该如何解决才能让宕机后的A节点重新加入B、C组成的cluster?
 
谢谢!
已邀请:

xinfanwang

赞同来自: pili

有这种配置吧。如果内存很大,一个es实例算上底层的lucent的cache还是很多的话,我觉得就可以取多个实例。集群并不影响,replica配置成优先不同host就是了。

fhyes123 - ES小白

赞同来自:

我的es也经常嗅探不到其他集群,纠结了好久也无果,懒得纠结了
只能用比较笨的一种办法,在每个节点都配置discovery.zen.ping.unicast.hosts,把你的节点ip全部加入到里面,就没问题了

foxfire881

赞同来自:

但我是单机三节点配置,在一个192.168.0.10上配了3个节点A、B、C,3个节点都共享这1个IP,所以discovery.zen.ping.unicast.hosts这个参数我只配了一个192.168.0.10,是这个原因吗?感觉不是呢,因为首次启动时A、B、C可以组成cluster的,干掉一个再重启就不行了,一直找不到原因。

wyntergreg

赞同来自:

单机伪集群毫无意义,何必呢?

foxfire881

赞同来自:

只是搭个测试环境而已,目前还在学习阶段就踩到这个坑了。多机环境下和单机环境原理应该是一样的,单机都无法通过怎么上多机环境呢。

fhyes123 - ES小白

赞同来自:

顺便提一下,discovery.zen.minimum_master_nodes参数设置,你是(N+1)/2,建议N/2+1要好一点

foxfire881

赞同来自:

已搞定,单机的话要给三个节点配置不同的transport.tcp.port,并且在discovery.zen.ping.unicast.hosts中指定IP和不同的transport.tcp.port端口

liuyang

赞同来自:

集群中的一台宕机,重启es一直出错误报告,下面是错误信息#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 10388504576 bytes for committing reserved memory.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
#  Out of Memory Error (os_linux.cpp:2673), pid=17573, tid=139627109590784
#
# JRE version:  (8.0_45-b14) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

liuyang

赞同来自:

每台机器 此处都是相同的配置discovery.zen.ping.unicast.hosts: ["xx.xx.xx.xx:6971","xx.xx.xx.xx:6971"]

pili

赞同来自:

不知道在实践应用中是否存在这种情况, 即:一台主机启动多个节点,所谓的伪集群模式。  但是有一点是,多个data节点在集群的读阶段是有助于负载分摊来达到读取效率增加的。不知道在实际的应用中有没有如此的配置。  希望有大神指点, 讨论。 

要回复问题请先登录注册