Elasticsearch는clusterpersistent 업데이트를 어디에 저장했습니까?

9415 단어 elasticsearch
PUT _cluster/settings
{
    "persistent" : {
        "indices.store.throttle.type" : "merge",
        "indices.store.throttle.max_bytes_per_sec" : "20mb"
    }
}

그룹 파라미터를 오래 업데이트한다는 뜻입니다. 오래 지속되는 것이기 때문에 이 변경 사항을 어디에 저장했습니까?
elasticsearch.yml에는 이 두 개의 설정이 없지만 다시 시작하면 이 변경은 확실히 효력이 발생합니다.
[2016-01-19 18:22:49,500][INFO ][indices.store ] [elasticsearch_179] updating indices.store.throttle.type from [MERGE] to [merge]
[2016-01-19 18:22:49,500][INFO ][indices.store ] [elasticsearch_179] updating indices.store.throttle.max_bytes_per_sec from [20mb] to [20mb], note, type is [merge]

종료점을 다시 시작하면 업데이트되었음을 알릴 수 있습니다.
원래 이 파일은 아래 파일에 저장되어 있습니다.
{INSTALL_DIR}/data/{CLUSTER_NAME}/nodes/{N}/_state/global-{NNN} 

INSTALL_DIR은 elasticsearch의 설치 디렉토리입니다. CLUSTER_NAME는 클러스터 이름 N 결점 번호입니다. (0은 이 시스템에 하나의 결점만 있음을 나타냅니다.) NNN은 클러스터 상태 파일 버전 번호입니다.
이 파일은 기본적으로 바이너리 형식입니다.elasticsearch에서 사용할 수 있습니다.yml 증가는 다음과 같습니다.
format: json

ES는 이것을 josn 형식으로 저장합니다.
이 파일에 무엇이 포함되어 있는지 살펴보자.
{
  "meta-data": { "version": 7, "uuid": "MxNs_3pRRTa3eU4ZMbcI1A", "settings": { "indices.store.throttle.type": "merge", "indices.store.throttle.max_bytes_per_sec": "20mb" }, "templates": { "logstash": { "order": 0, "template": "logstash-*", "settings": { "index.refresh_interval": "5s" }, "mappings": [ { "_default_": { "_all": { "enabled": true, "omit_norms": true }, "dynamic_templates": [ { "message_field": { "match": "message", "match_mapping_type": "string", "mapping": { "type": "string", "index": "analyzed", "omit_norms": true } } }, { "string_fields": { "match": "*", "match_mapping_type": "string", "mapping": { "type": "string", "index": "analyzed", "omit_norms": true, "fields": { "raw": { "type": "string", "index": "not_analyzed", "ignore_above": 256 } } } } } ], "properties": { "@version": { "type": "string", "index": "not_analyzed" }, "geoip": { "type": "object", "dynamic": true, "properties": { "location": { "type": "geo_point" } } } } } } ], "aliases": {} } } } }

다음과 같은 두 가지 구성 항목을 보았습니다.
    "settings": {
      "indices.store.throttle.type": "merge",
      "indices.store.throttle.max_bytes_per_sec": "20mb"
    },

또한 지속적인 템플릿 설정이 있습니다.
    "templates": {
      "logstash": {
        "order": 0,
        "template": "logstash-*",
        "settings": {
          "index.refresh_interval": "5s"
        },

이것은logstash가 ES에 추가한 템플릿 설정입니다. 메시지 필드에 대한 설정을 볼 수 있습니다. 다른 문자열 필드는 기본적으로 하위 필드raw를 추가합니다. 원래 필드가 analyzed를 거치지 않은 원시 값을 저장하는 데 사용됩니다.PUT _template/logstash의 템플릿도 이 파일에 저장됩니다.
Every time cluster state changes, all master-eligible nodes store the new version of the file, so during cluster restart the node that starts first and elects itself as a master will have the newest version of the cluster state. What you are describing could be possible if you updated the settings when one of your master-eligible nodes was not part of the cluster (and therefore couldn’t store the latest version with your settings) and after the restart this node became the cluster master and propagated its obsolete settings to all other nodes.

좋은 웹페이지 즐겨찾기