공부일지/클라우드 SA 교육

4/22 혼자 인프라 구축 해보기

박수빈98 2025. 4. 22. 23:05

오늘 다윈시스 기업 인프라 신입 공고를 봤다.

지금 가진 프로젝트들이 다 웹 개발 쪽 프로젝트라 이런 곳을 써볼 껀덕지가 없다.

 

그래서 지금 내가 하고 있는 하이퍼바이저 기반 인프라 구축을 한 번 혼자 해보기로 했다.

주제는 다원시스 같은 제조업 기반 회사의 인프라 구축해보기

최대한 2주 조금 넘는 기간 동안 배운 걸로 만들어 봐야겠다.

목표

1. 프론트엔드 개발 및 배포

  • Vue.js로 기업 소개용 간단한 정적 홈페이지 제작
  • npm run build 후 dist 폴더 생성
  • NGINX 웹서버(10.0.0.103)에 배포
  • NFS를 통해 라우터 또는 웹서버로 빌드 결과 자동 복사
  • 공인망에서 80 포트 접근 시 홈페이지 정상 표시 확인

2. 백엔드(Spring Boot) + 웹서버(APACHE) 구성

  • 간단한 REST API 기반 게시판 서비스 구현
    • 예: GET /api/posts, POST /api/posts
  • Apache 서버 2대(10.0.0.105, 10.0.0.106)에 각각 배포 (로드밸런싱 실습 목적)
  • 외부 DB서버(10.0.0.102)와 연동 (MariaDB)

3. NGINX 리버스 프록시 및 로드밸런싱 설정

  • / 경로: 정적 파일 서비스 (Vue 빌드 결과물)
  • /api/ 경로: upstream을 통해 Apache 서버들로 프록시 분산

현재 구성도 요약

                   [ 외부 사용자 ]
                          │
                          ▼
             [ 공유기 NAT or 공인 IP ]
                          │
             ┌────────────┴────────────┐
             ▼                         ▼
      [ 라우터 서버 (10.0.0.1) ] <── NAT + DHCP + DNS
             │
 ┌───────────┼────────────┬─────────────┬────────────┐
 ▼           ▼            ▼             ▼            ▼
DNS       FILE         NGINX            DB     (→ APACHE 1, 2 예정)

오늘까지 구축한 것

전체 구조: Star Topology

라우터 서버를 중심으로 모든 서버가 LAN Segment로 연결 (가상의 스위치 역할)


라우터 서버

  • 내부망: ens224, IP: 10.0.0.1
  • 외부망: ens160, IP: 10.128.0.168
  • 기능:
    • 정적 라우팅
    • NAT
    • DHCP 서버: 내부망에 자동 IP 할당
    • 포트포워딩: 80번 → Nginx 서버로

🌐 DNS 서버

  • BIND 설치
  • 도메인 예시: .dawon.local
  • 내부 도메인 해석 가능: router.dawon.local, dns.dawon.local, 등
  • DNS Zone 정상 작동 확인됨 (dig 테스트 통과)

파일 서버

  • IP: 10.0.0.101
  • Samba + NFS 모두 구성
  • 클라이언트에서 공유 마운트 및 smbclient, showmount 정상 작동

DB 서버

  • IP: 10.0.0.102
  • MariaDB 설치 + bind-address=0.0.0.0 설정 완료
  • 외부 접근 허용, 사용자 계정 생성 및 권한 부여 완료
  • 라우터에서 mysql -h db.dawon.local 성공

Nginx 웹서버 (정적)

  • IP: 10.0.0.103
  • Vue 빌드한 결과물 배포 완료 (/usr/share/nginx/html)
    • VUE 초기화면이지만..
  • NFS를 통해 dist 파일 복사
  • 외부에서 http://10.128.0.168로 접속 가능 (firewalld + NAT 설정 완료)

일단 Vue.js 개발환경 세팅하고 처음 화면 빌드해서 VM으로 옮겨서 라우터 ip 80 포트로 띄운 화면이다.

 

 

내일 해야 하는 거

Apache 1, 2 VM 생성 각각 10.0.0.105, 10.0.0.106으로 고정 IP
Spring Boot API REST 게시판 구현 (localhost 테스트 후 JAR 빌드)
Apache 서버에 API 배포 2대에 동일 JAR 배포 후 포트 열기
NGINX 설정 수정 /api/ 요청을 Apache 서버로 라우팅 (upstream 사용)
외부 접속 확인 라우터 NAT로 80 포트 포워딩 → NGINX → Vue + API 정상 표시

 

nginx.conf 예시

upstream apache_servers {
    server 10.0.0.105;
    server 10.0.0.106;
}

server {
    listen 80;
    server_name webnginx.dawon.local;

    root /usr/share/nginx/html;

    location / {
        index index.html;
        try_files $uri $uri/ =404;
    }

    location /api/ {
        proxy_pass http://apache_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}