본문 바로가기
IT 인프라

[IT인프라] 서버와 스토리지 _ 20241127

by 황오독 2024. 12. 3.

1. 서버

- Server : 제공자

- 클라이언트에게 서비스를 제공하는 컴퓨터 또는 시스템

- 클라이언트의 요청에 응답하여 데이터를 보내주는 시스템 또는 컴퓨터

 

(1) Server Farm & DMZ

* 서버팜

- 컴퓨터와 서버 등 운영에 필요한 시스템을 한 곳에 모아 놓은 곳

- 외부에서 허가되지 않은 접근은 접근 차단

 

* DMZ(비무장지대)

- 보안 지역과 비보안 지역사이의 중립지역

- 공개해도 되는 서버를 배치하여 서버팜으로의 직접적인 접근을 막아 보안강화

 

(2) 웹 서비스 3Tier 아키텍처 요소

웹서버 WAS(Web Application Server) DBMS(Database Management System)
- 웹 브라우저(클라이언트)로부터 요청받아 정적인 컨텐츠(html, jpeg)는 직접 처리하고 동적인 컨텐츠는 WAS에 전달
- Apache, Nginx, IIS 등
- DB조회나 다양한 로직을 처리하는 동적인 컨텐츠 처리
- Tomcat, JBoss 등
- 데이터베이스를 운영하고 관리하는 소프트웨어
- MySQL, MariaDB, Oracle 등
1Tier 2Tier - WEB + WAS/DB
         - WEB/WAS + DB
3Tier - WEB + WAS + DB
- 단일 계층 아키텍처
- 하나의 서버에서 Web, WAS, DB 역할
- 배포 구성이나 SQL 쿼리 연습 시 사용
- 서비스(운영) 단계에서는 비권장
- 하나의 서버에서 Web 서버와 WAS 구성, 다른 하나의 서버에 DB 서버
- 하나의 서버에서 Web 서버 구성, 다른 하나의 서버에 WAS와 DB 서버 구성
- Web/WAS/DB 서버를 물리적으로 분리하고 역할을 효율적으로 분담
- 각 계층 간 독립성이 높아지고 보안도 강화

 

(3) 서버 아키텍처의 발전

- 기술의 발전에 따라 서버 아키텍처는 발전하여 왔고, 현재는 서비스 목적이나 비즈니스 상황에 따라 크게 3가지 아키텍처 사용 중

 

① 서버 가상화 (Virtualization) 와 컨테이너


