ElasticSearch 클러스터 노드 확장 알림 Master에 가입 요청 보내기 실패

6297 단어 ElasticSearch
원문 주소:https://www.jianshu.com/p/dbf896746add

기존 환경


이 기기의 위조 집단은 3개의 노드로 구성된다(slave-9200,slave-9201,slave-9202), 3개의 노드 설정은 각각 다음과 같다.
# ===slave-9200 ===
cluster.name: my-cluster
node.name: slave-9200
node.master: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true
# ===slave-9201 ===
cluster.name: my-cluster
node.name: slave-9201
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2
# ===slave-9202 ===
cluster.name: my-cluster
node.name: slave-9202
network.host: 0.0.0.0
http.port: 9202
transport.tcp.port: 9302
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2

헤드 플러그인을 통해 다음 그림과 같이 클러스터 상태를 볼 수 있습니다.

확장 수요


추가 확장 slave-9203, slave-9204 두 노드

업그레이드 프로세스


1、장es_slave1 두 부 복사, 각각 slave_3, slave4, Linux 명령은 다음과 같습니다.
cp -rf es_slave1 es_slave3
cp -rf es_slave1 es_slave4

복사가 끝나면 linux의 ls-l 명령을 통해 ES 폴더 디렉터리를 다음과 같이 볼 수 있습니다.
drwxr-xr-x@ 13 jay-xqt  staff   442 10 13 14:59 es_slave1
drwxr-xr-x@ 13 jay-xqt  staff   442 10 13 14:59 es_slave2
drwxr-xr-x@ 13 jay-xqt  staff   442 10 13 15:28 es_slave3
drwxr-xr-x@ 13 jay-xqt  staff   442 10 13 15:41 es_slave4

2, 각각 slave_ 구성3,slave_4의elasticsearch.yml
# ===slave-9203 ===
cluster.name: my-cluster
node.name: slave-9203
network.host: 0.0.0.0
http.port: 9203
transport.tcp.port: 9303
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2
# ===slave-9204 ===
cluster.name: my-cluster
node.name: slave-9204
network.host: 0.0.0.0
http.port: 9204
transport.tcp.port: 9304
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2

3. 각각 선후로 슬레이브-9203과 슬레이브-9204 노드를 시작했지만 슬레이브-9203을 시작할 때 오류를 보고했다.
[2018-10-13T15:30:57,562][INFO ][o.e.d.z.ZenDiscovery     ] [slave-9203] failed to send join request to master [{slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301}], reason [RemoteTransportException[[slave-9201][192.168.0.101:9301][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {slave-9203}{EvW-pPzMQu2X4Wxj9tybew}{NICrtQeUQG-XuT9OyYRTsw}{192.168.0.101}{192.168.0.101:9303}, found existing node {slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301} with the same id but is a different node instance]; ]
[2018-10-13T15:31:00,591][INFO ][o.e.d.z.ZenDiscovery     ] [slave-9203] failed to send join request to master [{slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301}], reason [RemoteTransportException[[slave-9201][192.168.0.101:9301][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {slave-9203}{EvW-pPzMQu2X4Wxj9tybew}{NICrtQeUQG-XuT9OyYRTsw}{192.168.0.101}{192.168.0.101:9303}, found existing node {slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301} with the same id but is a different node instance]; ]

오류 알림 {192.168.0.101} {192.168.0.101:9301} with the same id but is a different node instance]에서 알 수 있듯이 es_slave1 복사해 온es_slave3에도 같은 node 노드가 있는데 id가 같아서 충돌을 일으켰습니다. 실제로es_slave3의 node는 다시 분배해야 하기 때문에 es_를slave3의 node 삭제.

솔루션


복제된 slave_3 폴더의 데이터 디렉터리에서 내용을 삭제합니다. 구체적인 경로는/Users/jay-xqt/Downloads/myapp/es_slave/es_slave3/data/, 안에 nodes 폴더가 있습니다. 이 폴더를 삭제하면 됩니다.그리고 슬레이브-9203을 다시 시작하면 문제가 해결됩니다.
[2018-10-13T15:36:56,360][INFO ][o.e.d.DiscoveryModule    ] [slave-9203] using discovery type [zen]
[2018-10-13T15:36:57,145][INFO ][o.e.n.Node               ] [slave-9203] initialized
[2018-10-13T15:36:57,146][INFO ][o.e.n.Node               ] [slave-9203] starting ...
[2018-10-13T15:37:02,368][INFO ][o.e.t.TransportService   ] [slave-9203] publish_address {192.168.0.101:9303}, bound_addresses {[::]:9303}
[2018-10-13T15:37:02,380][INFO ][o.e.b.BootstrapChecks    ] [slave-9203] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
[2018-10-13T15:37:05,662][INFO ][o.e.c.s.ClusterService   ] [slave-9203] detected_master {slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301}, added {{slave-9200}{cT55VEW8Tz6vwksba2WDiQ}{9iAMeRhTQ16uo11O5bFk8Q}{192.168.0.101}{192.168.0.101:9300},{slave-9202}{zOJljPRWSpCRHJwtl_0QSQ}{Z8u7LzvIRP-zKRxGObw-7w}{192.168.0.101}{192.168.0.101:9302},{slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301},}, reason: zen-disco-receive(from master [master {slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301} committed version [114]])
[2018-10-13T15:37:06,027][INFO ][o.e.h.n.Netty4HttpServerTransport] [slave-9203] publish_address {192.168.0.101:9203}, bound_addresses {[::]:9203}
[2018-10-13T15:37:06,028][INFO ][o.e.n.Node               ] [slave-9203] started

이 동시에 다른 노드 로그에는 새 노드가 추가된 클러스터 로그가 인쇄됩니다.
[2018-10-13T15:37:05,648][INFO ][o.e.c.s.ClusterService   ] [slave-9200] added {{slave-9203}{DK8bum6BTQya8osXyQMv3A}{yF1-sxNLS1uBO_7FN1wZ-w}{192.168.0.101}{192.168.0.101:9303},}, reason: zen-disco-receive(from master [master {slave-9201}{EvW-pPzMQu2X4Wxj9tybew}{zaJboJqtS_SbCbzm9pxINQ}{192.168.0.101}{192.168.0.101:9301} committed version [114]])

확장 결과


결과에서 알 수 있듯이 각 노드 인덱스 분할의 분배는 새로 추가된 노드마다 다시 한 번 분배해야 한다.

좋은 웹페이지 즐겨찾기