본문 바로가기

전체 글102

On-Premise와 Cloud Computing에 대한 이해와 견해 On-Premise 소프트웨어 등 솔루션을 클라우드 같이 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 말한다. 종종 회사 소유 서버, 네트워킹 시스템 및 시스템 구성 요소를 포함하여 조직의 데이터 센터와 관련하여 이 용어를 사용한다. 전산실의 백본, 라우터, 스위치 등 네트워크 장비부터 서버들을 직접 구매하여 설치하고 관리하는 전통적인 방식이다. 전산실을 직접 운영하지 않더라도 데이터센터를 이용할 수도 있다. 데이터 센터를 직접 구축하거나 데이터센터의 공간을 빌려주는 상면(Co-location) 서비스 등의 공간에 서버와 같은 컴퓨팅 자원을 직접 조달-설치-사용하는 환경을 의미한다. 이 경우 물리적인 컴퓨팅 자원(예. 서버)을 직접 구매하거나 리스를 통해 조달하여 설치 .. 2021. 11. 26.
[Network] IPsec VPN 과 SSL VPN VPN (Virtual Private Network) Virtual Private Network의 약자로 한국말로 하면 가상 사설망이다. VPN은 두 개 이상의 물리적 네트워크(또는 장치) 사이의 인터넷/공용 네트워크를 통해 생성된 가상 네트워크로, 직접 연결된 하나의 네트워크에 있는 것처럼 데이터를 주고 받을 수 있다. 즉, 기존의 네트워크 선을 사용하되 암호화 또는 무결성 검증을 통해 전용선과 같은 효과를 내는 것이다. 이전에는 멀리 떨어진 네트워크 환경을 하나의 안전한 네트워크로 만드는 역할을 의미하였다. 예를 들어, 회사 내부 네트워크에서만 접속 가능한 서버를 집에서 접속하기 위해서 VPN 을 이용하며 마치 회사 내부 네트워크에 있는 것처럼 만들어주는 역할이었다. 그러나, 최근에는 인터넷 프라이버.. 2021. 11. 25.
[Network] TCP, 3-Way Handshake & 4-Way Handshake TCP 3-Way Handshake TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다. 3 Way Handshake는 TCP/IP 프로토콜을 이용하여 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. 양쪽(Client와 Server) 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달을 시작하기 전에 한쪽에서 상대방이 받을 준비가 되었다는 것을 알 수 있도록 한다. 양쪽 모두 상대편에 대한 초기 순차 일련 번호를 얻을 수 있도록 한다. TCP 접속을 성공적으로 성립하기 위하여 아래와 같은 과정이 반드시 필요하다. [과정] .. 2021. 11. 24.
[Linux] Linux Command - Mornitoring 1. uptime uptime 현재 대기 중인 프로세스가 얼마나 있는 지. 3개의 숫자는 각각 1분, 5분, 15분의 Load Average 값. 리눅스 시스템에서 이 값은 대기 중인 프로세스 뿐만 아니라 Disk I/O와 같은 I/O 작업으로 Block된 프로세스까지 포함된다. 1분 동안 부하율이 급등했다면 오류를 의심해봐야 한다. 2. dmesg dmesg | tail dmesg | tail -n 20 시스템 메시지. 가장 많이 그리고 먼저 확인해봐야 하는 것. 경로 : /var/log/dmesg 부팅 시부터 시작해서 모든 커널 메시지가 출력되기 때문에 tail을 이용해서 보는 것이 좋다. dmesg | grep sda : 하드디스크 정보 확인 dmesg | grep LINUX : 커널 정보 확인 d.. 2021. 11. 24.
[Linux] File System Linux Category에 들어갈 내용은 아니지만, Linux에 대해 정리하다가 생각나서 File System 에 대해 정리. 파일 시스템 파일 시스템(File System)은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체계를 가리키는 말이다. 통상적으로 하드디스크나 CD-ROM 같은 물리적인 저장장치를 이용하여 관리하는 것을 가리킨다. 파일 시스템은 일반적으로 크기가 일정한 블록들의 배열(섹터라고도 불림)에 접근할 수 있는 자료 보관 장치 위에 생성되어 이러한 배열들을 조직함으로 파일이나 디렉토리를 만들며 어느 부분이 파일이고 어느 부분이 공백인지를 구분하기 위하여 각 배열에 표시를 해 둔다. 또한, 자료를 '클러스터' 또는 '블록'이라고 불리는 일정한 단위(통상 .. 2021. 11. 23.
[Linux] Linux Directory 구조 Linux를 오래 사용해왔고 각 디렉토리의 용도와 어떤 파일이 있는가는 대강은 알고 있지만, 한 번 쯤 다시 정리해보고 싶어서 작성. Linux Directory 구조 모든 것은 파일이다. (Everything is a file) 리눅스 시스템의 디렉토리 구조는 전체적으로 역 트리(tree) 구조이다. 리눅스 배포판들은 '리눅스 파일시스템 표준' 인 FSSTND(LINUX FILE System Standard) 라는 표준을 준수하므로 대부분의 리눅스 배포판들은 그 기본 골격이 같다. 리눅스의 디렉토리 혹은 파일 시스템 구조는 윈도우와는 조금 다른 구조를 가지고 있다. 기본적으로 디렉토리를 구분하는 '/'(슬래시)는 리눅스에서 사용하고 윈도우는 반대인 '\'(역슬래시)를 사용한다. /(루트) 최상의 디렉토.. 2021. 11. 23.
[Kubernetes] 설치없이 웹에서 실습 Kubernetes 환경을 Windows PC에 설치할 수도 있고, Cloud 환경의 서비스(EKS 등) 을 이용할 수도 있지만 아래 사이트들에서 무료로 실습환경을 사용해볼 수 있다. (1) Play with Kubernetes https://labs.play-with-k8s.com/ Play with Kubernetes Play with Kubernetes is a labs site provided by Docker and created by Tutorius. Play with Kubernetes is a playground which allows users to run K8s clusters in a matter of seconds. It gives the experience of having a f.. 2021. 11. 22.
[Kubernetes] Container Layer 2021. 11. 22.
[AWS] Prometheus+Grafana+cAdvisor 설치 Prometheus+Grafana+cAdvisor Container 들을 Monitoring 하기 위해 각 인스턴스에 cAdvisor 를 추가 설치하여 Prometheus에서 Metric을 수집할 수 있도록 한다. node_exporter의 metric 수집용 prometheus와 cAdvisor의 metric 수집용 prometheus 두 개를 띄운다. 먼저 Grafana+Prometheus server에 디렉토리 생성 후, prometheus 설정 파일 2개를 만든다. 만든 설정 파일을 바탕으로 node_exporter와 cAdvisor 용으로 prometheus 컨테이너 2개를 각각 띄우고 Grafana를 올린다. /Prometheus/prometheus.yml mkdir /Prometheus cd.. 2021. 11. 19.
Docker-Compose 설치 (1) docker-compose 설치 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose (2) 권한 부여 sudo chmod +x /usr/local/bin/docker-compose ※ docker-compose설치 후 명령 이 실패하면 경로를 확인하십시오. /usr/bin경로에 있는 다른 디렉토리에 대한 심볼릭 링크를 만들 수도 있습니다 . sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose (3) 설치 후 version 확인 .. 2021. 11. 18.
[Docker] 10. Docker-Compose (from build to operation) Docker-Compose 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴 하나의 서비스를 운영하기 위해서는 여러 개의 애플리케이션이 동작해야 함 컨테이너화 된 애플리케이션들을 통합 관리할 수 있음 Docker-Compose로 컨테이너 실행 예를 들어, docker hub에 올라가 있는 wordpress의 경우 아래와 같이 yaml 파일이 구성되어 있다. version: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRE.. 2021. 11. 18.
[AWS] Prometheus+Grafana 설치 (2) 앞에서 AWS EC2 인스턴스 2개에 대하여 각각 Prometheus, node-exporter 설치하였다. [AWS] Prometheus+Grafana 설치 (1) https://haengsin.tistory.com/34 [AWS] Prometheus+Grafana 설치 (2) 앞 장에서 AWS EC2 인스턴스 2개에 대하여 각각 Prometheus, node-exporter 설치 https://haengsin.tistory.com/category/AWS%28Amazon%20Web%20Service%29/Prometheus%2BGrafana 'AWS(Amazon Web Service)/Promet.. haengsin.tistory.com Grafana 설치 $ docker run -d --name=gr.. 2021. 11. 17.
[AWS] Prometheus+Grafana 설치 (1) Prometheus Server는 Expoter가 열어놓은 HTTP 엔드포인트에 접속해서 Metric을 수집한다. (Pull) Prometheus Server에 Grafana를 연동해서 대시보드 등의 시각화를 한다. 알림을 받을 규칙을 만들어서 Alert Manager로 보내면 Alert Manager가 규칙에 따라 알림을 보낸다. Prometheus란? . SoundCloud 사에서 만든 오픈소스 시스템 모니터링 및 경고 툴킷이다. Kubernetes 에서도 Prometheus를 사용하여 매트릭 수집 및 대시보드 구축하는 방식을 장려하고 있다. (Prometheus Architecture) Prometheus targets : Jobs/exporters 는 실제로 매트릭을 수집하는 프로세스이다. 이 e.. 2021. 11. 16.
[Docker-실습] 9.Container Network (요약) - 컨테이너 네트워크 사용하기 - 컨테이너 포트 외부로 노출하기 - User-Defined Network 구성하기 - 컨테이너 간 통신 wordpress, mysql 컨테이너 서비스 구축하기 1. 컨테이너 네트워크 사용하기 docker0 bridge Network ip addr brctl show docker run --name c1 -it busybox docker inspect c1 docker run --name c2 -it busy box docker inspect c2 - sandbox : c1의 container의 network 환경을 만들어준 것. - Endpoint : Veth, 컨테이너 안에 있는 네트워크 인터페이스. - IP, Gateway, Mac 정보 등을 확인 가능. do.. 2021. 11. 15.
[AWS] CloudWatch, Web Application Monitoring CloudWatch, Web Application Monitoring (요약) ALB: 로드 밸런서에서 생성된 5XX 오류 ALB: EC2 인스턴스에서 실행 중인 애플리케이션에서 발생하는 5XX 오류 ALB: 로드 밸런서에서 EC2 인스턴스에서 실행되는 애플리케이션까지의 지연 시간 ALB: 로드 밸런서의 과부하로 인해 거부된 연결 RDS: 여유 저장 공간 SQS: 작업 대기열에서 가장 오래된 메시지의 수명 SQS: 배달 못한 편지 대기열의 메시지 수 1. ALB(Application LoadBalancer) Monitoring (1) 서버 오류(5xx) 5xx 응답 상태 코드는 서버가 들어오는 요청에 응답할 수 없음을 의미한다. 일반적으로 5xx 오류는 고객에게 오류 메시지를 표시한다. 5xx 서버 오류.. 2021. 11. 8.
[AWS] CloudWatch, EBS Monitoring 지표 CloudWatch, EBS Monitoring ※ Metirc의 임계값은 약 1주일의 데이터를 살펴본 후 평균 최고치와 최저치를 결정. 모니터링 시 유용한 지표 (1) VolumeReadOps 및 VolumeWriteOps (Sum 집계) 볼륨의 읽기 및 쓰기 작업 수를 측정한다. 대부분의 경우 디스크 읽기가 약간 급증할 수 있다. IOPS 한도에 경고 (VolumeReadOps + VolumeWriteOps) > 한도의 90% (2) VolumeTotalReadTime 및 VolumeTotalWriteTime (Sum 집계) 각 VolumeTotalReadTime 와 VolumeTotalWriteTime 의 지표 자체는 중요하지 않지만 볼륨의 디스크 대기 시간을 계산하는 데 사용할 수 있다. ( Vo.. 2021. 11. 8.
[AWS] CloudWatch, EC2 Network Monitoring CloudWatch EC2 Network Monitoring 네트워크 사용률을 모니터링하여 EC2 또는 RDS의 병목 현상을 방지한다. 아래 인스턴스 EC2 네트워크 성능 치트 시트를 참고하여 모니터링을 위한 임계 값을 설정할 수 있다. https://cloudonaut.io/ec2-network-performance-cheat-sheet/ 각 EC2 인스턴스는 CloudWatch에 다양한 지표를 보고한다. 이중에 인스턴스가 모든 네트워크 인터페이스에서 수신한 바이트 수를 측정하기 위해 Metric 2개 NetworkIn 과 NetworkOut 을 수집하여 계산해야 한다. 1. CloudWatch 지표 - [CloudWatch] > [경보] > [모든 경보] > [경보 생성] - EC2 지표 중 Netw.. 2021. 11. 8.
Linux 실질 메모리 사용률 계산 2021. 11. 4.
[AWS] CloudWatch, CloudFront 모니터링 CloudWatch 지표 및 경보로 CloudFront 모니터링 (프로세스) 1. Architecutre를 이해하고 사용된 AWS 서비스를 식별. 2. CloudFront 세부 모니터링 활성화 3. 문제가 있는 시스템을 파악하는 데 가장 적합한 CloudWatch 지표를 선택. 4. 지표가 정상 범위 내에 있는 지 관찰할 수 있도록 CloudWatch 경보를 생성. 5. CloudWatch 경보가 임계값을 벗어난 지표를 감지하는 경우 알림을 받음. 1. Architecutre - CloudFront : CDN(Content Delivery Network) - S3, ELB : Data Content CloudWatch는 서비스들의 metric들을 수집하여 자동으로 보고해야 한다. 2. CloudFront.. 2021. 11. 4.
[AWS] EC2에 CoudWatch Agent 설치 CloudWatch Agent CloudWatch는 AWS 사용자들을 위해서 애플리케이션이나 시스템 성능에 대하여 전반적으로 확인하여 변경 사항에 대응할 수 있는 모니터링 시스템이다. AWS 뿐만 아니라 온-프레미스 서버에서 관리되는 애플리케이션이나 시스템 성능 또한 수집이 가능하다. 문제나 장애 발생 시 경보(Alert)를 설정하여 알림을 받을 수 있고 지표를 시각화하여 한 눈에 파악할 수 있으며 자동화된 작업 수행이 가능하다. CloudWatch는 기본적으로 모니터링 가능한 다양한 지표가 제공된다. 그러나, CloudWatch에서 인스턴스의 기본적인 메모리, 디스크 사용률에 대한 지표를 제공하지 않기 때문에 서버에 CloudWatch Agent를 설치하여 더 안정적으로 모니터링하는 것이 필요하다. I.. 2021. 11. 1.
[Docker-실습] 8.Container Storage [1. mysql db data 영구 보존] -v : $ docker run -d --name db -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql:latest -v $ docker run -d --name db2 -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql:latest (mysql container에 접속해서 database 생성 후, Host에 마운트된 Volume 에서 생성된 것 확인하기) $ docker exec -it db /bin/bash $ mysql -u root $ create database jaewon; $ show databases; mysql container의.. 2021. 10. 13.
[AWS] Cloud Watch, Cloud Trail [Cloud Watch] : 모니터링 및 관찰 기능 서비스 > Porformance Check 애플리케이션을 모니터링하고, 시스템 전반의 성능 변경 사항에 대응하며, 리소스 사용률을 최적화하고, 운영 상태에 대한 통합된 보기를 확보하는 데 필요한 데이터와 실행 가능한 통찰력을 제공. (1) Log - AWS 내외의 로그를 모아 보관하고 사용자에게 전달 - 주요 서비스들에 대한 모니터링(로그, 메트릭 등) 제공 EC2, Autoscaling Groups, ELB, Route 53 CloudFront, EBS, Storage Gateway 등등 - 주요 서비스의 출력 결과 기록 (Lamba 등) - 사용자가 직접 로그 그룹을 만들어 외부로부터 로그를 적재 가능 주로 온프레미스의 로그를 저장 및 사용 - 로그.. 2021. 10. 8.
[Docker] 8.Container Storage [Docker Container Volume] - 컨테이너 이미지는 ReadOnly. 즉, 수정할 수 없고 새로운 내용을 집어넣을 수 없다. - Docker run 후 컨테이너에 추가되는 데이터들은 이미지 Layer에 추가되는 것이 아니라 별도의 RW Layer에 저장 ※ Union File System(=overlay) : Docker가 가지고 있는 Layer를 관리해주는 기술. - 컨테이너 이미지의 ReadOnly Layer와 RW Layer의 변경사항을 마치 하나인 것처럼 보여주는 기술. MySQL 컨테이너를 잘 운영 중이었다고 가정하자. 실수로 docker rm 명령어를 입력할 경우, 이미지의 ReadOnly Layer와 추가된 데이터의 RW Layer가 삭제되고 DB데이터들은 복원할 수 없다. .. 2021. 9. 23.
Port 사용 여부 확인 / Process Kill [Port 사용 여부 확인] $ sudo yum install -y lsof $ sudo lsof -i : $ sudo lsof -i :8080 port 번호는 docker run 할 때 할당했던 port 번호를 입력해주세요. 예제는 8080 docker-pr 두 개가 8080 port 를 점유하고 있다. [Process kill] $ sudo kill -15 2021. 9. 10.
[Docker-실습] 7.Container 리소스 관리 ※ stress container 생성 컨테이너 빌드 : 부하 테스트 프로그램 stress 를 설치하고 동작시키는 컨테이너 빌드 CPU 부하 테스트 : 2개 cpu core를 100% 사용하도록 부하 발생 : stress --cpu 2 메모리 부하 테스트 : 프로세스 2개와 사용할 메모리만큼 부하 발생 : stress --vm 2 --vm-bytes $vi dockerfile FROM debian MAINTAINER jwjeong RUN apt-get update; apt-get install stress -y CMD ["/bin/sh", "-c", "stress -c 2"] [Docker 컨테이너 메모리 리소스 제한] swap 메모리 용량 제한이 실제 메모리 제한과 어떤 관련성이 있는 지 확인 dock.. 2021. 9. 9.
[Docker] 7.Container 리소스 관리 [컨테이너 하드웨어 리소스(CPU, Mem, Disk I/O) 제한] - 기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다. 리소스를 제한하지 않으면 하나의 컨테이너가 모든 리소스를 사용할 수 있게 되고, 다른 컨테이너가 상대적으로 적은 리소스를 사용할 수 밖에 없게 된다. docker run 과정에서 옵션을 통해 리소스를 제한할 수 있다. (1) Memory 리소스 제한 - 제한 단위는 b, k, m, g 로 할당 옵션 의미 --memory, -m 컨테이너가 사용할 최대 메모리 양을 지정 --memory-swap 컨테이너가 사용할 스왑 메모리 영역에 대한 설정 메모리+스왑, 생략 시 메모리의 2배가 설정됨 --memory-reservation --memory 값보다 적은 값으로 구.. 2021. 9. 7.
[Docker-실습] 6.Container 운영 [컨테이너 운영 명령어 사용] (1) 이미지 검색 $ docker search nginx - Official 이미지를 사용하거나, 직접 만들어서 사용하자. (보안) (2) 도커 이미지 다운로드 $ docker pull nginx:1.14 $ docker pull mysql (3) 다운 받은 이미지 확인 $ docker images $ docker images --no-trunc : 이미지 명을 풀네임으로 출력하는 옵션 (4) 컨테이너 생성 docker create 명령어의 경우, 기본적으로 백그라운드로 실행 $ docker create --name websvt ningx:1.14 : latest 버전이 아닌 경우 태그 생략 안 됨. $ docker ps -a 해당 컨테이너를 RUN 하게 되면 COMMAN.. 2021. 8. 27.
[Docker] 5.Container 운영 ※ Docker Host : 리눅스 시스템에 Docker Daemon을 띄어서 Running 중 인 상태. ※ Docker Hub : 도커 컨테이너를 모아놓은 저장소. 다른 말로 Registry [컨테이너 이미지 관리] (1) 명령어 이미지 검색 $ docker search [옵션] 이미지 다운로드 $ docker pull [옵션] 다운 받은 이미지 목록 출력 $ docker images 다운 받은 이미지 상세보기 : 다운 받은 이미지의 정보(어떻게 만들어졌는 지)를 확인 $ docker inspect [옵션] 이미지 삭제 $ docker rmi [옵션] [컨테이너를 실행하고 종료하는 명령어] - 컨테이너 이미지 실행, 삭제 1. 컨테이너 실행 (1) 명령어 컨테이너 생성 $ docker create [.. 2021. 8. 24.
[Docker-실습] 5.Container Registry 1. Public Repository(hub.docker.com) 에 컨테이너 업로드 및 다운로드 $ docker login ( /root/.docker/config.json. 에 login 정보 저장됨) (1) 이미지 검색 $ docker search [이미지명]:[태그] $ docker search httpd:latest : hub.docker.com 에서 컨테이너 이미지 검색. (2) 이미지 다운로드 $ docker pull [이미지명]:[태그] $ docker pull httpd:latest (3) 이미지 확인 $ docker images (4) docker hub에 Repository에 업로드 다운 받은 이미지의 개인 Repository에 Push하기 위해서는 이미지의 tag를 바꿔주어야 한다... 2021. 8. 23.
[Docker] 4.Container Registry Container Registry : 컨테이너를 모아놓은 저장소 Q1. 컨테이너 보관창고(Container Registry) Registry : 컨테이너 이미지를 저장하는 저장소 Docker Hub : hub.docker.com Private Registry : 사내의 컨테이너 저장소 Q2. docker hub(registry) https://hub.docker.com/ Docker Hub Container Image Library | App Containerization We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such .. 2021. 8. 12.