[TIL] 최종 프로젝트 (11) - 윈도우 로컬 환경에서 엘라스틱 서치 & 키바나 설치법

J쭈디·2025년 2월 21일
0

Sparta_프로젝트

목록 보기
22/35

오늘은 팀원 모두 모여 엘라스틱 서치에 집중하는 시간을 가지고 있다. 현재 팀원 한 분이 엘라스틱 서치를 설치하고 그 코드가 머지 되어야 하기 때문이다. 그렇게 되면 우리는 나머지 작업을 하기 위해 엘라스틱 서치를 다 설치를 해 줘야 한다.

키바나와 엘라스틱 서치를 설치할 예정인데, 아무래도 엘라스틱 서치가 대용량 데이터에 있어서 처리 속도가 엄청 빨라서 설치하는 쪽으로 이야기가 나왔다.

1. 윈도우에서의 엘라스틱 서치설치

나는 윈도우 환경인데 엘라스틱 서치를 설치해야 해서 조금 머리가 아팠다. 엘라스틱 서치 담당하시는 팀원 분은 맥 환경인데도 너무 힘들어하셨기 때문에 겁이 나는 것도 있었던 거 같다.

1. 실행 전 파일 설정

일단 보고 따라하실 분들은 반드시 끝까지 먼저 읽어주세요.
저의 헛짓거리가 포함되어 있으니 바로 따라하시면 피 보실 수 있습니다.

일단 엘라스틱 서치 홈페이지에서 다운로드를 받는다. 그리고 일단 공식사이트를 참고했다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-windows.html
여기서 하라는대로 하고 있는데...

않이.. 왜 이럴까 ㅎㅎ

처음부터 쉽지 않네.
https://www.youtube.com/@elastic7014
여기에 들어감녀 엘라스틱 서치에 대한 내용들이 나온다. 이 중에 윈도우 엘라스틱 서치에 대한 영상도 있었다!! 근데, 문제는 이거 로컬 환경이 아니라 사실상 리눅스 깔아서 리눅스 서버에서 돌리는 영상이다. 이게 윈도우 로컬에서 쓰는 영상이었다면 참 좋았을텐데 아쉬운 부분이다.

이 와중에 GPT한테 물어보니 설정 권한이 부여되어야 한다나 뭐라나.. cmd를 혹시 몰라서 관리자 권한으로 실행해서 오류가 난 건가 뭔가.. 그런거 같다. 근데 이거 생각해보니 cmd가 아니라 powerShell로 해야할 거 같은데, 나는 이미 파워쉘이 셋팅이 되어있어서 그걸 다시 켰다. 그리고 cmd를 닫으면 엘라스틱 서치도 닫힌대서 cmd는 닫아주었다.

이번엔 또 뭐여... 파워 셀은 또 이동이 안되네, 차라리 아예 리눅스면 모를까 윈도우 파워 셀은 극혐이다. 윈도우는 정확한 파일을 쌍따옴표로 감싸줘야한다.
터미널 쓸 때마다 느끼지만 윈도우는 터미널 쓰기 참 번거롭다

cd "C:\Program Files\elasticsearch-8.17.2\bin" 요로코롬 경로를 제대로 먹여 줘야 겨우 받아 먹는다나 뭐라나


그리해서 이리 성공하였고, 혹시 윈도우 터미널을 처음 쓰는 분이 있다면 몇 가지 팁을 알려주려고 한다.

터미널 복붙에서 ctrl + c , ctrl + v 는 못 씁니다. 대부분 터미널 특징이긴 한데 복사를 해 두고 마우스 오른쪽 버튼 눌리면 붙여넣어집니다.
그리고 더 극혐인건 누를 때마다 붙여넣어져서 이미 쓴 명령어를 다시 복사하는 건 더 번거로우니 포기하세요.

맨 처음 뜬 워닝은 엘라스틱 서치 쪽에서 "쭈디야 니 컴퓨터에 자바 17깔려있는데 나는 이미 내장된 자바를 쓰는데 이거 어떡할거야? 니 버전 못써 ㅋ" 이러는 거라고 한다.

그리고 아니나 다를까 파워 셀도 똑같은 워닝이 뜬다 껄껄

2. C드라이브 용량은 넉넉히 시작하기

이제 또 문제가 발생했는데 용량이 많댄다

그러네 많네... 극혐이지만 일단 심즈 프리플레이를 지울까 하는 생각도 들면서... 쓸데 없는 파일들 지우기 작업에 들어가도록 하겠다.

