썸네일 [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..
썸네일 [Amazon Web Services] AWS STS(Security Token Service)를 사용해보자 ! AWS STS란? IAM 역할을 사용해 AWS에 액세스하는 경우, STS Endpoint에서 세션 토큰을 요청한다. Region STS 엔드포인트의 세션 토큰은 모든 리전에서 유효하다. AWS에서는 Region Endpoint를 사용하도록 권장하고있다. 클로벌 STS Endpoint(https://sts.amazonaws.com)의 세션 토큰은 기본적으로 STS가 활성화된 AWS Region에서만 유효하다. AWS STS를 사용하면 AWS Resource에 대한 액세스를 제어할 수 있다. 임시 보안 자격 증명은 다음과 같은 차이점을 제외하고는 IAM 사용자가 사용할 수 있는 장기 액세스키와 거의 동일하다. 임시 보안 자격 증명은 그 이름을 임시하듯 단기적이다. 이 자격 증명은 몇 분에서 길게는 몇 시간 ..
썸네일 [Raspberry Pi] ESP32-CAM를 Raspberry PI에서 사용해보자! - 1편 ESP32 CAM에 대한 IDE 셋업 우선 Arduino IDE에서 아래와 같이 ESP32 Board를 추가해주자. 위와 같이 Additional Boards Manager URLs에 "https://dl.espressif.com/dl/package_esp32_index.json"을 추가해주고 OK 눌러준다. 그리고 이제 해당 ESP32 보드를 설치해주자. 그리고 잠시 뒤 설치가 끝났으면, 아래와 같이 Board를 설정한다. ESP32 CAM 코드 작성 우리는 아래의 예제를 활용하여 ESP32 Web Server를 운영할 것이기 때문에 CameraWebServer예제를 가져와주자. 그리고 아래와 같이 #define CAMERA_MODEL_AI_THINKER 만 주석 해제해준다. 그리고 아래와 같이 WiF..