2017-12-27 16 views
0

방금 ​​클러스터를 5.6에서 6.1으로 업그레이드했습니다. documentation으로 롤링 업그레이드를 수행했습니다. 내가 사용하고있는 설정이 6.1에서 더 이상 사용할 수없는 것 같습니다. 그건 괜찮 았어,하지만 지금은 심지어 내 샤드 할당을 활성화 할 수 없다, 그래서 지금 내 마지막 노드는 샤드를 할당하지 않습니다. 이에탄성 검색 - 업그레이드 후 고정 된 고정 설정을 제거하는 방법

curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "persistent" : { 
     "cluster.routing.allocation.enable" : "all" 
    } 
} 

결과 :

{ 
    "error" : { 
    "root_cause" : [ 
     { 
     "type" : "remote_transport_exception", 
     "reason" : "[inoreader-es4][92.247.179.253:9300][cluster:admin/settings/update]" 
     } 
    ], 
    "type" : "illegal_argument_exception", 
    "reason" : "unknown setting [indices.store.throttle.max_bytes_per_sec] did you mean [indices.recovery.max_bytes_per_sec]?" 
    }, 
    "status" : 400 
} 

상관없이 내가 항상이 오류가 변경하려고 어떤 설정이 같은 간단한 일입니다. 예, 5.x에서 영구 설정으로 indices.store.throttle.max_bytes_per_sec을 설정했는데 이제는 새 이름으로 설정해야하므로 괜찮습니다. 어떻게 제거 할 수 있습니까? elasticsearch.yml에 없습니다.

답변

2

해당 값을 설정 해제해야합니다. 당신이 이전 버전에 여전히있는 경우 (null이 추가 된 5.0 반환하기에), 다음 명령을 사용할 수 있습니다 :

PUT _cluster/settings 
{ 
    "persistent": { 
    "indices.store.throttle.max_bytes_per_sec": null 
    } 
} 

이는 그러나 "영구적 인 설정으로 실패 [indices.store.throttle.max_bytes_per_sec] , "인식되지 않음"을 선택하십시오.

현재 (Elasticsearch 6.1.1 버전) 제거 된 설정은 archived.indices.store.throttle.max_bytes_per_sec에 보관됩니다. 이를 제거하고 다른 보관 설정으로 할 수 있습니다

PUT _cluster/settings 
{ 
    "persistent": { 
    "archived.*": null 
    } 
} 

그러나, a bug that only lets you unset archived settings before you change any other settings있다.

이미 다른 설정을했고이 버그의 영향을받는 경우 유일한 해결 방법은 5.6으로 다시 다운 그레이드하고 구성 (이 응답 맨 위에있는 명령)을 해제 한 다음 업그레이드를 다시 수행하는 것입니다. 마스터이고 다른 모든 노드가 마스터에 합류하고 수정 된 클러스터 상태를 수락하는 한 한 노드에서 다른 노드를 중지하는 것으로 충분할 것입니다. 사전에 스냅 샷을 작성하십시오.

미래 버전 (그것이 지금 단지 계획 단계에서 비록)이 archived.* 동작은 아마 언급 in the ticket로 변경됩니다 :

는 [...] 우리는 알 수없는 깨진 클러스터 설정을 보관하지 않아야합니다. 대신 클러스터 상태를 복구하지 않아야합니다. 업그레이드 케이스에서 사용자를위한 솔루션은 이전 버전으로 롤백하는 것입니다 ( ). 다음 주 버전 버전에서 알 수 없거나 손상 될 설정을 처리 한 다음 업그레이드를 진행하십시오.

수동으로 편집 또는 디스크에서 클러스터 상태를 삭제하는 매우 위험한 소리 : 클러스터 상태는 템플릿, 지표, 라우팅 테이블, 등의 정보 (GET /_cluster/state으로 직접 확인)를 많이 포함 ... 당신이 경우에도 데이터 노드의 데이터가 있지만 클러스터 상태를 잃어 버리면 데이터에 액세스 할 수 없습니다 ("맵"은 샤드에서 인덱스를 구성하는 방법이 없습니다). 올바르게 기억한다면 최근의 ES 버전에서는 데이터 노드가 클러스터 상태를 캐시하고이를 복구하려고 시도하지만 최후의 수단이므로이 작업에 의존하고 싶지 않습니다. 또한 그것이 당신의 나쁜 환경을 되찾지 못할지 확실하지 않습니다.

추신 : 무료 upgrade assistant 5.6에서 6.x로가는 것이 좋습니다.

+0

예, 클러스터에이 설정 (및 기타 임시 또는 영구 설정)을 설정하면 동일한 메시지가 나타나지 않습니다. 그것은 아주 나쁜 소식입니다 ... 내 클러스터는 8TB이고 정말 다운 그레이드 아이디어가 마음에 들지 않습니다 ... 각 노드마다 클러스터 상태 파일을 삭제하는 것으로 모든 노드를 종료 할 생각입니다. 물론 내가 먼저 백업 할 것이다. 설정이 저장되어 있지만 이진 파일이므로 편집하기가 쉽지 않습니다. 클러스터 상태 파일을 삭제하는 것이 안전하다고 생각합니까? 마스터 노드가이 성가신 영구 설정없이 다시 만들 수 있습니까? 감사! – Jacket

+0

나는 나의 대답을 확장했다 : 어쩌면 당신은 단지 하나의 노드를 다운 그레이드 할 수 있고 그것으로부터 당신의 마법을 작동시킬 수있다. 그리고 클러스터 상태에주의하십시오. 이는 실제로 모든 클러스터에 중요한 정보이므로 보관하고 백업해야합니다. – xeraa

+0

지금까지 도움을 주셔서 감사합니다! 난 그 솔루션을 시도 - 모든 노드를 중지, 하나의 마스터 자격이 노드를 다운 그레이드, 설정을 nulled 및 다시 업그레이 드하십시오. 그러나 그것은 시작하기를 거부했다 -'읽지 못했습니다 (ID : 84, 유산 : 거짓, 파일 : /home/elasticsearch/nodes/0/_state/global-84.st) ' "색인 패턴은 null이거나 비어 있어서는 안됩니다. 널있어. " 다른 노드의 상태 파일을 수동으로 복사해야만 내 클러스터를 다시 사용할 수 있습니다 ... 물론 설정이 다시 있지만 이름이 변경되었습니다 ... 알 수없는 설정 [archived.indices.store.throttle.max_bytes_per_sec]. 나중에 다른 노드에서 다시 시도 할 것입니다. – Jacket