본문 바로가기

전체 글180

[Elasticsearch] Elastciearch 클러터에서 특정 Node 제외 시키기 01. Elastciearch 클러터에서 특정 Node 제외 시키기상용 클러스터 상에서 18대로 운영중인 데이터 노드의 개수를 12대로 줄여야 하는 작업이 필요했다.하여 해당 노드가 구동되고 있는 서버 상에서 kill -9 {PID}를 통해 프로세를 중지하여도 되지만,이렇게 되면 클러스터 상태가 Yellow가 되는 것은 물론이며 데이터 손실을 가지고 올 수 있다고 한다.하여 이번 시간에는 클러스터의 Green 상태를 유지하면서 특정 노드를 클러스터 상에서 제외시키는 방법에 대해 알아보자.01-1. 클러스터 상에서 노드 제외# 특정 IP를 가진 노드들을 샤드 재배치 대상에서 제외PUT /_cluster/settings{ "transient": { "cluster.routing.allocation.e.. 2024. 8. 9.
[Elasticsearch] ES 운영중인 Live 서비스의 alias 교체 방법 01. ES 운영중인 Live 서비스의 alias 교체 방법실제 Live 서비스 중에 핵심 메타인 인덱스의 alias를 변경해야 하는 순간이 왔다상용 Live 서비스이기에 상당히 부담감이 심했지만, 어떻게든 alias를 교체해야 했다이번에는 alias를 near real time으로 변경한 방법에 대해 기재한다01-1. alias 변경 필요 이유기존 메타 인덱스(alias-xxx-meta)의 경우 shard 개수가 6개 replica 개수가 1개로 지정되 있었다하지만 서비스 이슈로 인하여 데이터 노드를 6개 -> 18개로 증설하는 작업이 있었다여기서 보면 shard가 6개인데 replica가 1개이면6(shard) * (1(replica) + 1) = 12개의 샤드 생성18(데이터 노드 개수) / 12개.. 2024. 8. 9.
[Elasticsearch] ES 클러스터 운영 중 노드 순차적 재시작(Rolling Restart) 01. ES 클러스터 운영 중 노드 순차적 재시작(Rolling Restart)상용 ES를 운영하던 도중 데이터 노드의 CPU가 90%를 넘겨서 재기동을 진행해야 했다또한 Thread 상태를 확인해본 결과 rejected 된 결과가 1,414,844개가 쌓여 있었다❌ 하지만 데이터 노드를 그냥 재기동해버리면 해당 노드의 데이터에 문제가 발생할 수 있다이러한 이유로 인해 서비스를 운영하는 도중에 데이터 노드를 재기동 하는 방법에 대해 기재한다01-1. 이슈 내용 확인특정 data node(2대)의 CPU가 3분간 98% 유지# 현재 ES thread_pool에서 rejected 된 thread 상태 및 원인 내용 확인GET _cat/thread_pool?v&s=rejected:desc# Kibana 상에서.. 2024. 8. 9.
[Logstash] Linux 파일 삭제 후 용량 확보 안되는 경우 (feat. Logstash) 01. Linux 파일 삭제 후 용량 확보 안되는 경우 (feat. Logstash & Shell Script)shell script를 통해 EC2 서버상의 특정 경로에 있는 파일을 실시간으로 압축 후 S3로 올리는 프로세스가 존재하였다.이 때 Linux 서버상의 파일은 존재하지 않으나 디스크 사용량이 지속적으로 증가하는 이슈가 발생하였다.이러한 이슈에 대해 간단히 정리를 진행 해보자.01-1. 시스템 현황현재 ECS의 Container로 떠있는 filebeat가 마운트 경로에서 파일을 읽어서 EC2의 구동되고 있는 Logstash로 파일을 전달한다.후에 Logstash는 실시간으로 파일을 읽어 특정 경로에 저장 및 ES에 로그를 저장한다. 이때 정각 10분마다 shell scripts를 사용하여S3에 .. 2024. 8. 9.
[Elasticsearch] Elasticsearch reindex 방법 01. Elasticsearch 재색인?기존 검색엔진을 운영하는 과정 중에 동의어 관련된 작업을 수행하기 위해 핵심 메타 템플릿을 수정해야 하는 경우가 발생하였다. 하여 STG 환경에서 기존에 생성이 되어있는 2300만건 정도의 데이터를 Logstash + DB 프로시저를 사용하여 색인하는 방식 대신 reindex 명령어를 사용하여 데이터를 복사하는 과정을 적어보았다 😀상용 서비스의 경우 현재 alias를 사용하고 있고 i-node에 신규 인덱스를 생성해서 인덱싱을 수행하고 후에 해당 인덱스의 routing.allication.require.box*type option 이 index로 설정이 되어 있고, python 로직에서routing.allocation.require.boxtype option을 l.. 2024. 4. 12.
[Java] Vetor vs ArrayList vs LinkedList 간단 정리 01. Vetor vs ArrayList vs LinkedListList는 모든 프로그래밍 언어에서 가장 유용한 자료구조이다List는 기존 Array(배열) 자료구조의 단점, 한계를 극복하기위해 나온 자료구조다Array(배열) 자료구조를 기반으로 만들어졌다 봐도 무방하다01. Vetorpublic class VectorTest { public String [] Array = new String[10]; public Vector vector = new Vector(); @Test public void collectionTest() { System.out.println("Array = " + array.length); System.out.println("Ve.. 2024. 4. 9.
[Java] Cookie & Session? 01. HTTP(Hyper Text Transfer Protocol)의 특성은? 쿠키, 세션, 토큰(JWT) 몰라도 괜찮겠어?깔끔하게 정리했으니 몇 분만 투자해서 이번 기회에 바로 알고 가기 😀velog.ioHTTP란 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜HTTP는 비연결성(Connectionless), 무상태성(Stateless) 특징을 가짐HTTP는 요청 처리 완료 후 연결을 끊어버리며, 클라이언트의 상태 정보 및 현재 통신 상태가 남아있지 않음HTTP의 비연결성 및 무상태성 장/단점장점 : 리소스 낭비를 줄일 수 있음단점 : 클라이언트가 누군지 알 수 없음 ( 새로고침 후 재로그인, 페이지 이동해도 재로그인.. 등등 )HTTP의 단점을 극복하기 위해 나온 기.. 2024. 4. 9.
[Java] String / StringBuffer / StringBuilder 차이 01. 서론자바에서 대표적으로 문자열을 다루는 자료형 클래스로 String, StringBuffer, StringBuilder 자료형 제공세가지 모두 문자열을 다루는데 사용하지만 목적에 따라 쓰임새가 달라짐String, StringBuffer, StringBuilder의 차이점에 대해 간략히 알아보고, 상황에 맞는 사용법 숙지연산이 많지 않을때는 어떤 클래스를 사용해도 이슈가 발생하지 않으나 연산횟수가 많아지거나 멀티쓰레드, Race condition 상황이 자주 발생하면 각 상황에 맞게 클래스를 선택해야 함02. String vs StringBuffer/StringBuilderString str = "hello" // String str = new String("hello"); 와 동일str = str.. 2024. 4. 9.
[Java] List vs Set vs Map 차이점 01-1. List vs SetList 자료구조String [] fruitsArr = { "apple", "banana", "kiwi", "mango" };List fruitsList = new ArrayList(Arrays.asList(fruitsArr));for ( int i = 0; i List는 순서를 보장하고 중복 역시 허용해주는 자료구조index 기반으로 특정 위치의 데이터 조회 가능데이터의 저장 순서 보장중복 허용함List 자료구조 만들어보기List fruits = new ArrayList();fruits.add("apple");fruits.add("banana");fruits.add("kiwi");fruits.add("kiwi");fruits.add("kiwi");fruits.add(nul.. 2024. 4. 9.
[Elasticsearch] 인덱스와 샤드 - Index & Shards 01. 인덱스와 샤드 - Index & Shards01-1. 도큐먼트(document)?{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ // n개의 document를 포함 { "_index" : "seed-group", "_type" : "_doc", "_id" : "3W5esI0B0pf4.. 2024. 2. 16.