아 이거 원인이 엘라스틱 서치 니 설치파일이랑 키바나 때문이잖아!!!!


어쩐지 이상했다. 다운로드 폴더가 거의 용량이 없었고, 뭐 넣을 게 없었는데 이상하게도 용량이 차더라니.. 그리고 아마 로컬 환경에서 엘라스틱 서치 설치파일이 들어가는 게 용량차지가 큰 거 같다. 아, 그리고 도커가 문제다... 도커도 깔려있었기 때문에 이런 듯 하다.

도커가 깔려있는데 왜 로컬 써요? 라고 묻지 마시길 바란다. 나도 안다.. 하지만 도커로 하지말고 그냥 로컬로 하라고 하는걸... 그리고 나는 엘라스틱 서치 자체가 처음이라 첫 도전은 일단 내 컴으로 해보는 것이다.
그리고 파일들을 쏙쏙 지워주고, 엘라스틱 서치를 다시 실행하는 것이다.
귀찮다

다시 돌렸다, 근데 또 이런다

3. elasticsearch.yml 파일과 전쟁

elasticsearch.yml을 설정하는 게 오래 걸린다고 들었다. 근데 지금 내 문제가 그 문제로 보인다. 보안설정도 켜져있고, 여러가지 셋팅이 안 되어있다고 한다.
개발하는 단계에서는 보안설정을 꺼두라고 했고, 실제로 팀원분들도 다 보안설정을 꺼두고 작업을 하고 있다고 해서 이건 따르기도 했다.

그리고 이 단계정도 왔으면 yml 파일 고치는 건 실제 우리 팀원들하고 맞춰가야 할 단계라고 보인다. 그래서 팀원들이 남겨둔 엘라스틱 서치의 흔적들을 찾아가기로 했다.

1. 윈도우일 때라고 yml 파일을 그냥 vsCode로 열면 큰일납니다.

이제 에디터로 엘라스틱 서치 설정파일에 들어가야 하는데 그 전에 Ctrl + C를 눌러줘서 엘라스틱 서치 실행을 멈춰주어야 한다.
그리고 C:\Program Files\elasticsearch-8.17.2\config\elasticsearch.yml 이 파일을 vi 명령어를 이용해 수정해야한다.
리눅스 명령어 체계가 어렵다면 조금 헷갈릴 수 있으니 주의해야 한다.

일단 cd 명령으로 config 폴더까지 접근해줘도 좋고, 그게 귀찮으면 그냥 vi config/elasticsearch.yml 이 명령어를 바로 써 줘도 좋다.

어차피 내가 현재 있는 폴더칸의 하위폴더로 vi를 쓸 수 있기 때문이다.

위처럼 나는 config까지 이동했으니 그냥 vi 엘라스틱서치.yml 해주면 된다.

인 줄 알았는데... 파워셀이 날 또 배신했다. 파워 셀은 대부분 리눅스 명령을 해결해주지만 vi는 해결해주지 못하는 모양이다. 만약 본인 컴퓨터에 vs code가 설치되어 있다면 code "C:\Program Files\elasticsearch-8.17.2\config\elasticsearch.yml" 명령어로 가능하고, 없다면 일반 메모장 명령인 notepad "C:\Program Files\elasticsearch-8.17.2\config\elasticsearch.yml" 도 가능하다 한다.
근데 이럴 거면 왜 터미널 쓰지 그냥 폴더 들어가서 vs코드 켜는거랑 똑같은데

아무튼 그러하다.

그리고 난 또 후회를 했지, 당신들은 반드시 vs 코드 직접 열지 말고 명령어만 쓰세요.
명령어 안 쓰고 고쳐서 망한 사람이 바로 나야나.
처음부터 명령어만 쓸걸 ㅠㅠ

2. 개발단계에서는 보안 설정을 해제하기

처음 열면 전부 주석이 #으로 달려있는 걸 알 수 있다.

그리고 팀원들 간 상의한 것들을 수정한다.
일단 우리 팀은 이랬다.

전체 주석을 일단 해제를 해 준다. 당연히 주석처럼 생긴 건 제외하고

그리고 아래 내용을 추가한다.

# 🔒 [보안 비활성화 설정]
# Elasticsearch의 보안 기능을 비활성화합니다.
# 이 설정이 활성화되면 인증, 인가, 데이터 암호화 등의 보안 기능이 작동하지 않습니다.
# 일반적으로 개발 환경이나 로컬 테스트에서만 사용합니다.
# 💡 운영 환경에서는 절대 사용하지 않는 것이 좋습니다!
xpack.security.enabled: false