서버 가상화 (virtualization)
* 하이퍼바이저(Hypervisor)
- 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼(platform
컨테이너
- OS 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 가상화 기술

 

② 각각 언제 써야할까?

  서버 가상화 서버 컨테이너화
중요한 점 완전히 독립적이어야 함 빠르고 가볍게 여러 작업을 동시에 처리해야 함
비유 원룸 빌라
- 각 세대마다 독립된 화장실, 부엌, 방 보유
- 다른 세대와 공간 공유 X
하숙집
- 방은 따로 있으나, 화장실이나 부엌 같은 공용 공간
- 공용공간에 문제가 생기면 다른 하숙생도 영향
보안 요구 수준 보안과 안정성이 매우 중요할 때 보안보다 속도와 효율성이 더 중요할 때
자원 사용량 상대적으로 더 많이 필요 자원을 적게 사용
사용 예 은행 시스템, 서로 다른 OS 써야 하는 환경 앱 개발, 클라우드, 서비스, 여러 서비스 동시 제공 환

 

2. 가상머신과 컨테이너

(1) 가상머신(Virtual) : Baremetal vs Hosted

- 시스템 자원 활용 증대, 비용 절감, 유연성 및 확장성, 보안성

① 물리 자원 공유
- 하나의 호스트에서 동작하는 가상머신들은 결국 그 호스트에 있는 cpu, 메모리 같은 자원들을 공유해서 사용

② 가상 네트워킹
- 하이퍼바이저 내에 가상 스위치를 만들어 사용
- 하이퍼바이저 종류에 따라 스위치의 동작 방식은 다름

③ 가상 머신 파일
- 가상 머신은 여러 개의 파일들로 구성
- 가상 머신을 power-on 하면 하이퍼바이저가 디스크에 있는 가상머신 파일들을 읽어 가상머신 정보를 획득 후, 해당 가상머신에 맞게 설정 후 OS를 부팅

④ 가상머신 마이그레이션(Migration)
- 가상머신을 하나의 호스트에서 다른 호스트로 이동
- Live Migration (서비스 중단 없이 다른 호스트로 옮김)
- Off-line(non-live) Migration (Shut down)

 

⑤ Virtual Box

- Type2 (Hosted) 하이퍼바이저
- 윈도우, 리눅스, Mac OS에서 실행 가능

 

(2) 컨테이너

- OS 가상화 기술 중 하나

- 프로세스를 격리하는 기술

- OS 커널에서 다수의 컨테이너를 실행 가능

구분 가상머신 컨테이너
 
게스트OS Windows, Linux, MAC ...etc None
이미지 사이즈 수 GB ~ 수백 GB ~ 수백 MB
시작 시간 수 분 수 초
자원 사용량 독립된 OS 사용으로 자원 사용량이 크다. OS 사용을 하지 ㅇ낳아, 메모리와 디스크 사용량이 적다.
보안 완전한 OS를 사용하므로 보안강화 호스트 OS의 커널을 공유하므로 보안상 취약

 

① 컨테이너 엔진

- 컨테이너를 구동하고 컨테이너 이미지를 관리하는 도구

- 컨테이너 생성, 실행, 중지, 삭제

- 종류 : docker, podman, rkt ...

 

② 컨테이너 엔진의 발전 흐름

* LXC (LinuX Container)

- 단일 호스트 상에서, 여러 개의 격리된 리눅스 시스템(컨테이너)들을 실행하기 위한 운영 시스템(cgroups 기술 + namespaces 기술)

 

* 도커 (docker)

- LXC 기반으로 조금 더 효율적으로 컨테이너를 생성, 관리, 배포 작업을 도와주는 기술.

- 컨테이너를 이미지화하여 배포를 쉽고 빠르게 지원.

- LXC에는 없는 캡쳐(스냅샷) 기능 보유

 

* CRI-O

- 쿠버네티스(다중 컨테이너 관리도구)에서 사용할 수 있게 맞춤형식으로 개발된 컨테이너 엔진

 

③ Docker

- 컨테이너 기반 가상화 기술을 제공하는 플랫폼

- Dockerfile을 통해 이미지를 커스터마이징 할 수 있게 제공

- Dockerhub 라는 컨테이너 이미지 저장소를 제공

붕어빵 틀 설계도 => 틀 => 붕어빵 찍어 생성
Docker Image - 서비스 운영에 필요한 프로그램, 소스코드, 라이브러리 등을 묶어 놓은 패키지 형태
- Dockerfile을 사용하여 커스터마이징 가능 (docker build)
- Container Image를 사용하여 컨테이너 실행 (docker run)
Dockerfile - 컨테이너 이미지를 커스터마이징하기 위한 파일
- 파일의 내용에 이미지 생성과정을 syntax에 다라서 작성
- 작성된 Dockerfile을 활용하여 새로운 Image 제작
Docker Image url <Namespace>/<ImageName>:<tag>
docker.io/library/nginx:latest

- Private 이미지저장소를 구축하여 이미지 관리 시에는 <Namespace>에 해당 서버 주소 및 포트번호 등으로 사용
- infra.com:3000/mywebserver:latest
Docker허브 - 수많은 컨테이너 이미지들을 서버에 저장하고 관리
- 공개 이미지를 무료로 관리
Docker 컨테이너 명령

 

④ Kubernetes (쿠버네티스)

- 수백, 수천의 다수 컨테이너의 배포, 확장, 축소, 자동복구 등 총괄적인 관리를 해주는 오픈소스 시스템

- 컨테이너 관리를 위함.

** 가상 서버 / 컨테이너 / 베어메탈 하이퍼바이저 / 호스티드 하이퍼바이저 차이점

 

3. 리눅스 기본

- 리눅스는 공개 소프트웨어이며 무료로 사용 (오픈소스)

- 유닉스와 완벽한 호환성을 유지

- 서버용 운영체제로 많이 사용

- 편리한 GUI 환경도 제공

 

** 리눅스 명령어

passwd 암호 변경
passwd <변경할 계정명>
cal 달력을 출력
pwd 현재 디렉토리 출력 clear 화면을 클리어
whoami 현재 사용자 계정명 출력 echo 문자열 다시 반환
echo <문자열>
history 현재까지 수행했던 명령어 출력 ls -l 디렉토리 목록 상세
date 현재 시각을 확인 ls -al
ls -a -l
숨겨진 파일까지 상세
file 파일 종류 확인
file <파일명>
mkdir 디렉토리 생성
mkdir <생성할 디렉토리명>
mkdir -p 여러 하위 디렉토리가 동시에 생성
mkdir -p mydir1/mydir2/mydir3
rmdir 디렉토리 삭제
rmdir <삭제할 디렉토리명>
- 디렉토리 내부에 파일이 존재하면 삭제 불가능
rmdir -p 최하위 디렉토리부터 순차적으로 삭제
rmdir -p /mydir1/mydir2/mydir3
- 이때 디렉토리가 비어있지 않으면 오류 발생
cd 지정한 디렉토리로 이동
*절대경로 : cd /usr
*상대 경로 : cd ../../usr
* cd : 홈 디렉토리로 이동
* cd .. : 상위 디렉토리로 이동
cp 파일복사
cp <source><target>
cd /home/ubuntu/a.file /home/ubuntu/b.dir/a.filecp
<source>파일을 <target> 디렉토리에 복사하면서 파일명을 a.filecp로 저장
mv 파일 이동, 이름 수정
mv <source><target>
cat 파일 내용 출력
cat <파일명>
- 내용이 긴 경우, 마지막 화면만 출력
more 파일 내용 출력
more <파일명>
긴 파일을 한 페이지씩 보여줌
wc 파일내 단어, 줄, 바이트 수 카운트
wc <파일명>
-l : 라인 수 출력
-c : 바이트 수 출력
-w : 단어 수 출력
touch 1) 빈 파일 생성
touch <새로운 파일명>
2) 파일 최근수정 시간을 서버 현재 시간으로 변경
touch <기존 파일명>

 

