Elasticsearch 2.2.0 클러스터 구성 상세 정보

클러스터 분할 구성


Elasticsearch 클러스터 분할에는 클러스터 수준 분할 할당(Cluster Level Shard Allocation) 방식이 있습니다.집단 분할은 자주 변화하고 새로운 분배, 예를 들어 초기 복구, 복제, 노드가 가입하거나 취소될 때 등이다.분할 분배 설정, 분할 균형 설정, 계발식 분할 균형 설정을 포함한다.
분할 할당 설정: 다음 동적 설정은 분할 할당과 회수를 제어할 수 있습니다.
cluster.routing.allocation.enable: 다음 중 선택할 수 있는 슬라이스 유형을 비활성화하거나 활성화합니다.
all
모든 조각이 새로 분배될 수 있도록 허용하다
primaries
주 결점 분할만 새 분배 허용
new_primaries
새 마스터 결점 인덱스의 조각만 새로 할당할 수 있습니다.
none 
어떤 분할도 새로운 분배를 진행하지 않는다
cluster.routing.allocation.node_concurrent_recoveries: 하나의 노드에서 몇 개의 분할 분배를 동시에 보낼 수 있도록 허용합니다. 기본값은 2입니다.
cluster.routing.allocation.node_initial_primaries_recoveries: 사본 분할이 집단에 가입할 때 한 노드에서 동행하여 분할 분배가 발생하는 수량은 기본적으로 4개입니다.
cluster.routing.allocation.same_shard.host: 한 호스트에 여러 개의 같은 그룹 이름의 분할 분배가 있을 때 호스트 이름과 호스트 IP 주소를 검사하는지 확인합니다.기본값은false입니다. 이 설정은 같은 기계에서 여러 노드를 시작할 때만 적용됩니다.
indices.recovery.concurrent_streams: 한 노드에서 복구할 때 동시에 열리는 네트워크 데이터의 수량은 기본적으로 3입니다.
indices.recovery.concurrent_small_file_streams: 동료의 조각을 복구할 때 각 노드의 작은 파일 (5M 미만) 흐름의 수를 엽니다. 기본값은 2입니다.
분할 밸런스 설정
다음 동적 설정은 전체 클러스터의 조각 재균형을 제어하는 데 사용됩니다.
cluster.routing.rebalance.enable: 특정 유형의 분할 재균형을 사용하거나 사용하지 않습니다. 선택할 수 있는 매개 변수는 다음과 같습니다.
all 
모든 조각이 조각 균형을 이룰 수 있도록 기본 설정합니다.
primaries
주분편만 균형을 잡을 수 있다.
replicas 
조각으로만 균형을 잡을 수 있다.
none 
분하의 분편을 나누어 균형을 잡는 것을 허락하지 않는다.
cluster.routing.allocation.allow_rebalance: 조각의 재균형을 맞출 때 허용되는 동작입니다. 선택할 수 있는 매개 변수는 다음과 같습니다.
always 
자꾸 균형을 잡게 해.
indices_primaries_active 
마스터 인덱스만 균형을 맞출 수 있습니다.
indices_all_active 
모든 조각은 균형, 기본 매개 변수를 허용합니다.
cluster.routing.allocation.cluster_concurrent_rebalance: 다시 균형을 잡을 때 몇 개의 병렬 조각을 동시에 조작할 수 있습니까? 기본값은 2입니다.
계발식 분할 균형
다음 설정은 각 조각의 데이터를 어디에 배치할지 결정합니다.
cluster.routing.allocation.balance.shard: 노드에 각 분할의 권한을 분배합니다. 기본값은 0.45입니다.
cluster.routing.allocation.balance.index: 특정 노드에서 색인마다 분배된 조각의 수량은 기본 0.55입니다.
cluster.routing.allocation.balance.threshold: 조작의 최소 최적화 값입니다.기본값은 1입니다.

디스크 기반 분할 할당 구성


Elasticsearch는 디스크의 크기에 따라 새로 조각을 나눌지 여부를 결정할 수 있습니다.
cluster.routing.allocation.disk.threshold_enabled: 디스크 분배 결정을 사용할지 여부입니다. 기본값은true입니다.
cluster.routing.allocation.disk.watermark.low: 할당할 수 있는 디스크 공간의 최소 값은 비례나 절대 값, 예를 들어 85% 또는 1G가 될 수 있습니다.디스크가 설정된 값을 초과하면 이 노드에 할당되지 않습니다.
cluster.routing.allocation.disk.watermark.하이: 분할 노드 디스크 공간의 최대 값을 저장할 수 있습니다. 이 값을 초과하면 시스템은 분할 노드를 다른 노드로 옮깁니다.기본 90% 입니다.공간이 이 값보다 작을 때 시스템이 자동으로 다른 노드로 이동하는 구체적인 크기 값을 설정할 수도 있다.
cluster.info.update.interval: 그룹의 각 노드의 디스크 사용 간격을 검사합니다. 기본 30초입니다.
cluster.routing.allocation.disk.include_relocations: 계산 노드의 디스크를 사용할 때 현재 분할된 상황을 고려해야 합니다.
예를 들어 다음 구성 인스턴스:
PUT /_cluster/settings{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "80%",
    "cluster.routing.allocation.disk.watermark.high": "5gb",
    "cluster.info.update.interval": "1m"
  }
}

실례의 의미는 분당 디스크 공간을 검사하고 디스크 공간이 80%보다 적을 때 분할 분배에 참여하고 공간이 5G가 부족할 때 노드의 분할 분배를 다른 노드로 옮긴다는 것이다.
주의해야 할 것은 2.0.0 버전 전에 시스템에 여러 개의 데이터 디스크가 있을 때 시스템은 전체 크기를 고려하고 2.0.0 이후에 시스템은 각 디스크의 사용 상황을 고려한다.
본고는 세크람드(secisland)가 창작한 것으로 작가와 출처를 명시해 주십시오.

