Elasticsearch - 운영 환경 클러스터 핵심 구성

하나.Elasticsearch 관련 구성


path.데이터와 경로.log


이 두 구성 디렉터리는 각각 에 저장되며, 기본 경로는 $_ES_HOME 의 하위 폴더에 있습니다.이렇게 하면 매우 큰 위험이 있다. 특히 Elasticsearch 버전을 업그레이드할 때, 이러한 데이터는 삭제될 가능성이 높으며, 생산 환경에서 아래의 설정을 참고할 수 있다
path:
  logs: /var/log/elasticsearch
  data: /var/data/elasticsearch

다른 경로.데이터는 여러 개의 디렉터리를 설정할 수 있습니다. 모든 디렉터리는 데이터를 저장하는 데 사용되지만, 한 개의 조각은 같은 디렉터리에 저장됩니다. 다중 디렉터리 설정 참고
path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

클러스터 이름


기본적으로 집단의 이름은 elasticsearch 이고 서로 다른 집단을 구분하기 위해 생산 환경에서 수정해야 한다.모든 노드는 같은 집단 이름을 설정해야만 같은 집단에 가입할 수 있고, 모든 노드는 하나의 집단에만 가입할 수 있으며, 집단 이름이 같지 않으면 잘못된 집단에 가입할 수 있다.
cluster.name: test-cluster

노드 이름


기본적으로 노드 이름은 운영 체제의 호스트 이름이며 Linux에서 hostname -f 를 사용하여 호스트 이름을 볼 수 있습니다.또한 elasticsearch.yml  프로필에 표시되는 구성을 통해 가독성을 높일 수 있습니다.구성 예는 다음과 같습니다.
node.name: test-node

네트워크 주소 네트워크.host


기본 설정에서 Elasticsearch는 순환 주소 127.0.0.1  로 연결되어 있으며, 이것은 단기 개발 시에만 사용할 수 있습니다.공식 환경에서 이 노드가 다른 노드에서 찾을 수 있고 하나의 집단을 형성하기 위해서는 비환회 주소를 설정해야 한다. 만약에 내망 중부에 집단을 설치하면 ifconfig 명령을 통해 현재 노드의 내망 IP 주소를 볼 수 있다.구성은 다음과 같습니다.
network.host: 192.168.60.11

서비스 검색 및 클러스터링 설정


1. 서비스 검색 피드 호스트 검색.seed_hosts


개발 환경에서 서비스는 호스트 이름을 설정할 필요가 없다는 것을 발견했습니다. Elasticsearch는 기본적으로 이 컴퓨터의 9300-9305 포트에서 다른 노드를 연결하려고 시도합니다. 이것은 자동 집단 체험을 제공합니다. 어떠한 설정도 필요하지 않습니다.그러나 정식 환경에서 각 노드는 이론적으로 서로 다른 기계이다. 이때 설정discovery.seed_hosts이 필요하고discovery.seed_hosts,ipip: 가 될 수 있다.만약 설정이 ip라면, Elasticsearch는 기본적으로 설정 항목의 포트를 사용합니다. 이 포트는 기본적으로 9300입니다.설정이 도메인 이름이고 이 도메인 이름 아래에 여러 개의 IP가 연결되어 있으면 ES는 여러 개의 IP를 연결하려고 시도합니다.다음은 구성 예제입니다.
discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 

2. 초기 마스터 클러스터.initial_master_nodes


새로운 집단을 열 때 집단의 안내 절차가 있습니다. 이 절차는 어떤 노드가 첫 번째 주 노드 선거에 참여하는지 확인하는 데 사용됩니다.개발 모델에서 이 절차는 노드가 자동으로 완성하는데 이런 모델은 본질적으로 안전하지 않다. 모든 노드가 주 노드가 되는 데 적합하지 않기 때문에 주 노드는 집단의 안정성과 관계가 있다.따라서 생산 모델에서 집단이 처음 시작될 때 주 노드로 적합한 노드 목록이 있어야 한다. 이 목록은 transport.profiles.default.port를 통해 설정하고 설정에서 구체적인 노드 이름을 써서 대응cluster.initial_master_nodes 설정 항목을 작성해야 한다.구성 예는 다음과 같습니다.
cluster.initial_master_nodes: 
   - master-node-a
   - master-node-b
   - master-node-c

더미 메모리 용량 설정


