Alroha

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 9주차 본문

IT/Kakao cloud 부트캠프

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 9주차

헤이로하 2025. 9. 30. 15:14

🗓️ AWS - VPC 구축

🧭 AWS 글로벌 인프라

- 리전 > 가용영역 > 데이터센터 > 엣지 네트워크

리전(Region) 물리적 위치(예: ap-northeast-2 서울) 대부분 서비스는 리전 단위. DR은 다중 리전 배치
가용영역(AZ) 리전 내 분리된 데이터센터 묶음 최소 2개 이상(보통 3개). 다중 AZ로 고가용성
엣지 로케이션 전세계 캐시 포인트 CloudFront/Global Accelerator가 지연 최소화

✅  고가용성은 다중 AZ, 재해복구는 다중 리전!


🏗️ VPC 아키텍처

- VPC연결 플로우
-> 서브넷 설정(test-public-subnet 10.0.0.0/24(퍼블릭 서브넷 자동할당 ip 활성화), test-private-subnet 10.0.10.0/24) -> 인터넷 게이트웨이(test-igw) : testvpc1에 연결

VPC: 10.0.0.0/16
├─ Public Subnet:  10.0.0.0/24  (Auto-assign public IP: ✔)
│  ├─ Internet Gateway (IGW) 연결
│  └─ EC2: Pub-svr (Ubuntu 24.04, 10.0.0.100, Public IP 有)
│
└─ Private Subnet: 10.0.10.0/24
   ├─ NAT Gateway (Public Subnet에 위치, EIP 필요)
   └─ EC2: Pri-svr (Amazon Linux 2023, 10.0.0.200, Private IP Only)

🔁 라우팅 테이블 설계(핵심)

test-public-rt test-public-subnet 0.0.0.0/0 → IGW
test-private-rt test-private-subnet 0.0.0.0/0 → NAT Gateway

🧠 이유: 프라이빗 서브넷 인스턴스가 아웃바운드 인터넷(패키지 설치/업데이트)을 하려면 NAT GW를 경유해야 함. NAT는 퍼블릭 서브넷에 있어야 하고 EIP가 필요!


🔐 보안 제어 (Security Group vs NACL)

  SG NACL
적용 범위 인스턴스 단위 서브넷 단위
상태 추적 Stateful (응답 자동 허용) Stateless (양방향 규칙 필요)
용도 일반적 트래픽 제어 서브넷 전체 정책/거부 리스트
권장 기본은 SG로 설계, NACL은 특수정책  

실습 개요

  • public-sub-sg (Pub-svr용)
    1. Pub-svr
    2. Os -> ubuntu 24.04
    3. 인스턴스 타입: t2micro
    4. 네트워크 편집 : testvpc1, test-public-subnet, 10.0.0.100
    5. 보안 키페어 생성 pem 으로 설정, 보안그룹 생성: public—sub-sg
    6. 사용자 데이터(선택사항) : 도커 엔진 설치하는 스크립트 첨부 (설치 부분에 -y옵션 추가하기)
  • test-pri-sg (Pri-svr용)
    • Os -> amazon linux2023
    • 인스턴스 타입: t2micro
    • 네트워크 편집 : testvpc1, test-private-subnet, 10.0.0.200
    • 앞에 설정한 기존 키페어 선택
    • 보안그룹 생성: test-pri-sg사용자 데이터(선택사항) : 도커 엔진 설치하는 스크립트 첨부(설치 부분에 -y옵션 추가하기)
  • EC2 -2 인스턴스 생성
  • EC2 -1 인스턴스 생성
  • 퍼블릭 서브넷 설정  (test-public-subnet을 퍼블릭서브넷으로 만들기 위해) (test-public-rt 에 라우팅 0.0.0.0/0 test-igw 추가)
  • 라우팅 테이블 설정 (test-public-rt, test-private-rt) -> testvpc1에 연결
  • VPC(testvpc1 10.0.0.0/16)

✅ 프라이빗 인스턴스는 직접 인터넷에서 접근 불가. 접속은 **Bastion(퍼블릭)**을 경유.


🧪 EC2 생성 & 유저데이터(자동 도커 설치)

Pub-svr (Ubuntu 24.04)

  • 네트워크: testvpc1, test-public-subnet, 10.0.0.100
  • 키페어: hj-keypair.pem
  • User Data (Ubuntu)
#!/bin/bash
set -eux
apt-get update -y
apt-get install -y ca-certificates curl gnupg lsb-release
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
  > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker

Pri-svr (Amazon Linux 2023)

  • 네트워크: testvpc1, test-private-subnet, 10.0.0.200
  • 키페어: hj-keypair.pem
  • User Data (AL2023)
#!/bin/bash
set -eux
dnf update -y
dnf install -y docker
systemctl enable --now docker
usermod -aG docker ec2-user

🔑 SSH 접속

1) 퍼블릭 서버 접속

chmod 400 hj-keypair.pem
ssh -i hj-keypair.pem ubuntu@<Public-IP-of-Pub-svr>
# 예시
ssh -i hj-keypair.pem ubuntu@43.203.182.36

2) 프라이빗 서버 접속 — Bastion 사용

Bastion Host란?
외부에서 직접 접근 불가한 프라이빗 리소스로 가는 중간 관문 역할의 보안 강화용 퍼블릭 서버.

장점: 외부 노출 최소화, 로깅/감사 용이, 중앙 통제

실습에서는 Pub-svr가 Bastion 역할 수행

  • 점프 방식 ①: Bastion 접속 후 내부로 Hop
  • # Step1: Bastion ssh -i hj-keypair.pem ubuntu@<Public-IP> # Step2: 내부 프라이빗로 ssh ec2-user@10.0.0.200
  • 점프 방식 ②: 로컬에서 -J 옵션으로 한 번에
  • ssh -i hj-keypair.pem -J ubuntu@<Public-IP> ec2-user@10.0.0.200

❗️Permission denied 발생시 체크
키파일 권한: chmod 400
사용자: Ubuntu는 ubuntu, Amazon Linux는 ec2-user
Pri-svr SG: Inbound SSH from Bastion 허용 여부


🧰 문제 발생 요소

🟨 “인스턴스 상태 검사 1/2에서 멈춤”

  • 오류
    • Instance status check 실패: ping 연결이 되지 않음
  • 조치
    • Stop → Start로 인스턴스 재부팅(연결됨)

🧠 Additional

NAT Gateway vs NAT Instance

항목 NAT Gateway NAT Instance

  NAT Gateway NAT Instance
관리 완전관리형(무중단/고성능) 직접 관리 필요(스케일링/HA)
설치 위치 퍼블릭 서브넷 + EIP 퍼블릭 서브넷(ENI/EIP)
권장 표준 특수 요구/커스텀 라우팅 시

VPC peering vs Transit Gateway

항목 피어링 TGW

  VPC Peering Transit Gateway
토폴로지 메시 (대수 늘면 복잡) 허브&스포크 (단순/중앙관리)
라우팅 VPC 간 정적 라우팅 TGW 라우팅 도메인
규모 소규모 간단 연결 대규모/다수 VPC 권장

 


📝 커맨드 스니펫

# 키 권한
chmod 400 hj-keypair.pem

# 퍼블릭 접속
ssh -i hj-keypair.pem ubuntu@

# 프라이빗 접속(점프)
ssh -i hj-keypair.pem -J ubuntu@ ec2-user@10.0.0.200

# 네트워크 확인(점프 이후)
ip addr; ip route; curl -I https://amazon.com

📚 과제


본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 2기(B-log) 리뷰로 작성 되었습니다.