만쥬의 개발일기
article thumbnail
[ELK] - 엘라스틱 서치란?
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 18:02

엘라스틱 서치 엘라스틱 서치(Elastic Search, 통칭 ES)는 Full-text search engine으로 처음 개발되었지만, 검색엔진을 넘어 보안, 로그분석, 전문(Full-text)분석 등 다양한 영역에서 중요한 역할을 하고 있다. Kibana, Logstash, Beats들과 함께 Elastic Stack이라 불린다. ES가 타 NoSQL 제품보다 월등히 빠르고 어려운 검색, 집계 성능을 보이는 이유? ➡️검색 엔진인 동시에 데이터베이스이기 때문 충분한 크기의 클러스터가 구성되어 있다면 1초 이내의 응답 속도 보인다. ES의 또 하나의 특징은 바로 스코어링, 연관도에 따른 정렬이다. 타 데이터베이스도 제공하는 필드값 기준 정렬이 아닌, 유사도 스코어 정렬로 인해 복잡한 문자열 콘텐츠 검색..

article thumbnail
[Elasticsearch] - Elasticsearch의 각 노드 별 적정 메모리 할당
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 17:51

Elasticsearch의 램 부족 현상 엘라스틱 서치를 멀티 노드 클러스터 환경에서 연습하던 중, 노드가 error code 137과 함께 죽는 현상이 종종 발생했습니다. 이는 메모리 부족과 관련된 이슈였는데, 사용 중인 랩탑의 총 메모리가 8GB에 불과해 노드 3개짜리 클러스터를 도커 컨테이너로 구성할 때 각 노드에 단 1GB씩을 할당해줘서 발생한 것이었습니다. (기존 아키텍쳐 그림입니다) 엘라스틱 서치를 사용할 때는 연습환경일지라도 한 노드 당 최소 4GB 이상씩을 할당해줘야하고, 물론 빠른 작업을 제공하기 위해서는 메모리는 많으면 많을 수록 좋습니다. 만약 메모리가 남는다면, 특히 인덱싱과 CRUD, 검색 및 집계 등을 처리하는 데이터 노드에 더 많은 메모리를 할당해주는 것이 일반적으로 좋습니다...

article thumbnail
[Elasticsearch] - 실제 배포 환경과 동일하게 멀티 노드 클러스터 구축하기
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 17:48

엘라스틱서치 노드 & 키바나 & 로그스태시 서버를 각각 구축했다면, 이제 각각의 yml 파일들을 수정해주어야 합니다. 최종 목표 아키텍쳐는 다음 그림처럼 각 서버당 도커 컨테이너를 띄우고, 세 개의 서버에서는 엘라스틱 서치를 , 한 개의 서버에서는 키바나를 띄우는 멀티 노드 클러스터를 구축하는 것입니다. 엘라스틱 서치와 키바나 설치 과정은 이전 포스팅을 참고해주세요. [ELK] - Elasticsearch & Kibana 8.12.2 설치 (with docker,WSL2) 이번 포스팅에서는 엘라스틱 서치와 키바나 8.12.2 버전을 설치하고, 단일 노드와 멀티 노드 클러스터 환경을 각각 구축하는 방법에 대해 알아보겠습니다. 만약 서버(컴퓨팅 자원)이 여러 대라면 kangmanjoo.tistory.com ..

[Docker] - 빈 도커 이미지 기본 세팅 (Ubuntu용)
🛠️TOOL/🐳Docker 2024. 3. 26. 17:45

도커 이미지를 받으면 보통 안에 아무런 툴도 깔려있지 않아 굉장히 불편하다. 할 때마다 찾기가 귀찮아서 한 번에 정리해놓겠다. 우선 관리자 모드로 들어가기 위해 다음 옵션으로 bash에 접속해준다. docker exec -u 0 -it {컨테이너명} /bin/bash 그리고 다음 입력으로 sudo, vim, net-tools(ifconfig 등) , iputils-ping(ping 용) 을 설치해준다. 이 명령어는 도커가 아닌 데비안 계열 리눅스 VM을 처음 설치할 때도 유용하게 쓰일 수 있다. apt-get update && apt-get install -y sudo && sudo apt-get install vim && sudo apt install net-tools && sudo apt-get in..