# 🔒 [HTTP SSL 비활성화]
# Elasticsearch와 클라이언트(Kibana, Logstash 등) 간의 HTTP 연결에 SSL 인증서를 사용하지 않습니다.
# SSL을 비활성화하면 데이터 전송 시 암호화되지 않으므로 민감한 데이터가 노출될 위험이 있습니다.
# 💡 운영 환경에서는 SSL을 사용하도록 설정해야 합니다!
xpack.security.http.ssl.enabled: false

# 🔒 [Transport SSL 비활성화]
# Elasticsearch 노드 간의 통신을 암호화하지 않습니다.
# 특히 클러스터 내 여러 노드가 있는 경우, 노드 간 데이터 전송이 암호화되지 않으면 위험할 수 있습니다.
# 💡 운영 환경에서는 Transport SSL을 사용하도록 설정해야 합니다!
xpack.security.transport.ssl.enabled: false

# 🚦 [클러스터 초기 마스터 노드 설정]
# Elasticsearch 클러스터를 생성할 때, 첫 번째 마스터 노드를 설정합니다.
# ["*****"]은 노드의 이름(또는 ID)이며, 일반적으로 노드의 호스트 이름 또는 자동 생성된 UUID입니다.
# 이 설정 자체는 보안과 관련된 민감 정보는 아니지만, 노드의 식별자를 노출할 필요가 없다면 가려야 합니다.
cluster.initial_master_nodes: ["*****"]

# 🔒 [자동 등록(enrollment) 기능 활성화]
# xpack.security.enrollment.enabled이 true로 설정되면, Kibana나 Elastic Agent에서 자동 등록을 위한 시크릿 키(Enrollment Token)가 생성됩니다.
# 이 설정 자체는 크게 위험하지 않지만, 이 설정으로 생성되는 "Enrollment Token"은 절대 노출되어서는 안 됩니다!
# 💡 Enrollment Token을 외부에 절대 공유하지 마세요!
# 하지만 개발 단계에서 연결하려면 이거 false여야 연결이 되는 것 같다.
# 난 처음엔 true 했다가 키바나 연결이 안되서 false로 바꾸었다.
xpack.security.enrollment.enabled: true

보안설정 관련인 거 같은데 나는 주석이 달리면 편할 거 같아서 GPT에게 부탁해서 주석 달린 버전을 여기 기록해두기로 했다. 그리고 중간에 *표 된 것은 노드 ID 인데 이걸 보려면 시크릿 키가 필요하기 때문에 노드 ID에 대한 것은 일단 주석처리해두고 먼저 엘라스틱 서치를 재실행해야 한다.

이렇게 하고 창을 닫은 후, 엘라스틱 서치를 재실행해주면 세월아 네월아 로딩하면서 동작하기 시작한다. 이 때 그냥 냅두면 된다.

이리 나오는데 두번째 줄의 red to green이 나온거면 정상실행이라고 한다.
근데 아랫줄에서 두번째... 잘리긴 했지만 85% 용량이 차서 워닝이 또 뜬다..
키바나도 설치해야하는데 아무래도 게임 몇 개를 지워야하나보다. 어차피 ssd인데 다음엔 d에다 게임 저장해야겠다.

3. 시크릿 키를 잘 보관하시오

그리고 첫 실행을 성공하면 시크릿 키가 나오는데 이 시크릿 키는 꼭 안전한 로컬 저장소에 보관해야 한다. 만약 나처럼 시크릿 키를 놓쳤다?

그렇다면 반드시 엘라스틱 서치가 실행되는 상태로 새 창을 열고 .\elasticsearch-reset-password.bat -u elastic를 입력해주면 새 비밀번호 발급이 가능하다.

이 화면이 나오면 성공이다 이 때 y를 눌러주면 새 시크릿키를 받을 수 있다.

이제 다시 노드 ID를 알아보자, 컴퓨터 cmd나 파워셀 새로 열어서 curl -X GET "http://localhost:9200/_nodes?pretty" 이 명령어로 확인이 가능하다는데.... 이건 맥북용이다.
파워셀에서는 아래의 명령을 써야한다.
Invoke-RestMethod -Uri "http://localhost:9200/_nodes?pretty" -Credential (Get-Credential) 이걸 입력하면 id와 비밀번호 창이 열린다.

아이디에는 elastic을 넣어주고 비밀번호에는 위에서 따로 빼 둔 시크릿 키를 입력하면 된다.