(1) 리눅스 파일 (일반 / 디렉터리 / 특수 파일)

① 일반 파일 (Regular File)

- 데이터 저장하는데 사용

- 텍스트 파일은 문서 편집기를 사용하여 내용을 보거나 편집 가능

- 실행 파일이나 이미지 파일의 경우 바이너리 형태(이진)로 데이터가 저장되어 바이너리 파일이라고도 표현

 

② 디렉토리 파일

- 리눅스에서는 디렉토리도 파일로 취급

- 디렉토리 파일에는 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장

- Windows의 폴더개념과 비슷

 

③ 특수 파일

- 심벌릭 링크 : 원본 파일을 대신하여 다른 이름으로 파일명을 지정한 것 (Windows의 바로가기 파일과 비슷)

- 장치파일 : 리눅스에서는 하드디스크나 키보드 같은 각종 장치도 파일로 취급

 

(2) 디렉토리 계층 구조

- tree 구조

- 모든 디렉터리의 출발점은 루트(root) 디렉터리이며, /(slash)로 표시

=> 다운로드까지 경로 : /home/user1/다운로드

 

① 상, 하위 디렉토리

- 하위 디렉토리 (자식 디렉토리) : 디렉토리 안에 있는 디렉토리

  (bin, etc, usr, home, boot)

- 상위 디렉토리 (부모 디렉토리) : ..으로 표시

- root 디렉토리를 제외하고, 모든 디렉토리에는 부모 디렉토리가 존재

 

② 리눅스의 경로

- 경로 : 디렉터리 계층 구조에 있는 특정 파일이나 디렉터리의 위치 표시

   (각 경로를 구분하는 구분자로 / 를 사용)

- 절대 경로 : 항상 루트 디렉토리부터 시작하며 /로 시작

   (특정 위치를 가리키는 절대 경로명은 항상 동일)

- 상대 경로 : 현재 디렉토리 기준으로 시작하며 / 이외의 문자로 시작

   (상대 경로명은 현재 디렉토리가 무엇인지에 따라 상이)