article thumbnail
[ELK] - Elasticsearch & Kibana 8.12.2 설치 (with docker,WSL2)
🛠️TOOL/🔭Elasticsearch 2024. 3. 25. 15:58

이번 포스팅에서는 엘라스틱 서치와 키바나 8.12.2 버전을 설치하고, 단일 노드와 멀티 노드 클러스터 환경을 각각 구축하는 방법에 대해 알아보겠습니다. 만약 서버(컴퓨팅 자원)이 여러 대라면 멀티 노드 클러스터 구축 시 단일 노드를 각 서버마다 구축해주면 되고, 서버가 한 대로 한정적이라면 멀티 노드 클러스터를 구축해주면 됩니다. 개발환경 ubuntu 20.04 java 17 docker 26.0.0 elastic search 8.12.2 🚨주의사항🚨 엘라스틱 서치는 일정량 이상의 메모리가 필요합니다. 노드당 최소 4GB를 할당해주는 것이 바람직하며, 만약 1GB등 매우 낮은 메모리를 할당해준다면 작동 도중 137번 error code와 함께 프로그램이 중단될 수 있습니다. 따라서 충분한 컴퓨팅 자원을..

article thumbnail
[intellij] - API 요청 IP 로그 남길 시 IPv4 설정
🛠️TOOL 2024. 2. 14. 17:11

서버로 API 요청을 보내는 IP들의 로그를 저장하고 싶은데, IP들이 IPv6로 찍혀 보기 불편한 경험이 있었다. 이를 intellij에서 다음 설정들을 통해 IPv4로 옵션을 바꿔줄 수 있었다. Run ➡️ Edit Configurations... Modify options ➡️ Add VM options 그리고 VM option에 다음 설정을 복붙한다. -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true 이후 실행하면 원하는대로 로그가 찍히는 것을 확인할 수 있다. reference https://gaemi606.tistory.com/entry/IntelliJ-IPv4-%EC%84%A4%EC%A0%95

article thumbnail
[WSL] - vscode version `GLIBC_2.28' not found , WSL2 ubuntu 버전 업그레이드
🛠️TOOL/🆚VSCODE 2024. 2. 14. 17:05

문제 원인 평소와 같이 wsl 터미널에서 code로 vscode를 사용하려고 하자, 다음과 같은 에러가 발생했다. ... /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found ... 무슨 상황인가하니, vs code가 의존 중인 glibc 버전에 따른 문제인데, 최신 vscode가 의존하는 glibc 버전이 우분투 18.04의 glibc 버전보다 최신 버전을 의존하기 때문에 발생하는 문제였다. From the bashonubuntuonwindows community on Reddit Explore this post and more from the bashonubuntuonwindows community www.reddit.com vscode 2..

article thumbnail
[AWS] - EC2 인스턴스 SSH 접속 시 error : Permission denied (publickey)
🛠️TOOL/🔶AWS 2024. 2. 14. 16:11

늘 하듯이 EC2 인스턴스의 authorized key에 내 ssh public 키를 등록하고 잘 사용하고 있었다..그런데 갑자기 잘 접속되던 인스턴스에 접속을 시도하자 다음 에러를 직면했다.Permission denied (publickey). 아니 분명히 public 키도 잘 등록했는데 왜지?? 싶어서 authorized_keys 폴더에 권한을 줘보기도 하고, public 키에도 권한을 줘보고, 로그도 보며 SSH known_host도 수정해보는 등 다양한 방법을 써봤지만, 결국 다음 방법으로 해결했다. 먼저 브라우저로 EC2 커널에 접속해, /etc/ssh/sshd_config 파일을 수정한다.sudo vi /etc/ssh/sshd_config해당 파일에 PasswordAuthentication 을..