본문 바로가기

분류 전체보기

Intellij page size IntelliJ에서 작업 시 find in path 등을 활용하여 작업분량을 미리 파악할 경우가 종종 있다. 하지만 결과값이 100개를 넘어가게 되면 100+ results로 뜨기에 작업분량을 미리 파악하기 어려운 면이 있다. IntelliJ에서 아래와 같은 STEP으로 진행하자. Shift 2번 Action 탭의 Registry로 진입 Key가 ide.usages.page.size인 값을 찾는다. value를 원하는 값으로 변경 더보기
Docker 컨테이너 종료 시그널 - 이슈 : 도커 컨테이너내 어플리케이션이 도커가 종료시 종료 시그널을 받지 못함. - 영향 : 유레카 클라이언트가 돌고 있는 어플리케이션이라 서비스 종료시 유레카 클라이언트 Unregister를 못함. - 원인 : 도커의 Entrypoint 실행을 shell script로 감싸서 실행하여 종료 시그널을 shell script가 받고 어플리케이션까지 전달 못함. - 해결 : shell script를 제거하고 entrypoint에서 서비스를 직접 실행 - 기타 : shell script를 사용하면서 서비스까지 종료 시그널을 전달하는 방법 trap 을 이용하여 script 에서 어플리케이션으로 sigterm 전달 what is trap - https://mug896.github.io/bash-shell/tr.. 더보기
AWS Role-base Role base transfer 액세스 키, 시크릿 키를 활용하는 기존의 방법은 바람직하지 않음 *고객사에서 키를 제공하고자 하지 않으면 프로그램이 거의 돌아가지 않기 때문 Role base로 전환하여 진행하는 것이 바람직하다. Role base로 전향하기 위한 계획 Step 1. 권한이 필요한 기능들을 리스트업 한다. 2. 리스트업 한 항목들을 테스트한다. 3. 액세스 키를 제거한다. 4. 리스트업 항목들이 동작하지 않는지 점검한다. 5. 미리 작성해둔 최소권한 Role을 생성한다. 6. 해당 Role을 EC2에 적용한다. 7. 리스트업 항목들이 다시 동작하는지 점검한다. 권한 관련 테스트 리스트 프로젝트에 맞는 테스트 리스트 작성 자사 프로젝트 DDAP Role-base 테스트 Logstash가 s.. 더보기
Elasticsearch replica shard Issue replica shard Elasticsearch shard란? replica shard란? Replica는 또 다른 형태의 shard라고 할 수 있다. Elasticsearch에서 replica의 기본값은 1이다. 이 때 replica의 값이 1이라는 것은 primary shard를 제외한 replica shard가 1개라는 것을 의미한다. 그렇기에 replica의 최대 개수는 전체 노드의 수 -1. Replica가 필요한 이유는 크게 두 가지인데, 그 중 첫 번째는 ‘검색성능(search performance)‘이고, 두 번째는 ‘장애복구(fail-over)‘입니다. Replica shard가 존재하는 경우 하나의 노드에 문제가 발생하게 된다고 해도 나머지 노드에 모든 데이터 shrad들이.. 더보기
Elasticsearch shard Es shard Elasicsearch를 시작하게 되면 하나의 Elasticsearch 노드가 생성되며 이 노드는 동일한 네트워크 상에서 같은 클러스터명을 같는 클러스터가 존재하는 지를 찾게 된다. - Elasticsearch cluseter? 만약, Discovery 결과 찾은 클러스터가 없다면 이 노드는 스스로 클러스터를 생성하게 되고 만약 클러스터가 이미 존재한다면 해당 클러스터에 연결된다. 새로운 클러스터가 생성되었다면 노드에는 아직 어떠한 인덱스도 존재하지 않는 상태이며, 새로운 인덱스를 생성할 때 인덱스를 몇 개의 shard로 나누어 저장할 것인지를 정의할 수 있다. Shard의 개수를 따로 지정하지 않는다면 Elasticsearch의 기본 shard 개수인 5개로 데이터가 나누어져 저장된다... 더보기
Elasticsearch restart issue Es restart issue 배경 : AWS에서 EC2 인스턴스를 활용하고 인스턴스 내에 docker로 Elasticsearch를 활용한다. Elasticsearch를 실행시킨 EC2 인스턴스의 정상동작을 확인한다. 사용하지 않을 때 EC2 인스턴스를 중지한다. 사용할 때 다시 EC2 인스턴스를 시작한다. 그런데 시간이 아무리 지나도 다른 서비스(kibana, beats, other es)들이 시작한 EC2의 ES를 찾지 못한다. 다른 컨테이너들의 경우 EC2 인스턴스를 재시작하여도 정상적으로 동작하는 것과는 확연히 다른 현상이다. 해당 이슈는 레딧의 같은 이슈에 대한 링크를 참고하여 해결하였으며 정리하자면 다음과 같다. docker.service가 비활성화상태일 가능성이 있기에 다음 명령어로 활성화시.. 더보기
내부 로드 밸런서란? Internal lb 인프라를 구성할 때 중요한 요소들 중 한가지인 로드 밸런서를 생성할 때의 첫 설정은 다음 이미지와 같다. 위의 설정들 외에도 수없이 많은 설정값들이 존재하며 굳이 건드릴 필요가 없는 설정들이 대부분이며 혹여나 문제가 있어도 후에 수정할 수 있는 설정이 대다수이다. 하지만 놀랍게도 설정의 가장 초반부에 돌이킬 수 없는 중요한 설정이 한가지 숨어있는데 바로 VPC선택 밑에 교묘하게 숨어있는 '내부 Load Balancer 생성'이다. 해당 설정은 말 그대로 로드 밸런서를 외부에서 바로 접근할 수 있는가에 대한 설정이다. 기본적으로 체크가 풀려있기에 사용에 지장이 없어서 신경쓰지 않는 경우가 생길 수 있으나 해당 설정을 미리 해놓지 않으면 외부에서 private subnet에 바로 접속할.. 더보기
AMI 생성 간 컨테이너 상태에 관한 이슈 Ami create issue 회사 프로젝트 인프라 구축 간 HA 구현을 위한 Auto scaling을 진행하기 위해 먼저 이중화에 대한 테스트를 진행하였다. 이중화 테스트를 위한 시작 템플릿을 작성하기 위해서는 AMI를 생성을 해야했고 필요한 모든 컨테이너를 띄운 상태에서 AMI를 생성해서 진행하였다. 문제점 하지만 AMI를 생성할 때 모든 컨테이너를 일괄적으로 중지시킨 상태로 생성한다는 점을 간과하였고 이 결과 템플릿을 활용하여 만든 사본 인스턴스의 컨테이너들은 원본 인스턴스의 환경변수 세팅이 되어있는 상태. 해결방안 AMI를 생성할 때 모든 컨테이너가 떠 있지 않은 상태로 생성하고 aws의 사용자 데이터 기능을 활용하여 새로운 인스턴스가 생성될 때 컨테이너를 띄워줌으로서 해결할 수 있다. 사용자 데.. 더보기