728x90 개발강의정리/DevOps64 [Apache kafka 조금 아는 척하기] 카프카란? https://www.youtube.com/watch?v=0Ssx7jJJADI&list=PLwouWTPuIjUgr29uSrSkVo8PRmem6HRDE&index=3&t=4s 카프카란? https://kafka.apache.org 고성능 분산 이벤트 스트리밍 플랫폼 Fortune 100개 기업 기준으로 80%이상이 kafka 를 사용하고 있음 제조, 은행, 통신 등 다양한 업종에서 높은 비율로 사용중 국내에서도 큰 회사들은 많이 사용하고 있음 기본구조 카프카 클러스터 메세지를 저장하는 저장소 하나의 여러개의 브로커(각각의 서버)로 구성이 됨 브로커들이 메세지를 나눠서 저장, 이중화 처리, 장애가 나면 대체 함 데이터를 이동하는데 필요한 핵심 역할을 맡음 주키퍼 클러스터(앙상블) 카프카 클러스터 관리 카프카.. 개발강의정리/DevOps 2021. 1. 5. [아파치 카프카 입문과 활용] 5. Apache kafka 파이프라인 실습 www.youtube.com/watch?v=OX6s1-bYBI4&list=PL3Re5Ri5rZmkY46j6WcJXQYRlDRZSUQ1j&index=20 Kafka 활용 실습 서버 메트릭 수집 및 적재 파이프라인 만들기 서버 메트릭(cpu, ram, network)을 수집 이슈 확인 및 모니터링을 위해 사용 그라파나를 활용하면 그래프 시각화 및 slack alert 가능 그라파나(Grafana)란? - 로그 시각화 도구로서 키바나와 비슷한 역할. 다양한 db source 지원 Metric collect pipeline 요구 사항 CPU, RAM 정보 수집 👉 Telegraf agent 사용 : https://github.com/influxdata/telegraf Telegraf : influxdata에서 .. 개발강의정리/DevOps 2021. 1. 4. [아파치 카프카 입문과 활용] 4. Apache kafka 컨슈머 애플리케이션 개발, 실습 www.youtube.com/watch?v=5FEE5wVi8uY&list=PL3Re5Ri5rZmkY46j6WcJXQYRlDRZSUQ1j&index=19 Kafka Consumer application Consumer 데이터를 가져가는(polling) 주체 commit을 통해 읽은 consumer offset을 카프카에 기록 Java Kafka-client 제공 그 외 3rd party language의 경우 아래 링크 참고 👉 https://cwiki.apache.org/confluence/display/KAFKA/Clients 어디에 데이터를 저장하나요? FileSystem(.csv .log .tsv) Object Storage(S3, Minio) Hadoop(Hdfs, Hive) RDBMS(Oracl.. 개발강의정리/DevOps 2021. 1. 4. [아파치 카프카 입문과 활용] 3. Apache kafka 프로듀서 애플리케이션 개발, 실습 www.youtube.com/watch?v=4BbKCsKSq_I&list=PL3Re5Ri5rZmkY46j6WcJXQYRlDRZSUQ1j&index=18 Kafka Producer application PRACTICE - Import project from github https://github.com/freeserver1191/tacademy-kafka git clone $ git clone https://github.com/freeserver1191/tacademy-kafka.git Cloning into 'tacademy-kafka'... remote: Enumerating objects: 286, done. remote: Counting objects: 100% (286/286), done. rem.. 개발강의정리/DevOps 2021. 1. 4. [아파치 카프카 입문과 활용] 2. Apache kafka 설치, 실행, CLI www.youtube.com/watch?v=ozxVgaqGNhM&list=PL3Re5Ri5rZmkY46j6WcJXQYRlDRZSUQ1j&index=16 Kafka 설치, 실행, CLI https://github.com/freeserver1191/tacademy-kafka 카프카 실습 과정 AWS EC2 발급 EC2접속 EC2 - 주키퍼, 카프카 다운로드 EC2 - 카프카 설치 및 실행 local - 카프카 다운로드 local - 카프카 명령어 실행 PRACTICE - AWS EC2 발급 및 접속 AWS EC2 : AWS의 확장식 컴퓨팅. 즉시 가상 서버 발급 가능 pem 키 받아서 권한 변경 $ chmod 400 test-kafka.pem EC2 접속 $ ssh -i kafka-test.pem ec2-u.. 개발강의정리/DevOps 2021. 1. 4. [아파치 카프카 입문과 활용] 1. Apache kafka 기본개념 및 생태계 www.youtube.com/watch?v=catN_YhV6To&list=PL3Re5Ri5rZmkY46j6WcJXQYRlDRZSUQ1j&index=13 Kafka 기본개념 및 생태계 Before Kafka 엔드투엔드(end-to-end) 연결 방식의 아키텍쳐 데이터 연동의 복잡성 증가(하드웨어, 운영체제, 장애 등) 각기 다른 데이터 파이프라인 연결 구조 확장에 엄청난 노력 필요 모든 시스템으로 데이터를 전송 실시간 처리도 가능한 것 데이터가 갑자기 많아지더라도 확장이 용이한 시스템이 필요함 After Kafka 프로듀서/컨슈머 분리 메시지 데이터를 여러 컨슈머에게 허용 높은 처리량을 위한 메시지 최적화 스케일 아웃 가능 관련 생태계 제공 Kafka broker 실행된 카프카 애플리케이션 서버 중 1대 .. 개발강의정리/DevOps 2021. 1. 4. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심개념-Statefulset Statefulset https://blog.naver.com/isc0304/221885403537 스테이트풀셋(Statefulset)이란? 애플리케이션의 상태를 저장하고 관리하는 데 사용되는 쿠버네티스 객체다 기존의 포드를 삭제하고 생성할 때 상태가 유지되지 않는 한계가 있다 때문에 포드를 삭제하고 생성하면 완전히 새로운 가상환경이 시작된다 하지만 필요에 따라 이러한 포드의 상태를 유지하고 싶을 수 있다 응용프로그램의 로그나 기타 다른 정보들을 함께 저장하고자 하는 경우 단순히 PV를 하나 마운트해 이를 유지하기는 어렵다 스테이트풀셋으로 생성되는 포드는 영구 식별자를 가지고 상태를 유지시킬 수 있다 스테이트풀셋를 사용하고 자하는 케이스 다음과 같다 안정적이고 고유한 네트워크 식별자가 필요한 경우 안정적.. 개발강의정리/DevOps 2021. 1. 3. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심개념-Storage Storage 볼륨(Volume) 컨테이너가 외부 스토리지에 액세스하고 공유하는 방법 포드의 각 컨테이너에는 고유의 분리된 파일 시스템 존재 볼륨은 포드의 컴포넌트이며 포드의 스펙에 의해 정의 독립적인 쿠버네티스 오브젝트가 아니며 스스로 생성, 삭제 불가 각 컨테이너의 파일 시스템의 볼륨을 마운트하여 생성 볼륨의 종류 임시 볼륨 로컬 볼륨 네트워크 볼륨 네트워크 볼륨 (클라우드 종속적) emptyDir hostpath local iSCSI NFS cephFS glusterFS ... gcePersistentDisk awsEBS azureFile ... 임시 볼륨: 포드가 사라지면 함께 파괴되는 임시 볼륨 포드 내부에서만 컨테이너와 공유하기 위해서 사용 로컬 볼륨: 공유 폴더 같은 개념, 로컬에서만 사용가.. 개발강의정리/DevOps 2021. 1. 3. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심개념-Network Network 쿠버네티스 네트워크 모델 한 포드에 있는 다수의 컨테이너끼리 통신 포드끼리 통신 포드와 서비스 사이의 통신 외부 클라이언트와 서비스 사이의 통신 실습 전 설치: sudo apt install net-tools 한 포드에 있는 다수의 컨테이너끼리 통신 pause 명령을 실행해 아무 동작을 하지 않는 빈 컨테이너를 생성 인터페이스를 공유 포트를 겹치게 구성하지 못하는 것이 특징 Docker의 기능을 사용해 쿠버네티스 컨테이너를 관찰 각 포드마다 하나의 pause 이미지 실행 $ sudo docker ps | grep pause 78c434040e28 k8s.gcr.io/pause:3.2 "/pause" 2 hours ago Up 2 hours k8s_POD_weave-net-qq5bk_kube.. 개발강의정리/DevOps 2021. 1. 3. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-Services Services 포드의 문제점 포드는 일시적으로 생성한 컨테이너의 집합 때문에 포드가 지속적으로 생겨났을 때 서비스를 하기에 적합하지 않음 IP 주소의 지속적인 변동, 로드밸런싱을 관리해줄 또 다른 개체가 필요 이 문제를 해결하기위해 서비스라는 리소스가 존재 서비스의 요구사항 외부 클라이언트가 몇 개이든지 프론트엔드 포드로 연결 프론트엔드는 다시 백엔드 데이터베이스로 연결 포드의 IP가 변경될 때마다 재설정 하지 않도록 해야함 서비스의 생성방법 kubectl의 expose가 가장 쉬운 방법 YAML을 통해 버전 관리 가능 apiVersion: v1 kind: Service metadata: name: http-go-svc spec: ports: - port: 80 targetPort: 8080 selec.. 개발강의정리/DevOps 2020. 12. 27. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-Namespaces Namespaces 네임스페이스란? 리소스를 각각의 분리된 영역으로 나누기 좋은 방법 여러 네임스페이스를 사용하면 복잡한 쿠버네티스 시스템을 더 작은 그룹으로 분할 멀티 테넌트(Multi-tenant) 환경을 분리하여 리소스를 생산, 개발, QA 환경 등으로 사용 리소스 이름은 네임스페이스 내에서만 고유 명칭 사용 현재 클러스터의 기본 네임스페이스 확인하기 $ kubectl get ns NAME STATUS AGE default Active 75m kube-node-lease Active 75m kube-public Active 75m kube-system Active 75m 각 네임스페이스 상세 내용 확인 kubectl get 을 옵션없이 사용하면 default 네임스페이스에 질의\ 다른 사용자와 분리.. 개발강의정리/DevOps 2020. 12. 27. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-애플리케이션 롤링 업데이트와 롤백 애플리케이션 롤링 업데이트와 롤백 기존 모든 포드를 삭제 후 새로운 포드 생성 잠깐의 다운 타임 발생 새로운 포드를 실행시키고 작업이 완료되면 오래된 포드를 삭제 새버전을 실행하는동안구버전포드와연결 서비스의 레이블셀렉터를 수정하여 간단하게 수정가능 레플리케이션컨트롤러가 제공하는 롤링 업데이트 이전에는 kubectl을 사용해 스케일링을 사용하여 수동으로 롤링 업데이트 진행 가능 kubectl 중단되면 업데이트는 어떻게 될까? 레플리케이션컨트롤러 또는 레플리카셋을 통제할 수 있는 시스템이 필요 디플로이먼트 생성 레이블 셀렉터, 원하는 복제본 수, 포드 템플릿 디플로이먼트의 전략을 yaml에 지정하여 사용 가능 먼저 업데이트 시나리오리를 위해 3개의 도커 이미지를 준비 gasbugs/http-go:v1 gas.. 개발강의정리/DevOps 2020. 12. 4. 이전 1 2 3 4 5 6 다음 💲 추천 글 728x90