Lined Notebook

[Elasticsearch] curl: (52) Empty reply from server

by HeshAlgo

curl: (52) Empty reply from server???

Elasticsearch를 로컬에서 테스트를 하면 주로 키바나를 이용해서 해당 curl을 이용할 일이 거의 없었습니다. 

그런데 어찌하다 우연히 터미널에서 http://localhost:9200을 요청을 했었는데

curl 요청

http를 사용해서 발생되는거기 때문에 https 요청을 해봐야겠다 싶었습니다. 그런데,

엥..?? 원래 이전에 했을때 그냥 됐었는데 갑자기 요청이 안되네요...

그러다 막 찾아보니 여러가지 해결방법이 있었는데 그중 대표적인 해결 방법으로 두 가지가 있었습니다.

 

1. Elasticsearch version down

2. curl 요청 옵션 추가

 

1번의 경우는 제 로컬에 설치된 Elasticsearch 버전은 현재 8.x.x로 가장 최신 버전을 이용하고 있습니다. 

8.x.x 버전으로 올라가면서 보안적인 설정들이 여러가지 추가가 되다 보니 해당 curl 요청을 막는 것 같았습니다. 

Elasticsearch의 버전은 굉장히 빠른 시간에 버전이 계속 올라가는데 7.x.x를 쓴다면 해당 이슈는 발생하지 않을 것입니다.

하지만, 저는 최신 버전을 쓸 것이기 때문에... 버전을 다운그레이드 하는 방법 말고 다른 2번의 방법을 이용해보겠습니다.

 

https 요청 시 curl 명령어는 기본적으로 SSL 인증을 필요로 합니다.

그렇기 때문에 SSL 인증 없이 바로 요청을 할 수 있도록 하는 옵션이 필요합니다. 해당 옵션은 `-k` 옵션을 통해 SSL 인증에 대한 검증 없이 요청할 수 있도록 추가합니다.

# curl -k -X GET https://localhost:{port}

추가로 `-k` 옵션을 추가하여 요청을 했지만 Security Exception이 발생했네요.

해당 이슈는 간단하게 엘라스틱서치에 사용된 ID와 PW를 추가해주면 됩니다.

8.x.x 버전으로 올라가면서 기본적으로 엘라스틱서치는 ID, PW를 설정해줘야 하기 때문에 초기에 설정한 ID와 PW를 추가해주면 됩니다.

# curl -k -X GET https://localhost:{port} -u {user}

해당 curl로 요청을 하게 되면 패스워드를 입력하라고 뜨며 등록한 패스워드를 입력하게 되면 클러스터의 대한 정보를 확인해볼 수 있습니다. 다른 REST API 요청을 할 경우에도 위와 같은 방법으로 요청을 하면 되지만 저 같은 경우는 키바나가 훨~씬 편해서 키바나를 앞으로도 계속 이용할 것 같습니다..ㅎㅎㅎ

 

제가 제시한 두 가지 방법외에도 cert 인증서를 이용한 방법도 있는데 해당 방법도 실제 엘라스틱서치 컨테이너에 접속해 인증서를 복사 후 로컬에 다운로드하여 curl 요청 시 해당 인증서 경로를 포함해 요청하는 방법도 있습니다. 하지만 해당 방법은 좀 번거롭기 때문에 딱히 추천하는 방법은 아닙니다. 

 

공부할 시간도 부족한데 이런 사소한 거에 시간을 뺏기게 되네요. 여러분들은 이런 사소한 이슈에 시간 뺏기질 않길 바라며 해당 포스트 작성해봅니다.

'Elasticsearch' 카테고리의 다른 글

검색과 쿼리 - Query DSL (2)  (0) 2022.05.28
Elasticsearch 데이터 처리  (0) 2022.02.24
데이터 모델링 (1) - Settings, Mappings  (0) 2022.01.21
Elasticsearch Node  (0) 2021.12.23
Elasticsearch에 대해서  (0) 2021.12.20

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기