그럼 이런 결과가 나오는데, 이렇게 표시된 빨간 부분이 노드 ID이다. 그리고 이 후에 크롬에 접속해서 아까 쓴 아이디 비밀번호 그대로 입력해주면 정상 접속인지 확인이 가능하다.

나는 잘 나왔기 때문에 키바나 설치를 위해 가야한다.

4. 애초에 용량이 넉넉한 D에 설치가 가능

근데 키바나를 설치하려고 보니 용량이 부족하다.. 그래서 찾아보니 D드라이브에 설치도 가능하다고 한다.


복사도 된다길래 난 이미 설치된 엘라스틱 서치를 명령어를 이용해서 복사해왔다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

키바나도 설치해야 해서 용량 때문에 게임까지 지웠는데...ㅋㅋ 결국 용량이슈가 어이없는 방식으로 해결되버렸다. 나처럼 뻘짓하던 분이라면 아래의 명령어를 사용하시면 정말 빠르게 복사가 된다.
xcopy "C:\Program Files\elasticsearch-8.17.2" "D:\elasticsearch-8.17.2" /E /I
그리고 실행을 한 번 D에서 돌려보고, 정상실행 된다면 rd /s /q "C:\Program Files\elasticsearch-8.17.2" 이 명령으로 C의 설치파일을 지우면 된다.


복사 후에 이렇게 cd 명령으로 파일 경로만 이동해 주면 된다. 후후..

이제 이거 정상 작동 되는 걸 확인했으니 키바나 설정으로 간다.

2. 윈도우에서의 키바나 설치

이번에는 키바나를 설치해보기로 했다. 일단 공식 홈페이지에서 키바나를 다운로드 해주고 압축을 풀고 원하는 설치 장소에 넣어준다. 나는 엘라스틱 서치와 동일하게 D드라이브 디폴트에 넣어줬다.

1. 키바나 환경설정

일단 아까 엘라스틱 서치마냥 키바나도 공식홈페이지의 윈도우용 가이드가 존재한다.
https://www.elastic.co/guide/en/kibana/8.17/windows.html

근데 이거 키바나.. 맘에 안든다. ㅋㅋ 파일 이름으로 압축을 푸니까 하위 폴더가 생겨버렸다. 귀찮네.. 이름도 다르고..
D:\kibana-8.17.2-windows-x86_64\kibana-8.17.2 이런 경로란 말이다. 그래서 나는 파일을 좀 졺겨서 중간 경로는 없애는 걸로 방향을 틀었다.

그리고 또 config 폴더로 가서 바로 수정에 들어갔다. 이번엔 터미널로 하는 뻘짓 안했다. 귀찮으니까...


이렇게 세 가지만 주석을 해제해 줬다.

그리고 실행, 이상한 상태가 된 걸까?

내가 이전에 아마 시크릿 키를 만들려고 랜덤값을 받는 거였나? 그래서 OpenssL을 설치했던 거 같다. 근데 이게 키바나가 원하는 OpenssL은 1버전이고 나는 3버전(최신)이 깔려있어서 워닝이 뜬거라고 한다.

물론 아무것도 안 깔려있는 윈도우 환경 여러분은 OpenSSL을 1버전으로 다운받고 까시기 바랍니다.

2. 키바나와 엘라스틱 서치 연결하기

그리고 실행 되고 난 후, 로컬에서 5601 포트로 접속하면 아래와 같이 로그인 폼이 뜨게 된다.

근데 또 왜 이런담..?

아무래도 yml 파일 문제인 것으로 보인다. 허허
다른 팀원 분에게 물어보니 연결을 위해 추가 셋팅이 필요하다고 한다. yml 파일을 열어보자!!

우리가 필수로 주석 해제해야 하는 것은 다음과 같았다.

server.host:"localhost"
server.name: "your-hostname"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "사용자이름"
#elasticsearch.password: "pass" keyStore 이용하여 삽입함 < 키스토어 이용 안하면 주석 해제하고 비밀번호 설정

우리는 키스토어를 사용하여 비밀번호를 삽입했는데, 이게 비밀번호를 yml 파일에 노출하지 않아도 되서 보안상 안전하다고 한다.

키바나 실행 중에 아래의 명령어를 사용해서 본인이 원하는 비밀번호를 치면 삽입은 끝난 것이다.

bin/kibana-keystore create
bin/kibana-keystore add elasticsearch.password

결과는 이러하다.

