SW개발
-
[번역] Kubernetes의 resource memory limit 이해하기SW개발/Kubernetes 2021. 4. 26. 20:47
참고) 글을 좀 더 쉽게 이해하게 하기 위해 의역이 된 내용이 많습니다. 그리고 불필요해 보이는 내용은 빠져있고, 요약된 내용이 많으니 참고해주세요. 내가 쿠버네티스를 사용할 때, 테스트 단계에서 일어나지 않았던 이슈를 만나게 되었다. 그것은 바로 노드에 pod를 운영할만한 충분한 cpu나 memory가 없으면 pod가 pending 상태로 남아있게된다는 것이다. 노드에 cpu나 ram을 추가할 수 없을때, 어떻게 이 문제를 해결해야할까? 가장 단순한 답변은 노드를 하나 추가하는 것이다. 하지만 이것은 쿠버네티스의 가장 강력한 장점 중 하나인 "compute resource를 효율적으로 이용하는 것"을 잘 활용하지 못하는 것이다. 진짜 문제는 노드가 제공할 수 있는 resource가 너무 작은게 아니라 ..
-
Prometheus OperatorSW개발/Prometheus 2020. 10. 13. 01:00
Operator Framework Prometheus Operator를 이야기하기 전에 먼저 Operator Framework가 뭔지 알아보자. 보통 k8s에서 configmap을 수정하면, workload(deployment, statefulset 등)를 재기동해야하는 문제가 있다. 단순히 하나의 설정만 바꾸었음에도 운영중인 환경의 파드를 재배포해야하는 문제가 발생하는데, 상황에 따라서 굉장히 위험한 작업이 될 수 있다. CoreOS에서는 이러한 부분을 해소하기 위해 Operator Framework라는 개념을 고안하였고, 이를 통해 설정변경에 민감하지 않은 k8s 환경을 구성할 수 있게하였다. 한 마디로 말하면, 운영중인 application의 설정을 변경하더라도 application을 지속사용 가능..
-
7. Kafka 운영SW개발/Kafka 2020. 9. 21. 02:03
1. 필수 명령어 더보기 1.1 토픽 생성 $ kafka-topics.sh --zookeeper ${list} --replication-factor 1 --partitions 1 --topic test-topic --create 1.2 토픽 리스트 확인 $ kafka-topics.sh --zookeeper ${list} --list 1.3 토픽 상세보기 $ kafka-topics.sh --zookeeper ${list} --topic test-topic --describe 1.4 토픽 설정 변경 $ kafka-configs.sh --zookeeper ${list} --alter ${이하 alter에서 사용가능한 옵션들} 예시1) 보관주기(retention) 변경 $ kafka-configs.sh --zo..
-
6. ConsumerSW개발/Kafka 2020. 9. 20. 23:45
1. 주요기능 특정 파티션을 관리하고 있는 파티션 리더에게 메세지 가져오기 요청을 함 2. 종류 2.1 Old Consumer Consumer의 Offset 저장을 주키퍼에 함 2.2 New Consumer Consumer의 Offset 저장을 토픽에 함(0.9 버전 이후) 3. 주요 옵션 bootstrap.servers fetch.min.bytes - 한 번에 가져올 수 있는 최소 데이터 사이즈 group.id - consumer가 속한 consumer group 식별자 enable.auto.commit auto.offset.reset (3개 방식 존재) earliest - offset이 없는 경우 가장 초기의 offset으로 설정 latest - offset이 없는 경우 가장 마지막의 offset으로..
-
5. Producer (1)SW개발/Kafka 2020. 9. 18. 02:22
1. 요약 2. Producer? 메시지를 생산(Produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션 또는 서버 3. 명령어 테스트 메세지 보내기 /usr/local/kafka/bin/kafka-console-producer.sh --broker-list ${kafka broker명+id}:${port} --topic ${메세지를 보낼 topic명} 메세지 확인 /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server ${kafka명+id}:${port} --topic ${topic명} --from-beginning 4. Java로 Producer 사용해보기 import org.apache.kafka.clients.pr..
-
4. kafka 구조SW개발/Kafka 2020. 9. 17. 00:00
1. 카프카 구조의 특징 1.1 분산 시스템 분산 시스템이란 같은 역할을 하는 여러 대의 서버로 이뤄진 서버 그룹을 분산 시스템이라고 하며, 분산 시스템의 장점은 아래와 같습니다. 단일 시스템보다 더 높은 성능을 낼 수 있다 운영중인 서버에 장애가 발생하면 같은 그룹의 다른 서버가 일을 대신 처리할 수 있다. 시스템 확장이 용이하다. 1.2 페이지 캐시 OS는 물리적 메모리에 애플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리 일부를 페이지 캐시로 유지해 OS의 전체적인 성능 향상을 높이게 됩니다. 카프카는 이러한 특징을 이용해 빠른 액세스를 하기 위해 OS의 페이지 캐시를 이용하도록 디자인 되었습니다. 1.3 배치 전송 처리 서버와 클라이언트 사이 또는 서버 내부적으로 데이터를 주고받는 과정에서 ..
-
3. Kafka broker의 주요 설정(properties)SW개발/Kafka 2020. 9. 16. 00:00
Kafka broker의 server.properties 파일에는 kafka broker에 대한 여러가지 옵션을 줄 수 있는데, 주요 옵션은 아래와 같습니다. 옵션 설명 broker.id 브로커를 구분하기 위한 ID delete.topic.enable 토픽 삭제 기능을 on/off(enable = 토픽 삭제 기능) default.replication.factor 리플리케이션 팩터(Replication Factor) 옵션을 주지 않았을 경우의 기본값* min.insync.replicas 최소 리플리케이션 팩터 auto.create.topics.enable 존재하지 않는 토픽으로 퍼블리셔가 메시지를 보냈을 때 자동으로 토픽생성 offsets.topic.num.partitions offsets 토픽의 파티션 ..