반응형
ElasticSearch란? Elasticsearch는 Apache Lucene기반의 Java 오픈 소스 분산 검색 엔진이다. Elasticsearch를 통해 방대한 양의 데이터를 신속하게(거의 실시간) 저장, 검색, 분석을 수행할 수 있다. Elasticsearch는 검색 엔진으로 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstash / Kibana) 스택으로 사용되기도 한다. 이러한 Elasticsaerch는 대규모 로그 파일 관리나 실시간 검색 서비스 등과 같이 대용량 데이터를 빠르게 처리해야 하는 경우 유용하게 사용될 수 있다. 데이터 저장 방법 (RDBMS와 차이점) RDB는 정규화된 스키마에 따라 데이터를 구조화하지만, Elasticsearch는 JSON 문서 형태로 ..
Kibana에 로그가 전달이 되질 않아서 Docker Desktop으로 logstash의 로그를 확인해보니 다음과 같은 에러가 발생했다. [2023-10-04T08:03:23,112][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://logstash_internal:xxxxxx@elasticsearch:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :message=>"Got response code '..
WSL 2를 사용하지 않고 Docker Desktop의 Hyper-V 기반 엔진을 사용하려면, 먼저 Hyper-V를 활성화해야한다. 1. "제어판" -> "프로그램 및 기능" 으로 이동 그리고 Windows 기능 켜기/끄기 클릭 2. Hyper-V 체크 3. Docker Desktop 설정에서 "Use the WSL 2 based engine" 옵션 체크 해제 후 재시작 4. 이제 이 이후에 도커 컨테이너 실행시 나오는 알림창 Share it을 클릭해주면 정상적으로 권한 문제 없이 파일 공유가 가능하다.
무중단 배포란? 단순히 CI / CD만 적용하면 배포단계에서는 애플리케이션이 종료된다는 문제가 있다. 만약 실제 서비스에서 사용자들이 서비스를 이용하는 도중에 갑자기 서비스가 중단된다면 좋지 않은 사용자 경험을 줄 것이다. 이 문제를 해결 해주는 것이 바로 "무중단 배포"이다. 무중단 배포는 말 그대로 서버를 중단 없이 배포하는 것이다. 무중단 배포에 대한 더 자세한 내용은 아래 포스팅에서 설명한다. 무중단 배포란? 무중단 배포 전략에 대해 알아보자. 무중단 배포란? 무중단 배포를 사용하지 않을 경우 실제 서비스를 서버 한대만을 사용해 운영한다고 가정해보자. 현재 서비스 중인 서비스는 application-V1을 배포한 서비스이다. 그런데 기능이 업 hstory0208.tistory.com 무중단 배포를..
프로젝트의 서버로 EC2를 사용하면서 기존에서 로컬에서 사용하던 redis를 AWS의 ElastiCache를 사용하는 방법으로 변경했다. 그런데 호스트의 주소를 잘못 적었는지 계속 위와 같은 연결 문제가 있었다. ElastiCache Redis를 생성하면 다음과 같이 마스터 노드와 내구성을 위해 읽기 전용인 노드가 2개가 기본으로 생긴다. 처음에는 읽기전용인 마스터 노드의 엔드포인트를 호스트로 작성해줘야하는 줄 알고 "리더 엔트포인트"를 호스트로 작성했다가 연결오류가 발생했다. 이렇게 지정하니 Read Only ~ 에러가 발생하면서 읽기 전용 노드에 접근하려고 하고 있었다. 그래서 이번에는 노드 중 primary를 지정해서 호스트 엔드포인트를 작성했다. 이제는 ReadOnly는 발생하지 않지만 Redis..
무중단 배포를 하는 도중에 jar 파일이 실행되지 않아서 계속 heath 체크가 실패하는 문제가 발생했다. 원인을 찾고자 해당 jar 실행 로그가 들어있는 파일을 열어 봤더니 아래 로그만 덩그러니 있었다. no main manifest attribute, in /home/ec2-user/app/deploy/mall-1.0.1-SNAPSHOT-20230927114334-plain.jar 이 에러는 jar파일에서 애플리케이션이 실행되는 @SpringBootApplication이 붙은 메인 클래스를 찾지 못했다는 뜻이다. java -jar로 jar파일을 실행 시키면 JVM이 jar파일의 메인 클래스를 호출하는데 이를 찾지 못해서 발생하는 문제이다. Spring boot 2.5.0 버전 이상 부터는 gradle..