기본적으로 Elasticsearch에서 JVM 더미 메모리의 최소값과 최대값은 1GB입니다. 생산 모드에서 더미 메모리 용량은 매우 중요하기 때문에 Elasticsearch가 충분한 더미 메모리를 사용할 수 있도록 확보해야 합니다.우리는 node.name 프로필에서 구성 jvm.options Xmx  항목을 통해 JVM 더미 메모리 용량을 결정할 수 있으며, 설정 용량 자체도 서버의 물리적 메모리에 달려 있으며, XmsXmx  값은 물리적 메모리의 50%를 넘지 않습니다.Elasticsearch는 메모리를 쌓는 것 외에 다른 작업도 할 수 있기 때문이다. 예를 들어 메모리 외부 버퍼를 사용하여 네트워크 통신을 하고 운영체제의 파일 시스템 캐시를 통해 파일에 접근하며 JVM 자체도 메모리가 필요하다.메모리 용량의 경우 최대 32GB에 가깝게 설정할 수 있으며, 26GB는 보안이며, 일부 시스템에서는 30GB에 도달할 수 있다.예제 구성은 다음과 같습니다.
-Xms2g 
-Xmx2g 

2.운영 체제 구성


파일 설명자


Linux 기본 구성에서 최대 열 파일 수는 1024이며 Xms 를 통해 볼 수 있습니다. ES 는 색인을 만드는 과정에서 많은 작은 파일을 열 수 있습니다. 그러면 제한을 초과하기 쉽습니다. 파일 설명자 임시 설정 명령은 다음과 같습니다.
sudo su  
ulimit -n 65535 
su elasticsearch 

영구 설정 수정 가능 ulimit -n 파일
elasticsearch  -  nofile  65535

위의 설정은elasticsearch 사용자를 설정하면 파일 설명자를 열 수 있는 최대 수를 65535로 표시합니다.

공간 교환 금지


리눅스의 교환 공간 메커니즘은 메모리 자원이 부족할 때 리눅스가 일부 페이지의 내용을 하드디스크의 한 공간으로 옮겨 메모리 공간을 방출하는 것을 말한다.하드디스크의 그 공간을 교환 공간 (swap space) 이라고 부른다.swap을 닫지 않으면 Elasticsearch의 메모리가 디스크로 밀려날 수 있습니다. 쓰레기 회수 속도는 밀리초 단계에서 분 단계로 바뀌어 노드의 응답 속도가 느리고 심지어 그룹과 연결이 끊어집니다.교환 공간의 발생을 피하기 위한 세 가지 방법이 있다

1. 모든 교환 공간 금지


Linux에서 다음 명령을 실행하기 위해 운영 체제 스왑 공간을 임시로 닫습니다.
sudo swapoff -a

수정해야 할 파일/etc/security/limits.conf을 영구적으로 닫습니다.

2. swappiness 구성

/etc/fstab  파일, 설정/etc/sysctl.conf을 수정하면 만부득이한 경우를 제외하고 Linux가 일반적인 상황에서 교환을 사용하지 않도록 할 수 있습니다.

3. 메모리 잠금 사용


메모리 자물쇠를 사용하면 ES가 시작될 때 메모리를 잠그고 디스크에 메모리가 밀리지 않도록 합니다. 리눅스의 vm.swappiness = 1 시스템 호출에 대응하여 ES에서 mlockall  파일을 설정합니다.구성은 다음과 같습니다.
bootstrap.memory_lock: true

가상 메모리


Elasticsearch는 파일 맵(mmap)을 통해 디스크의 파일을 읽습니다. 이렇게 하면 config/elasticsearch.yml  시스템보다 메모리 복사를 한 번 적게 호출할 수 있으며 0 복사 기술이라고도 합니다.ES 맵은 파일이 많기 때문에 최대 맵 파일의 수를 수정해야 합니다. 수정read 구성 항목을 통해 가능합니다.임시 수정은 다음 명령을 호출할 수 있습니다
sysctl -w vm.max_map_count=262144

이 값을 영구적으로 수정하려면 vm.max_map_count 파일을 수정해야 합니다.
vm.max_map_count=262144

그런 다음 /etc/sysctl.conf 를 실행하여 시스템 구성을 다시 로드해야 적용됩니다. 마지막으로 sysctl -p  명령을 실행하여 설정이 적용되었는지 검사합니다.

스레드 설정


Elasticsearch에서 서로 다른 조작은 서로 다른 스레드 탱크가 있습니다. Elasticsearch 스레드가 정상적으로 생성되는 것을 확보하기 위해서는 운영체제의 스레드 수 제한을 설정해야 합니다.최소값은 4096이며 수정sysctl vm.max_map_count을 통해 설정을 완료할 수 있습니다.

총결산


이상의 배치는 생산 환경에서 매우 중요하다. 대부분은 공식 문서를 참고하고 자신의 이해를 결합시켰다. 만약에 묘사가 잘못된 부분이 있다면 바로잡아 주십시오.도움이 되었으면 좋겠습니다. 감사합니다.

좋은 웹페이지 즐겨찾기