all 125

# Kafka - 1 # Kafka 개념

카프카란? 대용량의 실시간 로그 처리에 특화되어 있는 솔루션이며 데이터를 유실없이 안전하게 전달하는 것이 주목적인 메세지 시스템에서 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리할 수 있는 분산 스트리밍 플랫폼이다. 크게 아래와 같은 특징이 있다. 1. 메시지 분산 처리 카프카는 파티션이란 개념을 도입하여 여러개의 파티션을 서버들에 분산시켜 나누어 처리할 수 있다. Producer가 메시지를 어떤 파티션으로 전송할지는 사용자가 구현한 분배 알고리즘에 따른다. 각 파티션에 균등하게 저장하거나, 메시지의 키를 활용하여 특정 문자로 시작하는 메시지는 특정 파티션에 할당할 수 있다. => 파티션을 나누었을 때, 메시지의 순서는 보장해주지 않는다. 한번 늘린 파티션은 절대로 줄일 수 없다. 2. 고가용성(HA..

# Intellij SpringBoot 기동 error # Failed to parse configuration class

얼마 전부터 SpringBoot를 본격적으로 공부하기 시작했는데, 오늘 황당한 경험을 했다. 이 문제가 IDE별로 차이가 발생하는 문제인지는 모르겠으나, 필자의 개발툴은 Intellij를 사용하고 있다. 먼저 에러 로그와 상황을 보자. # error log org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [개발 환경] - Intellij - multi module gradle - SpringBoot 위 같이 개발 환경을 구성하고 main class를 작성했을 뿐인데, 저런 에러가 발생했다. [해결방안] main class를 package 안에 위치 시켜라. 에러가 깔끔히 사라..

JAVA/Error 2019.11.05

# k8s HPA TARGETS CPU <unknown> 현상 해결

go지난 시간에 HPA 구성을 통해 CPU, Memory에 따른 POD의 자동 증감을 실습해봤다. 그리고 Memory HPA 테스트에서 나온 확인 사항으로 HPA가 대상 서비스의 CPU의 target 인식을 못하던 이슈가 있었다. 오늘은 해당 이슈의 원인을 찾아서 관련 내용을 포스팅하겠다. 먼저 지난 테스트 때의 HPA의 상황이다. TARGETS의 CPU가 으로 표시되는 것을 확인했다. 결론부터 말하자면 원인은 HPA가 감시하는 대상 서비스의 Resource Limits 값을 주지 않았기 때문이다. 해결 방안 내가 HPA로 감시하려는 서비스의 설정에서 spec에 아래 Resource Limits 설정을 추가해줘야 한다. CPU는 필수이고, 메모리는 안해도 HPA가 TARGETS 값을 읽어오는데 아무런 지..

Cloud/Error 2019.11.05

# k8s 유용한 명령어

이 글은 앞으로 계속 업데이트 될 것이다. k8s에서 자주 사용하거나 유용했던 명령어들 정리하는 글이다. k8s 공식 문서로 명령어 / 사용법이 잘 나와있다. https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#scale 1. k8s replica 수 조정 # 특정 replicaset의 replica 수 조정 $ kubectl scale --replicas=3 rs/ # 특정 yaml 서비스의 replica 수 조정 $ kubectl scale --replicas=1 -f 1.hello-deployment.yaml

Cloud/Kubernates 2019.10.31

# k8s Horizontal Pod Autoscaler (HPA) 실습 - 2

지난 글 (# k8s Horizontal Pod Autoscaler (HPA) 실습 - 1)에 이어서 이번엔 Memory 부하 테스트에 따른 Autoscaling을 실습을 진행하겠다. 사실 k8s를 공부하면서 가장 힘든 것은 버전 up에 따른 이슈들인데, 버전 up에 따른 API 변경 사항이 너무 많다. 물론 기본 예제들은 공식 사이트에 잘 나와있으나, k8s 입문자들이 관련 예제를 블로그 등의 정보를 가지고 조금 응용해보려고 하면 버전 문제 등으로 금방 막혀버린다. 그래서 내가 겪어봤을 때 가장 좋은 방법은 무턱대고 블로그 자료를 복붙 하기 보다 역시나 공식 문서를 활용하는 것이다. k8s의 API 문서를 보고 적어도 내가 적용하려는 버전의 해당 기능과 관련된 필드에는 어떤 값들이 들어가는지, 바뀐 것..

Cloud/Kubernates 2019.10.31

# Elasticsearch(docker) + Analysis Plugin(Nori) 한글 형태소 적용

예전에는 elasticsearch에서 한글 형태소 분석을 하려면 은전한닢을 사용했었는데, 이제는 elasticsearch 6.4에서 plug-in 으로 지원을 하기 시작했다. 바로 analysis-nori 이다. 1998년에 한국 정부가 시작한 21세기 세종 프로젝트를 통해 대규모 한국어 말뭉치가 만들어졌다. mecab-ko-dic도 그 중 하나로, 한국어 형태론의 확률적 모델을 학습시킬 때, 유명한 오픈 소스 형태소 분석 엔진인 MeCab(“메카부”)를 사용한다. analysis-nori도 원래의 사전(mecab-ko-dic)을 이용하는 것이고 차이점은 같은 데이터를 담고 있지만, 보다 작고, 검색에 최적화된 모듈을 제공하는 것이다. 그럼 이제부터 elasticsearch에 한글 형태소 분석기를 적용해..

# PostgreSQL HA 구성 - PGPoolⅡ

PostgreSQL Pgpool-Ⅱ 는 무엇인가? Pgpool-II는 PostgreSQL 서버와 PostgreSQL 데이터베이스 클라이언트 사이에 있는 Proxy 소프트웨어이다. 즉, Pgpool-II가 DB Cluster 역할을 하게 해주는 것이다. 왜 필요한 것인가? Connection Pool 관리 : Connection의 재사용으로 인한 전체 성능 향상 Load Balancing : Replication 기능을 통해 같은 Data를 가지고 있다면, Query를 여러 Server에 나눠서 분산 처리 Auto Fail Over : Master Server에 장애 발생시, Slave Server가 그 기능을 대신 수행한다. 이전에 구성한 # PostgreSQL Streaming Replication 구..

Database/PostgreSQL 2019.10.23

# PostgreSQL Streaming Replication 구성

이전 글(# PostgreSQL Streaming Replication 개념)에서 PostgreSQL Replication에 대한 개념을 살펴봤고 이제 실제 구성을 해보자. Step 1. PostgreSQL11 설치 $ rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm $ yum install -y postgresql11-server postgresql11-contrib Step 2. PostgreSQL 실행 # init db $cd /usr/pgsql-11/bin $ ./postgresql-11-setup initdb # postgresql 실행 $ sys..

Database/PostgreSQL 2019.10.23

# PostgreSQL Streaming Replication 개념

Database 서버 이중화(HA) 구성이란? 이 작업은 복수의 DB Server를 준비한 상태에서 Active-Active 또는 Active-Standby로 동작시키면서 이 중 일부의 Server에 문제가 발생하더라도 전체 서비스가 멈추는 사고를 방지하기 위해서 이루어진다. Data는 전체 DB Cluster에 반영되어야 한다는 것이다. DB Server가 몇 개이건 모두 공통된 최신 Data를 가져야 한다는 것이고 이것은 DB Replication을 통해 이루어진다. DB에 전달되는 각종 Request들이 DB Cluster 내에 존재하는 여러 DB Server에 골고루 전달되어서 실행되게 하는 분산 환경이 구성되어야 하고 이것을 Load Balance라고 한다. Active-Standby로 구성된 ..

Database/PostgreSQL 2019.10.23