절대 경로 상대 경로
/(root) 부터 시작
cd /home/ubuntu
ls /home/ubuntu
vi /home/ubuntu/text.txt
상대 경로는 현재 디렉토리부터 시작
cd ../test
vi doc/report

 

4. 스토리지

- 컴퓨터, 서버 등의 데이터를 저장하는 저장소

- PC의 하드디스크, USB, 기업용 스토리지 등

- 기업에서는 고가의 대용량, 고성능 스토리지 사용

- Tape / HDD / SDD / NVMe / Cloud storage

 

(1) 저장장치

Tape HDD SDD NVMe
- 기업에서 사용하는 가장 오래된 스토리지 저장장치 유형
- 전송속도는 느리지만, 30년 가까이 저장 가능
- 싼 가격으로 주로 데이터 백업 용도 사용
- Hard Disk Drive
- IBM이 최초 개발
- Tape 보다 높은 전송 속도 제공
- Solid State Drive
- HDD 보다 수 배 빠른 전송속도 제공
- 주로 노트북용 SSD
- NVMe 서버에 장착하여 기업에서도 사용
- 고성능을 필요로 하는 기업에서 사용

 

(2) 스토리지 종류

① DAS (Direct Attached Storage)

- 서버와 저장 장치를 직접 연결(케이블)하여 사용하는 방식

- 연결하는 장치 수에 제한

- 다른 장치나 사용자에게 공유못하는 단점

 

② NAS (Network Attached Storage)

- 서버와 저장 장치를 이더넷 등 LAN 방식의 네트워크에 연결된 방식

- 여러 개 서버가 네트워크를 통해 연결하여 각각 할당 받은 용량을 사용

- 접속 트래픽이 증가할 경우 성능 저하 및 속도 저하가 발생

- DAS와는 달리 다수의 서버나 스토리지를 연결하여 높은 확장성, 유연성 보유

- 파일 단위로 저장

- 사용되는 프로토콜 : NFS, iSCSI

 

③ SAN (Storage Area Network)

- 일반적으로 사용하는 LAN 대신에 광케이블 (FC Cable)을 사용

- SAN Switch를 통해 여러 노드에게 할당하여 사용 가능

- 별도로 SAN 스위치가 필요

- 블록 단위로 저장

- 사용되는 케이블 : FC (Fiber Channel)

 

(3) 스토리지 프로토콜

- 데이터를 저장 장치와 서버 또는 컴퓨터 간에 주고 받기 위해 사용하는 통신 규약

- 어떤 방식으로 데이터를 주고받을지, 어떤 장치들이 연결될지, 어떤 데이터를 사용할지 등을 명확히

- 파일기반 (ex.NFS), 블록기반 (ex.iSCSI, FC)으로 나뉨

 

① FC(Fibre Channel)

- 서버 및 호스트에 고성능 스토리지를 연결하는 고속 네트워크 프로토콜

- 주로 블록 기반 스토리지와 연결하는데 사용 (SAN)

- 케이블은 FC 케이블을 사용

- SCSI 트래픽을 전달

- 호스트에 HBA (Host Bus Adapter) 장비가 필요

 

② iSCSI (Internet SCSI)

- LAN 케이블을 사용하여 Network에서도 사용이 가능하도록 TCP/IP 프로토콜로 패키징한 프로토콜

- 주로 블록 기반 스토리지와 연결하는데 사용 

- 2가지 연결방식 제공

  - iSCSI HBA 어댑터를 사용

  - 소프트웨어 기반 프로그램을 사용하여 어댑터 없이 NIC를 사용

 

③ FCoE (Fibre Channel Ethernet)

- 하나의 케이블과 CNA(Converged Network Adapter)를 사용하여 이더넷과 Fibre 채널 환경을 구현

- 주로 블록 단위로 데이터를 처리

 * CNA : NIC와 HBA 기능을 하나로 통합한 어댑터

 

④ NFS (Network File System)

- NAS 방식으로 사용할 때 주로 쓰는 프로토콜

- 파일 기반 스토리지 프로토

- NIC를 통한 네트워크 연결을 활용하여 통신

- HBA 같은 별도의 장치 필요 X

 

 

5. 보안 기본

- 서버, 네트워크, 스토리지 등 IT 자산에 대한 무단 접근을 방지하여 데이터를 보호

