카프카 고가용성 테스트(Kafka HA Test): 쿼럼 과반수 상실
·
카테고리 없음
1. 테스트 목적Kafka 클러스터에서 쿼럼의 과반수가 중단될 경우, 클러스터의 메타데이터 변경이 중단되는지 확인한다.쿼럼이 다시 복구되었을 때 클러스터가 정상화되는지 검증한다. 2. 테스트 환경항목내용Kafka 구성3 Broker (kafka1, kafka2, kafka3)운영 모드KRaftReplication Factor3min.insync.replicas2토픽명mumu도커 컨테이너명kafka-kafka1-1, kafka-kafka2-1, kafka-kafka3-1 3. 사전 준비1. 모든 브로커 기동 확인 docker-compose ps컨테이너 3개가 모두 실행 상태인지 확인 2. 현재 컨트롤러 브로커 ID 확인docker exec -it kafka-kafka1-1 kafka-metadata-quo..
카프카 고가용성 테스트(Kafka HA Test): 파티션 리더 브로커 중단 케이스
·
카테고리 없음
1. 테스트 목적특정 파티션의 리더가 다운되었을 때, ISR 중 하나로 리더가 신속하게 이전 되고 메시지 송수신이 지속 가능한지 검증한다. 2. 테스트 환경항목내용Kafka 구성3 Broker (kafka1, kafka2, kafka3)운영 모드KRaftReplication Factor3min.insync.replicas2토픽명kiikii도커 컨테이너명kafka-kafka1-1, kafka-kafka2-1, kafka-kafka3-1 3. 사전 준비파티션이 4개인 토픽 생성docker exec -it kafka-kafka1-1 [kafka-topics.sh](http://kafka-topics.sh/) \--bootstrap-server kafka1:9094 \--create \--topic kiikii..
카프카 고가용성 테스트(Kafka HA Test): 컨트롤러 브로커 중단 케이스
·
카테고리 없음
1. 테스트 목적Kafka 클러스터에서 컨트롤러 브로커가 중단될 경우, 다른 브로커가 자동으로 컨트롤러 역할을 승계하고 메시지 송수신이 지속 가능한지 검증한다. 2. 테스트 환경항목내용Kafka 구성3 Broker (kafka1, kafka2, kafka3)운영 모드KRaftReplication Factor3min.insync.replicas2토픽명mumu도커 컨테이너명kafka-kafka1-1, kafka-kafka2-1, kafka-kafka3-1 3. 사전 준비1. 모든 브로커 기동 확인docker-compose ps 2. 컨트롤러 브로커 ID 확인docker exec -it kafka-kafka1-1 kafka-metadata-quorum.sh \ --bootstrap-server localho..
카프카 고가용성 테스트(Kafka HA Test): 실행 계획
·
카테고리 없음
목표브로커, 컨트롤러, 리더 파티션 등 장애 상황에서 자동 복구 여부 확인 구성 환경항목구성카프카 버전Apache Kafka 4.0.0브로커 수3복제계수3최소 동기화 복제본 수2 테스트 시나리오구분목적주요 검증 포인트1. 컨트롤러 장애컨트롤러 브로커 다운 시 새로운 컨트롤러 자동 선출 여부 확인- 새 컨트롤러 선출 로그 확인- 리더/ISR 재조정2. 파티션 리더 장애리더 파티션이 위치한 브로커 장애 발생시 파티션 리더 교체 메커니즘 검증- ISR 중 다른 브로커 승격- 데이터 손실 없음3. 쿼럼 과반수 상실3대의 컨트롤러 노드 중 2대(과반수)가 다운되었을 때, 클러스터가 더 이상 리더 선출이나 메타데이터 변경을 수행하지 못하는지 확인- 새로운 토픽 생성이 실패하거나 무한정 대기- 중지했던 브로커 중 하..
프로그램 자동 실행 쉘스크립트 작성
·
카테고리 없음
쉘스크립트란Shell: 명령어를 해석해서 OS에 전달하는 프로그램 (예: bash, zsh, sh)Script: 명령어들을 순서대로 모아놓은 실행 가능한 텍스트 파일즉, 터미널에서 입력할 명령어를 파일에 저장해두고 한 번에 실행하는 것입니다 예시로#!/bin/bashecho "Hello World" 이 파일을 hello.sh로 저장 후 실행하면 터미널에 Hello World가 찍힙니다 자주 쓰는 기본 명령어echo문자열 출력cd디렉터리 이동ls파일 목록 보기pwd현재 디렉터리 출력mkdir, rmdir폴더 생성 / 삭제cp, mv, rm파일 복사 / 이동 / 삭제cat, more, less파일 내용 보기grep문자열 검색awk, sed텍스트 처리if, for, while제어문read사용자 입력 받기ex..
[백준] 23295번: 스터디 시간 정하기1 Java/ 누적합, imos 이모스 풀이
·
알고리즘
https://www.acmicpc.net/problem/23295문제참가자들이 스터디에 참여할 수 있는 시간들을 입력받아 시간 만족도가 최대인 시간을 찾아 출력한다. 시간 만족도가 최대인 시간이 여러 개라면 시작 시간이 가장 빠른 시간을 출력한다.  풀이과정1. 참가자별로 스터디에 참여하는 시간대를 입력 받아서 이모스배열과 누적합 배열을 만든다2. 참가자가 입력한 시간중 가장 큰 값을 기준으로 반복문을 돌며 스터디시간 T의 구간합을 구하면서, 가장 큰 값이 나오면 해당 구간합의 인덱스 값을 갱신해준다 이때 구간합 맥스값이 동일하면 인덱스가 작은 것으로 유지 -> (시간 만족도가 최대인 시간이 여러 개라면 시작 시간이 가장 빠른 시간을 출력한다.)   풀이코드import java.io.*;import j..
[Spring] DI란 (Spring DI 개념, 구현방법, 활성화)
·
카테고리 없음
DI(Dependency Injection)란? 의존성 주입으로 객체가 필요한 의존성을 스스로 생성하지 않고 외부에서 주입 받는 방식.객체 간의 의존 관계를 코드 내부에서 직접 정의하지 않고 스프링 컨테이너가 관리하며 객체를 생성하고 필요한 곳에 전달한다.쉽게 말하면 프로그램에서 필요한 걸 직접 만드는 대신, 스프링이 대신 준비해서 전달해주는 역할을 하는 것 DI가 왜 필요할까? 객체 간의 결합도를 낮추고 코드의 유연성과 재사용성을 높이기 위함.쉽게 말하면 프로그램을 더 깔끔하고 관리하게 좋게 만드는 것 Spring DI의 특징1. 객체 재사용성 향상객체간 결합도가 낮아서 테스트나 유지보수가 쉽다 2. IoC(Inversion of Control) 구현객체 생성과 생명주기를 스프링 컨테이너가 관리한다객..
[Homebrew] Error: Unexpected method 'appcast' called on Cask adoptopenjdk11.
·
카테고리 없음
Homebrew로 jdk17 설치 중에 에러가 났어요   jdk11이 문제되는거 같아 삭제해줬습니다  1. 삭제할 디렉토리로 이동cd /Library/Java/JavaVirtualMachines  2. java -version /으로 파일명 확인  3. 해당 파일 삭제 처리 sudo rm -rf jdk-11.0.11.jdk     3. homebrew로 설치한 jdk17을 사용도록 설정해줍니다sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk  완료 후 자바버전 확인하면 끝입니다
[DBeaver] 다른 서버 테이블 데이터 옮기기 내보내기, 테이블 구조 복사
·
카테고리 없음
디비버를 이용하여 다른 서버로 테이블 구조와 데이터를 통째로 옮기는 방법 1. 데이터 내보내기 내보낼 테이블을 선택하고 우클릭하여 데이터 내보내기 메뉴를 찾습니다 왼쪽에는 데이터내보내기 유형과 오른쪽에는 내보낼 테이블 목록이 뜹니다 확인 후 다음버튼 클릭 이제 Target container에서 테이블 받을 서버를 선택해 줍니다Source 는 내보낼 테이블, Target은 받을 서버에 생성될 테이블Mapping은 테이블이 생성되는지(create), 기존 테이블에 데이터가 부어지는지(existing) 표시됩니다 다음 >> 마지막 Confirm 단계에서 진행 누르면 끝입니다 근데 이렇게 하면 pk, index 설정이 다 날라간 상태로 옵니다 당황하지 않고 pk. index를 추가했으..
[SSH] Permission denied, please try again.
·
카테고리 없음
사진처럼 ssh 접속시 permission denied가 나는 경우 해결방법들을 몇 가지 찾아보았다 1. sshd_config 파일 수정 sshd_config 파일 vim 모드로 열기 :: sudo vim /etc/ssh/sshd_config 아래 항목을 예스로 바꿔준다 더보기PubkeyAuthentication yes PasswordAuthentication yes 저장한 뒤에 리스타트 해준다 나는 이 방법으로 안됐다 2. 비밀번호 재설정 sudo passwd root 로 비밀번호 재설정 했더니 됐다