[Kubernetes] Graceful하게 애플리케이션 운영하기 (Graceful Shutdown) [Issue] Graceful하지 못한 애플리케이션 운영아래 동영상과 같이 Graceful Shutdown을 적용하지 않으면 애플리케이션이 재시작 또는 삭제되는 과정에서 진행중인 요청이 중단되어 사용자에게 오류가 발생하게된다.[Configuration] Graceful Shutdown 설정 (Kubernetes)※ 우선 실습을 위한 애플리케이션은 Spring boot로 작성하였으며, /long-running URI로 접근 시 10초 동안 대기 후 응답을 반환하는 간단한 spring boot 웹 애플리케이션을 작성 후 진행하였다. apiVersion: apps/v1kind: Deploymentmetadata: name: graceful-deploy namespace: gracefulspec: repl..
썸네일 [Kubernetes] istio Service-Mesh 환경에서 Circuit Breaker 활용기 #1 What is Circuit Breaker?Circuite breaker는 애플리케이션 또는 서버단에서 장애가 발생했을 때 그 장애가 다른 서비스로 전파되는 것을 방지하기 위한 기술이다. 예를 들면 A 서비스가 B 서비스에 요청을 보낼 때 B 서비스에서 문제가 발생하면 A 서비스 또한 응답을 리턴을 못해주므로 영향이 가게된다. 이러한 상황을 Circuit breaker로 방지할 수 있다. Circuit Breaker의 상태- CLOSED: 정상적으로 호출이 이루어지느 상태- OPEN: 장애가 발생하여 호출이 차단된 상태- HALF OPEN: 일정 시간이 지난 후 다시 호출을 시도하는 상태 [Configuration] 애플리케이션 준비우선 실습을 위한 개발한 Python 애플리케이션 두 개를 생성 후 Do..
썸네일 [Home Server] 홈 서버 구축기 #1 (환경 & VPN 구축) 개요 이유는 간단하다. 블로그나 이것 저것을 진행할 때 클라우드에 서버를 올리게 되면 이미 가지고 있는 서버들은 장식품이 되기때문에 클라우드가 아닌 가지고 있는 서버에 시스템을 올릴 예정이다. 시스템 구성도 내가 천천히 작업해 나가면서 원하는 구성은 아래와 같다.(물론 변경될 수 있음) VPN 서버 구축 L2TP VPN L2TP VPN의 경우 간단한 스크립트를 통해서 설치가 가능하다. $ wget https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/vpnsetup.sh $ vim vpnsetup.sh 사용할 PSK, USER, PASS를 설정해준다. 위 내용을 자신의 정보에 맞게 수정해준다. L2TP_NET: VPN IP 대역 L2TP_LOC..
썸네일 [LINUX] CentOS Stream에서 nmcli를 사용한 Static IP 추가 CentOS 환경에서 Static IP 즉, 고정 IP를 할당하기 위해서는 nmcli를 사용하는 것이 정신 건강에 좋다. 아래와 같이 Network Interface를 추가하고 Shell로 돌아와서 확인해보면 우리가 새롭게 추가한 Interface가 있는 것을 볼 수 있다. $ ip link 이제 아래 명령어로 방금 추가한 ens35 인터페이스의 타입을 ethernet으로 변경한다. (type은 상황에 맞게 알아서 수정) $ nmcli connection add type ethernet con-name ens35 Type을 지정해줬다면 이제 고정 IP를 할당해보자. $ nmcli con mod ens35 ipv4.address 10.150.0.1/24 \ ipv4.gateway 10.150.0.254 \..
[NCP] NCA 자격증 - 서비스별 상세 설명 Data Teleporter 한 대당 100TB 용량을 가짐. 내부적 디스크 문제를 최소화될 수 있게 설계됨 별도의 요청이 없다면 최초 대여 후 90일 이내 네이버 클라우드 플랫폼으로 반환해야한다. Data Teleporter는 고객이 신청한 암호화 키로 256비트 암호화되며, 암호화 키는 어디에도 저장이되지 않는다. Linux, Windows 모두 CIFS, NDS로 파일시스템으로 마운트가 가능하다. NAS NAS는 임계치 설정에 따른 이벤트 알림 기능을 제공 NAS는 일정한 스케줄에 따라 자동 스냅샷을 완성한다. NCP에서는 NAS 생성 시 마운트 포인트 정보를 제공한다. CIFS=Windows, NFS=Linux NAS는 리눅스 서버에 공유 가능한 CIFS 프로토콜은 지원하지 않는다. ACG VPC..
[NCP] NCP 자격증 - NCP 200(Compute/Storage) 자료 Compute Server Micro Type(3세대) 신규 가입 후 결제 정보 등록 시 1년 무료 사용 가능. 이는 서버 비용만 무료지 공인 IP, Disk등에 대해서 과금 발생. Server Spec CPU: 1vCore Memory: 1gb Standard (1/2세대) 여러 환경에서 복합적으로 사용할 수 있는 범용 서버이다. Server Spec List CPU: 2vCPU, 4vCPU, 8vCPU, 16vCPU, 32vCPU Memory: 8GB, 16GB, 32GB, 64GB, 128GB 그냥 아래 공식으로 쉽게 메모리를 계산해서 떠오를 수 있다.. Memory Size = vcpu * 4 High CPU(1/2세대) 이는 높은 CPU 프로세싱 속도와, Memory와 Disk에 중점을 가지기 ..
썸네일 [Cloud] Load Balancer 사용할 때 Client의 IP가 기록이 안될 때 이슈 및 원인 위와 같이 LB를 사용한 웹 서비스를 운영했을 때 아래와 같이 Web 서버에서 Access Log를 확인해보면 Load Balancer의 Private IP가 찍히는 것을 볼 수 있다. 이는 외부 사용자가 웹 서버로 접근할 때 LB를 통해서 Forwarding되어서 그렇다. 즉, 1.2.3.4라는 공인 IP를 가진 사용자가 LB로 접근하면 LB에서 1.2.3.4 사용자의 요청을 대신해서 처리해주기에 실질 적으로 WEB에 접근하는 것은 LB다. 해결하는 방법? 여러가지 방법이 있으나 간단한 방식으로 해결할 수가 있다. HTTP Header 중 하나인 X-Forwarded-For 헤더를 사용하면 간단하게 해결할 수 있다. 더보기 X-Forwarded-For 헤더가 뭐죠? 간단하게 웹 서버나 프..
썸네일 [NCP] NKS 환경에서의 Cluster Autoscaler Cluster Autoscaler란? 간단하게 Pod가 요청하는 자원량에 비해 Node가 가진 자원량이 부족할 때 Node의 수를 Scale-out하거나 Scale-in해주는 Add-on이다. NKS에서의 Cluster Autoscaler 설치 및 사용법 VPC Environment -> VPC 환경에 NKS를 구축하였을 때 Cluster Autoscaler를 자동으로 설치된다. Classic Environment -> 해당 환경에서는 아래와 같은 방식으로 Cluster Autoscaler를 설치해줘야한다. 우선 helm을 설치했다고 가정하에 진행한다. $ helm repo add ncloud https://navercloudplatformdeveloper.github.io/helm-charts 아래에 ..
썸네일 [AWS] Ansible Automation Architecture Architecture 아키텍처 설명 Client 입장 1. Client는 Domain으로 Browser로 접근합니다. 2. Client의 요청을 받은 ALB는 Django로 운영 중인 웹 서버에 Round Robin 알고리즘 방식으로 Web Server에 요청을 보냅니다. 3. ALB의 Request를 받은 Web Server는 해당 내용에 대해 Client의 브라우저에 출력될 수 있도록 Web Content를반환해줍니다. Developer 입장 1. 개발자가 Playbook을 작성하여 Python3/Boto3로 개발된 애플리케이션에 업로드를 합니다. 2. 해당 Playbook을 받은 Boto3 애플리케이션은 S3 Bucket에 업로드를 합니다. 3. S3에 업로드가 정상 적으로 되면 Event를 발생..
썸네일 [MSA] Multi Server 환경에서의 Session 관리 MSA 환경에서의 Session 관리가 필요한 이유? MSA 환경에서는 굉장히 많은 서버들이 여러 대 운영되며, 이때 round-robin과 같은 부하분산 알고리즘을 사용해서 서버 접속을 구현했을 때 1번 서버에 사용자가 접근해서 로그인을 했으며, 메인페이지로 이동하기 위해 URL이 Rewrite가 되었을 때 사용자는 1번 서버가 아닌 2번 서버로 라우팅 될 수도 있다. 이때 발생하는 문제점이 사용자는 분명 로그인을 했으나 메인페이지로 Rewrite되면서 로그인이 안된 상태가 유지된다. 이유는 간단하다. 1번 서버에서 로그인을 했으면 1번 서버에 Session 정보가 기록되고 rewrite되면서 2번 서버로 라우팅되었지만 해당 서버에는 Session에 대한 정보가 없기때문이다. How to solved..
썸네일 [NAT] CGNAT(Carrier-grade NAT)에 대해서 알아보자. IPv4 Shared Address Space란? 우선 NAT444나 CGNAT를 이해하기 위해서는 IPv4 Shared Address Space에 대해서 알아야한다. IPv4 Shared Address Space는 통신사 CGNAT의 적절한 작동을 보장하고, 이를 통해 마지막 남은 IPv4 주소에 대한 수요를 완화하기 위해 Prefix /10 크기의 IPv4 주소 블록을 IANA(Internet Assigned Numbers Authority)에 의해 할당되어 공유 주소 공간으로 사용했다. 이 주소블록은 특히 CGNAT을 구현하는 ISP가 CPE를 핵심 라우터에 연결하기 위해 사용하도록 의도되었다. ISP는 사용 가능하 전역 고유 IPv4 주소의 빠르게 삭제되는 풀에서 고유 주소를 사용하느 대신 이를 ..
[Amazon Web Services] 인코딩 되어있는 에러메시지 디코딩해서 보기(Encoded authorization failure message) 인코딩해서 나타나는 이유? 인코딩 되어서 나타나는 이유는 AWS 요청에 대한 응답으로 반환된 인코딩 된 메시지가 디코딩되어서 출력이 되어야 하는데, 이때 디코딩을 하려면 sts:DecodeAuthorizationMessage라는 권한이 있어야 한다. 하지만 해당 권한이 없으면 인코딩 된 메시지를 출력할 수 없으므로, 인코딩 된 메시지가 출력되는 것이다. Trouble Shooting 우선 sts:DecodeAuthorizationMessage 권한을 갖는 IAM User나 Role을 사용해서 아래와 같은 명령어를 입력해준다. $ aws sts decode-authorization-message --encoded-message "3AE8Dca5D_d4zqsJaNbZlZwDUECIKTnqLbICOSpLpwR..