- 소프트웨어 또는 데이터의 도난, 손상, 서비스 중단으로부터 시스템을 보호

네트워크 보안 인터넷 보안 엔드포인트 보안 클라우드 보안 어플리케이션 보안
- 네트워크 내부로 권한이 없거나 악의적인 사용자가 접근하지 못하게 차단 - 브라우저에서 주고 받는 정보를 보호
- 웹 기반의 애플리케이션의 네트워크 보안
- 휴대폰, 태블릿, 노트북, 데스크탑 등 악성코드 방지 - 클라우드 아키텍처 내 데이터와 정보를 보호 - 애플리케이션 내 데이터, 코드 등이 해킹에 의해 도난, 변질되는 것을 방

 

(1) 방화벽 (Firewall)

- 미리 정의된 보안규칙에 의해 들어오고 나가는 네트워크 트래픽을 모니터링, 제어

- 신뢰할 수 없는 외부 네트워크 간 장벽을 구성

- 서로 다른 네트워크를 지나는 데이터 허용, 거부, 검열하는 기능을 갖춘 소프트웨어 또는 해당 소프트웨어를 구동하는 하드웨어 장비

① 접근통제 : 허용되는 서비스 제외하고 외부에서 내부로 접속하는 것을 차단

② 로깅(보안 카메라) : 규칙 변경사항, 관리자 접근 로그, 네트워크 트래픽 플로우 로그 등

③ 인증 : 허가된 사용자만 접근이 가능하도록 통제하는 기

 

(2) OS 계정

- 불필요한 사용자 계정 삭제 : 이전 사용자, 의심스러운 계정 존재 시 삭제

- 패드워드 규칙 설정 : 패스워드 길이, 변경기간 설정, 특수문자 사용 등

- root 계정 접근 설정 : 일반사용자 su명령 사용 제한, root 계정으로 ssh(Secure Shell_보안 프로토콜) 접근 제한 

 

(3) 백신 보안

- 악성코드를 탐지하고 치료하는 소프트웨어 (바이러스, 웜, 트로이목마, 랜섬웨어, 애드웨어, 스파이웨어 등으로부터 보호)

- 일반적인 기능 (악성코드 탐지 / 시스템 분석 / 맬 웨어 제거 / 파일 격리)

- 백신종류 (Windows 백신 : Norton, V3, McAfree, 알약 등 / Linux 백신 : Comodo, ClamAV 등)

 

더보기

Self Check!

1) 가상화

- 동일한 물리적 서버 위에 여러 개의 가상 서버(가상 머신)가 운영체계나 애플리케이션을 독립적으로 실행할 수 있도록 하는 기술

* 베이메탈 하이퍼바이저 : 하드웨어 위에 직접 실행되는 하이퍼바이저로, 물리적 서버에 직접 가상화를 구현하여 서버를 할당.

* 호스티드 하이퍼바이저 : 기존 운영체제 위에 설치되어 가상화 기능을 추가하는 형태. 각 OS 할당.

 

2) 컨테이너

- 운영체제의 커널을 공유하긴 하지만, 호스티드 하이퍼바이저와 다르게 필요한 애플리케이션과 라이브러리만 독립적으로 사용할 수 있음. 즉 자신만의 환경 (필요한 파일, 라이브러리 등)을 갖추고 실행.

- 따라서 가상화보다 더 적은 빠르게 실행할 수 있지만, 각 컨테이너마다 동일한 커널 공유로 인해 보안에서는 위험.

 

3) 스토리지

- 데이터 저장소, 디지털 데이터를 저장하는 장치나 시스템 지칭

 

4) DAS, NAS, SAN

- DAN : 물리적으로 서버에 직접 연결된 저장장치로, 서버에서만 접근 가능하며, 여러 대 시스템에서 공유가 어려움.

- NAS : 네트워크를 통해 여러 사용자들이 파일 기반으로 데이터에 접근하고 공유할 수 있음. NFS를 사용함.

- SAN : 블록 단위로 데이터를 저장하고, 고속 네트워크인 FC(Fiber Channel)을 사용함.

 

5) 방화벽

- 네트워크 보안장치로, 주로 접근 제어, 로깅, 인증과 같은 기능을 제공함.