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) 방화벽
- 네트워크 보안장치로, 주로 접근 제어, 로깅, 인증과 같은 기능을 제공함.
'IT 인프라' 카테고리의 다른 글
[IT인프라] 고가용성 IT 인프라 _ 20241128 (1) | 2024.12.04 |
---|---|
[IT인프라] 라우터 실습 _ 20241126 (0) | 2024.11.26 |
[IT인프라] IP 네트워크 이해, 라우터와 라우팅 _ 20241125 (2) | 2024.11.25 |
[IT 인프라] IT 인프라 이해와 스위치 네트워크 구성 _ 20241125 (3) | 2024.11.25 |