그리고 우리는 추가로 jwt 토큰을 이용할 때 사용했던 비밀키를 입력해주었다. xpack.encryptedSavedObjects.encryptionKey:(암호화된 시크릿키)
이걸 추가해주면 된다고 한다.

근데 또 에러 발생..

길다 길어... 찾아찾아보면 주석해제가 누락된 부분이 있다는 것 같다.

<추가된 주석해제 부분>

elasticsearch.ssl.verificationMode: 

이렇게 하고 엘라스틱 서치 실행하면서 파워셀 창 하나 더 띄워서 키바나를 실행해봤더니 이렇게 되었다.


오.. 뭔가 된거같다.?

근데 접속이 안된다!!!!
분노하며 휴식을 취한 후, 순서의 문제라는 생각이 들어서 일단 엘라스틱 서치와 키바나를 각각 콘솔로 열어주고 순서대로 실행해보기로 했다.

이제 좀 되어가나 보다


기다리라는 의미인 거겠지> 아직 키바나 서버가 준비 안 되었다고 한다 ㅋㅋㅋㅋㅋ

여기서 큰 문제를 알아버렸다. 내가 귀찮다고 yml 파일을 물리적으로 열고 닫아버린 게 문제였다고 한다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 저장이 안 되어버렸다고 한다. VS Code 꼭 저장을 눌러야 한다. ㅋㅋㅋㅋㅋㅋ

아 근데 이러고도 문제가 생겼다.

3. 또 한번 yml과의 전쟁, 터미널 꼭 쓰세요

일단 엘라스틱 서치에서 yml 파일 몇 가지를 고쳐야한다고 GPT 선생님이 알려주셨다.

<엘라스틱 서치>

network.host: localhost
node.name: 위에서 찾은 노드 ID
discovery.seed_hosts: ["127.0.0.1"]

그리고 또 안되서 찾아보니 이런 것도 있었다.

지금 수십번 째 같은 에러가 나는데 보안설정을 둘 다 꺼주는데 왜 자꾸만 키바나에서는그게 적용이 안되는걸까?

Aㅏ... 알고보니 보안 설정을 끄려고 따로 키바나 yml 파일에 보안설정 코드를 적었다가 그게 인식이 되어서 문제였던 거였다. 브아보


이런 화면과 함께 나의 얼레벌레 엘라스틱 서치 실행기는 끝이 났다.

3. 이걸 보는 사람과 나를 위한 마지막 기록

엘라스틱 서치와 키바나를 사용하고 싶은데 로컬 윈도우즈 환경에서 보안설정을 끄고 개발할 분들을 위한 기록이다.

1. 엘라스틱 서치 로컬 윈도우 + 보안x 환경변수

 cluster.name: my-application
 node.name: 노드 id
 node.attr.rack: r1
 path.data: D:/elasticsearch-8.17.2/data
 path.logs: D:/elasticsearch-8.17.2/logs
 bootstrap.memory_lock: true
 network.host: 127.0.0.1
 http.port: 9200
 
 # 🚦 클러스터 초기 마스터 노드 설정
 cluster.initial_master_nodes: ["노드 id"]
# 추가 보안 설정 
# 🔒 보안 비활성화
 xpack.security.enabled: false

# 🔒 HTTP SSL 비활성화 (Kibana, Logstash, 에이전트 연결용)
 xpack.security.http.ssl.enabled: false

# 🔒 노드 간 Transport SSL 비활성화
 xpack.security.transport.ssl.enabled: false

# 🔒 자동 등록(Enrollment) 기능 활성화 (Enrollment Token을 사용해야 하는 경우만 활성화)
 xpack.security.enrollment.enabled: false
 action.destructive_requires_name: false

2. 키바나 로컬 윈도우 + 보안x 환경변수

server.host: "localhost"
server.name: "노드 id"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.ssl.verificationMode: none
# Encrypted Saved Objects 암호화 키 (32바이트 이상의 랜덤 문자열)
xpack.encryptedSavedObjects.encryptionKey: jwt 시크릿 키

시크릿 키는 안 쓰면 필요없을 거 같긴 한데 엘라스틱 서치까지 쓰면서 jwt 인증인가를 안하는 건 또 이상하긴 하고.. 아무튼 그러하다.

그리고 이건 나중에 배포 환경으로 들어가면 다 바꾸어야 하는 설정들이다.
이제 테스트 코드도 짜야하는데 생각보다 키바나가 너무 오래 걸려서 기가 빠진다. ㅋㅋ

profile
언제 어느 위치에 있더라도 그 자리의 최선을 다 하는 사람이 되고 싶습니다.

0개의 댓글