1. 시작
해당 설치는 클러스터 구성 내용을 이어서 작성하며 그 기준에 맞게 작성하였습니다.
`node1~3` 은 `/etc/hosts` 파일에 추가해 준 내용이며 아래 링크를 참고하세요
[참고 1 `etc/hosts`]
[참고 2 클러스터 구성]
https://hbcha0916.tistory.com/category/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%20%EA%B5%AC%EC%84%B1
이제 Elasticsearch도 클러스터를 구성하면 한서버당 zookeeper, kafka, NiFi, elasticsearch를 삼중화(pc 3대)시킨 것이다.
Elasticsearch는 zookeeper를 사용하지 않기 때문에 Elasticsearch끼리만 클러스터를 구성할 것이다.(Zookeeper의 관여가 없다.)
[참고 3 Elasticsearch가 zookeeper를 사용하지 않는 이유]
https://www.elastic.co/kr/blog/found-zookeeper-king-of-coordination#what-we-dont-use-zookeeper-for
2. Elasticsearch
- 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형과 개방형을 특징으로 한다.
- REST API 를 사용해 데이터를 CRUD 할 수 있다.
- NOSQL 혹은 검색엔진 분류이다.
- 수많은 양의 데이터를 신속하고 실시간으로 저장, 검색, 분석할 수 있다.
- JAVA기반 애플리케이션이다.
3. 설치
3.1. 설치전 작업
Elasticserach는 메모리를 많이 사용하는데, 여기서 Linux커널의 메모리 맵 최대 영역을 조정해 줘야 한다.
아래 명령어는 일시적으로 사용할 수 있으며, 재부팅하면 기본값으로 변경된다.
3.1.1. 일시적 적용
sudo sysctl -w vm.max_map_count=262144
3.1.2. 영구적 적용
영구적 적용은 `/etc/sysctl.conf` 에서 아래 구문을 추가시키면 된다.
텍스트 에디터로 `/etc/sysctl.conf`을 연다.
vm.max_map_count=262144
참고로 기본값은 65536이다.
아마 이 작업을 건너뛰고 elasticsearch 애플리케이션을 실행시키면 아래와 같은 문장을 만나볼 수 있다.
ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
3.2. Elasticsearch 다운로드
아래 링크에 접속하여 다운로드한다.
https://www.elastic.co/kr/downloads/elasticsearch
Choose platform: 컴퓨터 운영체제 아키텍처
플랫폼을 선택하고 다운로드 버튼에 링크를 복사하여 `wget` 명령어를 사용하거나 어떠한 방법을 사용하여 다운로드한다.
설치 방법이 3가지가 있는데 본인 환경 혹은 제한사항에 따라 설치방식을 선택하면 될 것 같다.
- 직접설치(tar.gz)
- 패키지 관리자로 설치(apt-get, yum...)
- Docker설치(docker pull)
나는 1번(직접설치) 방식을 선택했다.
3.2.1. Elasticsearch를 패키지 관리자(apt-get, yum...)로 설치
Package managers 부분에서 리눅스 OS 에 맞는 링크를 들어가 가이드에 맞게 설치하면 된다.
나는 압축 파일을 받아서 직접설치 방식을 선택했다.(프로젝트에서 지정된 디렉터리에 Elasticsearch를 설치해야 했기 때문이다.)
3.2.2. wget으로 Elasticsearch 8.9.0 다운로드(linux-x86_64)
위 링크를 접속하지 않고 그냥 8.9.0을 설치할 예정이면 위 링크를 무시하고 해당 절차를 따른다.
설치할 디렉터리로 이동 후 아래 명령어를 따른다.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-linux-x86_64.tar.gz
3.2.3. 다운로드 파일 압축 풀기
tar -zxvf elasticsearch-8.9.0-linux-x86_64.tar.gz
4. 적용
Elasticsearch를 설치한 디렉터리를 편의상 `$ELASTIC_HOME`으로 부르겠다.
4.1. elasticsearch.yml 설정
$ELASTIC_HOME/config/elasticsearch.yml 파일에서 아래 내용을 추가/수정한다.
cluster.name: el-cluster
node.name: node-1 #노드별로 설정
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
xpack.security.enabled: false
cluster.name | 한 클러스터의 모든 노드는 같은 이름의 `cluster.name`를 가져야 합니다. |
node.name | 노드별로 이름을 설정해 줍니다. |
network.host | 해당 노드의 호스트 입니다. |
http.port | 노드의 http port입니다. |
discovery.seed_hosts | 모든 노드들의 host를 적어줍니다. |
cluster.initial_master_nodes | 마스터 노드가 될 수 있는 노드들을 적어줍니다. |
xpack.security.enabled | 보안설정 입니다. |
저는 별다른 보안 설정을 하지 않았습니다.
4.2. jvm.options 설정
JavaHeap 사이즈를 설정합니다.
-Xms4g
-Xmx4g
`-Xms` : 기본 할당
`-Xmx` : 최대 할당
5. Elasticsearch 실행 명령어
데몬 모드로 실행하여 Elasticsearch 시작 로그만 출력 후 데몬으로 실행됩니다.
$ELASTIC_HOME/bin/elasticsearch -d
5.1. 적용 확인
Elasticsearch의 모든 노드를 실행시키고 클러스터가 구성되었는지 확인합니다.
아무 노드에서 아래 명령어를 실행시킵니다.
curl http://node1:9200/_nodes/process?pretty=true
출력 시 모든 노드가 나와야 합니다.
'클러스터 구성' 카테고리의 다른 글
[kafka][Ubuntu][NiFi] Apache Kafka cluster 구성하기 (0) | 2023.08.06 |
---|---|
[NiFi][Ubuntu] Apache NiFi cluster 구성하기 (0) | 2023.08.02 |
[zookeeper][Ubuntu] Apache zookeeper cluster 구성하기 (0) | 2023.08.01 |