목록IT (224)
잡동사니
안녕하세요. yeTi입니다. 오늘은 M-JPEG에 대해서 알아보려고 합니다. 정의 Motion JPEG - Wikipedia는 멀티미디어 환경에서 각 비디오 프레임은 JPEG 이미지로 압축하는 방식입니다. 초기에는 PC 어플리케이션용 멀티미디어 환경을 위해서 개발이 됐지만, 요즘에는 디지털 카메라나, IP 카메라, 웹캠과 같은 디바이스 환경에 사용하고 있습니다. M-JPEG over HTTP M-JPEG를 HTTP를 활용하여 스트리밍할 수 있습니다. 기본적으로 HTTP로 스트리밍을 한다는것은 각각의 이미지를 순서대로 표시하는것을 의미하는데 이미 QuickTime 이나 VLC에서 사용하고 있습니다. 스트리밍의 방식은 간단합니다. 클라이언트에서 GET request를 요청하면, 서버에서는 HTTP를 통하여 ..
안녕하세요. yeTi입니다. 오늘은 Ceph을 활용해서 S3와 같은 Object Storage를 사용할 수 있는 환경을 구성해보겠습니다. Ceph Object Storage Ceph Object Storage는 librgw 와 librados상에서 제공하는 object storage interface입니다. 위의 그림에서와 같이 Ceph Object Storage는 두가지 인터페이스를 제공합니다. S3-compatible: Amazon S3의 RESTful API와 호환되는 인터페이스를 사용하여 객체 스토리지 기능을 제공합니다. Swift-compatible: OpenStack Swift API와 호환되는 인터페이스를 사용하여 객체 스토리지 기능을 제공합니다. Object Storage 설치 Rook D..
안녕하세요. yeTi입니다. 오늘은 NVIDIA GPU 사용하기 위해 driver를 설치해보려고 합니다. nvidia-docker를 사용하기 위해선 NVIDIA driver를 설치해야 하는데요. package manager를 활용해서 쉽게 cuda-drivers 패키지를 설치할 수 있습니다. 그래서 Download - CUDA Toolkit에서 제공하는 가이드를 따라 해봤습니다. ~$ wget [http://developer.download.nvidia.com/compute/cuda/11.0.1/local_installers/cuda-repo-ubuntu1804-11-0-local_11.0.1-450.36.06-1_amd64.deb](http://developer.download.nvidia.com/co..
안녕하세요. yeTi입니다. 오늘은 Kubernetes의 PV 사용량을 모니터링하려고 합니다. Kubernetes Storage Management Layer 대략적으로 kubernetes의 storage를 관리하는 구조가 어떻게 이뤄져 있는지에 대해 살펴보겠습니다. 위의 그림과 같이 PVC에 개발자가 사용하고 싶은 Storage의 스펙을 정의합니다. 그러면 Storage 관리자가 PV를 정의하여 물리 disk를 할당하고 Storage Class에 저장소의 특성을 정의합니다. 그러면 Provisioner에 의해서 다양한 Storage에 접근할 수 있고 최종적으로 실제 데이터는 Storage에 저장됩니다. 여기서 Storage로 ceph을 사용하고 있기 때문에 Provisioner에 rook-ceph을 넣..
안녕하세요. yeTi입니다. 오늘은 NVIDIA Triton Inference Server에 gRPC 통신을 해보려고 합니다. 개요 gRPC는 RPC(Remote Procedure Call)를 Google에서 개발한 RPC 프레임워크입니다. NVIDIA Triton Inference Server에서 gRPC로 통신을 편하게 할 수 있도록 Client SDK를 제공합니다. Client SDK 획득 Build Using CMake - Fail Triton Inference Server - GitHub에 코드를 공유하고 있는데 이를 활용하여 직접 빌드하여 SDK를 생성하는 방법입니다. git clone https://github.com/NVIDIA/triton-inference-server.git에서 Repo..
안녕하세요. yeTi입니다. 오늘은 자바 어플리케이션을 도커로 배포시 발생하는 A fatal error has been detected by the Java Runtime Environment오류를 해결해보겠습니다. 현상 도커로 Springboot 어플리케이션을 배포하는 상황에서 베이스이미지로 openjdk:12-alpine을 사용했습니다. 쿠버네티스에 배포 후 어플리케이션이 로드하는 과정에서 다음과 같은 오류가 발생했습니다. # # A fatal error has been detected by the Java Runtime Environment: # # SIGILL (0x4) at pc=0x00007fb82810e9bc, pid=1, tid=6 # # JRE version: OpenJDK Runtime..
안녕하세요. yeTi입니다. 오늘은 VSCode에서 프로젝트 빌드시 Duplicate Targetframework attribute가 발생하는 문제를 해결해보겠습니다. 작업 환경 VSCode : 1.44.0 dotnet : 3.1.300 .NETFramework : 4.7.1 문제 상황 여러 프로젝트를 사용하는 상황에서 빌드하다보면 global::System.Runtime.Versioning.TargetFrameworkAttribute' 특성이 중복되었습니다. 혹은 Duplicate Targetframework attribute가 발생할 때가 있습니다. 해결 MSBuild: unnecessary rebuilds because of generated AssemblyAttributes.cs - Mic..
안녕하세요. yeTi입니다. 오늘은 Kubernetes 환경에서 PostgreSQL의 HA를 구성해보겠습니다. 작업환경 OS : Linux 4.18.0 Kubernetes : 1.18 Helm : 2.16.7 High Availability PostgreSQL Documentation에 따르면 PostgreSQL은 자체적으로 Master-Slave형태의 replication을 제공합니다. 추가적으로 Standby의 형태를 Cold Standby, Hot Standby를 제공하고 있어 상황에 맞는 구성을 선택할 수 있습니다. 하지만 Master-Slave형태의 구성에는 클라이언트가 접속할 수 있는 End-Point를 단일화 하는 이슈가 있는데, 이를 Pgpool이라는 미들웨어를 사용하여 해결할 수 있습니다..
안녕하세요. yeTi입니다. 오늘은 쿠버네티스를 하다보면 접하게되는 rook-ceph 중 ceph에 대해서 알아보겠습니다. Ceph이란? Ceph은 PC단위를 Ceph Node로 storage를 clustering 해주는 서비스입니다. Intro to Ceph에 따르면 Ceph Storage Cluster를 구성하기 위해서는 Ceph Monitor, Ceph Manager, Ceph OSD(Object Storage Daemon)가 하나이상 있어야 하고 Ceph File System client를 사용하려면 Ceph Metadata Server가 있어야 합니다. 각각의 데몬들은 다음과 같은 역할을 합니다. Monitors: Ceph Monitor (ceph-mon)는 monitor map, manager..
안녕하세요. yeTi입니다. 오늘은 라즈베리파이에 AI를 구동하는 환경을 설정해보려고 합니다. 이를 위해서 Tensorflow를 활용해 모델을 생성하고 Tensorflow Lite를 활용해 모델의 변환 및 라즈베리파이에 AI를 구동했습니다. 작업환경 OS : Linux raspberrypi 4.19 Tensorflow : 2.1.0 Python : 2 Tensorflow Tensorflow를 설치하고 mnist 모델을 생성합니다. Tensorflow - Dockerhub CPU만 사용하는 Tensorflow를 일회성 컨테이너로 사용하고 싶으면 다음과 같이 구동합니다. $ docker run -it --rm tensorflow/tensorflow bash Tensorflow에 Jupyter notebook..