Elasticsearch - 운영 환경 클러스터 핵심 구성
5489 단어 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
,ip
와ip:
가 될 수 있다.만약 설정이 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 더미 메모리 용량을 결정할 수 있으며, 설정 용량 자체도 서버의 물리적 메모리에 달려 있으며, Xms
및 Xmx
값은 물리적 메모리의 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
을 통해 설정을 완료할 수 있습니다.총결산
이상의 배치는 생산 환경에서 매우 중요하다. 대부분은 공식 문서를 참고하고 자신의 이해를 결합시켰다. 만약에 묘사가 잘못된 부분이 있다면 바로잡아 주십시오.도움이 되었으면 좋겠습니다. 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.