섹션 할당(Shard Allocation Awareness)


실제 배치할 때 가상 컴퓨터에 배치되어 같은 물리적 노드를 공유하거나 배치할 때 같은 프레임이나 같은 네트워크 구역에 배치되는 경우가 많다.이런 상황에서 고장이 나면 많은 노드가 동시에 고장이 나서 시스템에 문제가 발생한다.만약에 Elasticsearch를 설정할 때 미리 알 수 있듯이 서로 다른 노드는 서로 다른 물리 기계, 서로 다른 프레임이나 서로 다른 네트워크 구역에 분포되어 있다. 이렇게 하면 한 노드에 문제가 발생할 때 위험을 최소화할 수 있다.
섹션 할당(Shard Allocation Awareness) 설정은 Elasticsearch의 하드웨어에 대한 정보를 설정할 수 있습니다. 예를 들어 시작할 때 시작 프로그램 뒤에 --node를 추가합니다.rack_id, 뒤에 지정한 이름을 따라가면 이 설정도 설정 파일에 넣을 수 있습니다.
elasticsearch --node.rack_id rack_one
동시에cluster를 설정해야 합니다.routing.allocation.awareness.attributes: rack_id, 프로필에 설정하거나cluster-update-settings API 인터페이스를 통해 설정할 수 있습니다.
두 개의 노드 노드가 있다고 가정해 보세요.rack_id의 이름은 rack_one, 우리는 색인을 만듭니다. 5개의 주요 조각과 하나의 사본 조각이 있습니다.모든 마스터 슬라이스와 복제본 슬라이스는 두 노드에 할당됩니다.그리고 우리는 두 개의 노드, 노드 node를 새로 추가했다.rack_id의 이름은 rack_two, 이렇게 설정하면 시스템은 새로운 노드에 두 개의 같은 블록이 같은 구역에 있는지 확인하기 위해 분배 섹션을 지정합니다.
검색할 때 시스템은 지능적으로 처리하여 한 구역에서만 검색한다. 이렇게 하면 서로 다른 구역에서 검색하는 것보다 더 빨리 검색할 수 있다.
섹션을 사용하여 속성을 할당할 때 조각은 이러한 속성의 값을 설정하지 않은 노드에 할당되지 않습니다.같은 속성의 상부 분할 분배 노드의 수량은 속성 값의 수량에 의해 결정된다.한 조의 노드의 수량이 불균형적이면 많은 복사본이 있을 수도 있고, 복사 분할이 멈출 수도 있다.
속성을 강제로 분배하여 같은 조각 사본이 같은 구역에 분배되는 것을 허락하지 않는 문제를 해결했다.가령 우리가 두 개의 구역이 있을 때 각 구역의 크기는 절반의 분할만 분배할 수 있다. 만약에 한 구역을 사용할 수 없다면 모든 분할이 한 구역에 있으면 공간이 부족하고 시스템 이상을 초래할 수 있다. 이때 강제 분배 속성은 의미가 있다.구성:
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2 
cluster.routing.allocation.awareness.attributes: zone
이 때, 만약에 우리가 zone1의 두 노드를 시작하고 5개의 조각을 나누어 하나의 복사본을 만드는 인덱스를 만들면, 이 때 zone1에서 주 조각만 시작하고, zone2의 노드가 시작된 후에야 조각을 시작합니다.

분할 구성 필터링


슬라이스 구성 필터는 색인을 허용하거나 금지하는 슬라이스를 특정 노드에 할당할 수 있습니다.이 설정의 주요 역할은 하나의 노드를 집단에 멈추는 것이 비교적 유용하다는 것이다.예를 들어 우리는 10.0.0.1이라는 IP의 모든 노드를 멈추고 싶다.
PUT /_cluster/settings{
  "transient" : {
    "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
  }
}

이렇게 정상적인 상황에서 10.0.0.1 노드의 분할은 다른 노드로 옮겨진다.동적 구성의 속성은 다음과 같습니다.
cluster.routing.allocation.include.{attribute}: 색인을 하나의 노드에 분배합니다. {attribute}는 최소한 쉼표로 구분된 값이 있습니다.
cluster.routing.allocation.require.{attribute}: 색인을 하나의 노드에 분배합니다. 이 노드의 {attribute}는 모든 쉼표 구분 값을 가지고 있습니다.
cluster.routing.allocation.exclude.{attribute}: 색인을 노드에 분배합니다. {attribute}는 쉼표로 구분된 값이 없습니다.
attributes에 포함할 수 있는 값은 다음과 같습니다.
_name: 노드 이름으로 노드 일치
_ip: IP 주소를 통해 노드 일치
_host: 기계 이름으로 노드 일치
모든 속성 값은 다음과 같은 와일드카드를 사용할 수 있습니다.
PUT _cluster/settings{
  "transient": {
    "cluster.routing.allocation.include._ip": "192.168.2.*"
  }
}

추가 클러스터 설정


읽기 전용 설정:cluster를 설정할 수 있습니다.blocks.read_전체 클러스터를 읽기 전용으로 만듭니다.
로그 기록: 로그 기록의 등급을 설정합니다. 예를 들어 추가된 indices입니다.Recovery 모듈의 로깅 수준 디버깅:
PUT /_cluster/settings{
  "transient": {
    "logger.indices.recovery": "DEBUG"
  }
}

세크랜드(secisland)는 Elasticsearch의 최신 버전의 각종 기능을 점차적으로 분석할 것이니 기대해 주십시오.secisland 공중호에 가입하여 관심을 가지는 것도 환영합니다.

좋은 웹페이지 즐겨찾기