전체 글

전체 글

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 트러블슈팅 (1) - Elasticsearch

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 트러블슈팅 (1) - Elasticsearch

    앞선 포스팅에서는 로컬 develop 환경이어서 아무런 문제없이 Elasticsearch를 구성할 수 있었는데요. 다수 서버의 프로덕션 환경에서는 많은 문제가 발생해 꽤나 고생했습니다. 이번 포스팅에서는 Elasticsearch를 프로덕션 환경에 구성하면서 겪었던 문제와 해결 과정을 소개하려고 합니다. Elastic Stack 구성 우선 제게 허락된 서버는 2대였습니다. 그런데 Elasticsearch는 최소 3개의 노드가 필요하기 때문에 좀 더 성능이 나은 서버에 두 개의 노드를 구성했습니다. External Network 🟩 외부망에서 접근 가능한 루트입니다. L4 스위치를 경유해 두 개의 서버에 로드 밸런싱이 되도록 했습니다. Internal Network 🟥 내부망에서만 접근 가능한 루트입니다. ..

    [Elasticsearch] 마스터노드 선출 실패 오류

    [Elasticsearch] 마스터노드 선출 실패 오류

    Elasticsearch 클러스터는 하나 이상의 노드들로 이루어집니다. 이 중 하나의 노드는 인덱스의 메타 데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리하는 마스터 노드의 역할을 수행합니다. 만약 클러스터에 마스터 노드가 존재하지 않는다면 클러스터는 작동이 정지됩니다. Elasticsearch를 Docker 환경에서 구동하는 경우, 공식 가이드에서 아래와 같이 클러스터의 마스터 노드 후보를 지정하도록 가이드하고있습니다. cluster.initial_master_nodes=노드명,노드명,노드명 아래는 Docker 환경에서 클러스터의 마스터 노드가 선출되지 못한 오류와 그 해결 과정입니다. 오류 내용 master_not_discovered_exception http://엘라스틱서치노드:9200/ 접..

    [Elasticsearch] X-Pack Security 활성화 시 오류

    [Elasticsearch] X-Pack Security 활성화 시 오류

    Elasticsearch 에서 보안 관련 기능을 사용하려면 X Pack Security를 활성화 해야합니다. docker-compose.yml 에서는 xpack.security.enabled=true 로 X Pack Security를 활성화 할 수 있는데요, 활성화 후 컨테이너를 여러 차례 재기동하게 되면 아래와 같은 오류가 발생하고 Elasticsearch 노드가 종료되는 현상이 발생합니다. ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: Transpor..

    [Elasticsearch] vm.max_map_count 변경

    [Elasticsearch] vm.max_map_count 변경

    Elasticsearch를 프로덕션 환경에서 구성시 vm.max_map_count 값을 조정해주어야 합니다. 이번 포스팅에서는 vm.max_map_count 값을 조정하지 않았을 때 발생하는 오류와 처리 방법을 소개해보도록 하겠습니다. 포스팅 환경 CentOS 7 Elasticsearch 7.16.2 오류 ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] vm.max_map_count 값을 조정하지 않고 Elasticsearch를 구동하면 위와 같은 오류가 발생합니다. 해결 방법 ​오류 메시지대로 vm.max_map_co..

    Facade Pattern과 API Composition

    Facade Pattern과 API Composition

    지금 진행 중인 프로젝트는 코어 모듈에 도메인별로 기능을 구현하고, 사용자 애플리케이션과 어드민에서 코어 모듈을 import 해 오픈된 인터페이스를 통해 도메인의 기능을 사용하게끔 구성했습니다. 이를 Onion Architecture라고 하는데, Onion Architecture는 다음 포스팅에서 다뤄보겠습니다. 이번 포스팅에서는 어드민을 개발하면서 동료 개발자분과 어드민 백엔드를 어떻게 구성할지 논의하면서 Facade Pattern과 API Composition의 차이가 궁금해져 알아보았습니다. Facade Pattern Facade Pattern은 디자인 패턴 중 하나로 복잡한 서브 시스템 혹은 서비스들을 간략한 인터페이스로 감싸서 클라이언트에 제공해줍니다. Facade Pattern에서 클라이언트는..

    [Jenkins] 젠킨스 파이프라인 when의 tag 표현식, 왜 안되는거니?

    [Jenkins] 젠킨스 파이프라인 when의 tag 표현식, 왜 안되는거니?

    저는 지금 팀 내부에서 작은 프로젝트를 진행하고 있습니다. 개발은 어느 정도 완료되었고, 팀 알파 서버에 배포하는 단계가 남았죠. 이 프로젝트로 사내 오픈소스와 기술 발표를 노리고 있기 때문에 지속적으로 발전시켜나갈 예정입니다. 그러기 위해 필수적인 CI/CD(지속적인 통합, 지속적인 제공) 환경을 구축하게 되었는데, 만만치 않았습니다. 사소한 문제는 공식 가이드나 레퍼런스로 해결이 가능했지만, 결정적인 부분에서 관련 가이드나 레퍼런스가 부실해 결국 우회하게 되었습니다. 제가 이 포스팅을 작성하는 이유는 저와 같은 문제가 발생해 이런저런 시도를 해보았는데도 해결하지 못한 분께 해결책은 아니지만 우회 방법을 공유하고자 함에 있습니다. Jenkins 파이프라인 설계 우선 이 프로젝트는 팀 전용 파일럿 Git..

반응형