공부일지/클라우드 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;
}
}