본문 바로가기

전체 글28

flask WSGI Server (Gunicorn, uWSGI, mod_wsgi 또는 내장 werkzeug 벡자이크) 출처: etloveguitar.tistory/92 import random import threading import time from werkzeug.local import LocalStack thread_data_stack = LocalStack() def long_running_function(thread_index): thread_data_stack.push(f'index: {thread_index}, thread_id: {threading.get_native_id()}') print(f'Starting thread #{thread_index}... {thread_data_stack}') t.. 2024. 4. 12.
파이썬 flask - redis - celery 구조 파이썬 Flask webframework redis broker celery async worker 구조로 사용할 것이다. title excel upload api participant User participant Web App (Flask) participant Redis participant Celery Worker participant DB User->Web App (Flask):GET /excel UserWeb App (Flask):POST /excel/upload Web App (Flask)->Redis:Enqueue a new task to the broker RedisDB:Update result User->Web App (Flask):Check the status of the task U.. 2024. 3. 14.
APM, JAVA Agent 출처: https://saramin.github.io/2020-03-24-elastic-apm-1/ APM APM은 Application Performance Monitoring의 약어로, Application에 대한 성능정보 및 발생한 Error정보 그리고 Application이 동작중인 서버의 기본적인 Metric정보를 수집 할 수 있는 기능을 지원합니다. 또한 MicroService 환경에서 서비스를 구성하는 여러 Application간의 Request를 하나의 Trace로 묶어서 추적 할 수 있는 분산 Tracing(distributed tracing)에 대한 기능도 지원합니다. APM은 위와 같이 수집된 여러 데이터를 바탕으로 하여 Application에 지연이 발생하였을때 지연에 대한 병목 구.. 2024. 3. 6.
작업자 노드가 아닌 Pod 내부에서 DNS 확인 오류 문제 해결 kubectl run -it --rm aks-ssh --namespace metric --image=debian:stable https://learn.microsoft.com/ko-kr/troubleshoot/azure/azure-kubernetes/troubleshoot-dns-failure-from-pod-but-not-from-worker-node Pod 내부에서 DNS 확인 실패 문제 해결 - Azure AKS(Azure Kubernetes Service) 클러스터 내의 작업자 노드가 아닌 Pod 내부에서 DNS 확인 오류를 해결합니다. learn.microsoft.com 2024. 3. 5.
쿠버네티스 스토리지 컨테이너 환경에서 별도 설정을 하지 않으면 데이터는 호스트 노드의 임시 디스크(ephemeral disk)에 보관된다. 컨테이너를 삭제하면 임시 디스크에 있는 데이터는 저장되지 않고 컨테이너와 함께 삭제된다. 이러한 문제를 쿠버네티스에서는 파드와 데이터를 분리해서 영구 볼륨이라는 별도의 추상화된 리소스로 해결한다. 쿠버네티스 볼륨 구성 주요 리소스 영구 볼륨(PV, PersistentVolume) 영구볼륨 요청자(PVC, PersistentVolumeClaim) 스토리지 클래스(StorageClass) 오픈소스 OpenEBS 로컬 호스트패스를 이용해 스토리지 클래스를 만들고 스토리지 관련 설정을 YAML로 작성해보자. apiVersion: v1 kind: Pod metadata: name: busybox.. 2024. 2. 26.
MetalLB를 이용한 로드밸런서 타입 서비스 구축 노드포트 타입 서비스는 외부 클라이언트에서 접속했을 때 특정 도메인이 아닌 특정 노드가 실제로 사용하는 IP 주소를 지정해서 접속한다. 하지만 노드 IP는 변경될 수 있고, 80, 443 등 기본 포트가 아닌 특수 포트 30000 ~ 32767 중 하나의 포트를 사용해야 하므로 실제 서비스에 적응하기는 어렵다. 이를 해결하기 위해 쿠버네티스는 부하분산이 가능한 로드밸런서 타입의 서비스를 제공한다. NodePort: 100.2.3.4:30000 접속 Load-Balancer: http(s)://www.myweb.com 접속 *퍼블릭 클라우드에서는 로드밸런서를 사용하면 추가 비용이 발생하기 때문에 주로 Ingress를 사용해 비용을 절감한다. 대표적인 LB 솔루션은 MetalLB와 Porter가 있다. (둘.. 2024. 2. 23.