클라우드 서비스 종류 3가지
1. IaaS(Infrastructure as a Service) : 인프라(자원, 서버)를 사용자에게 서비스로 제공한다.
ex. 가상 서버, 가상 컨테이너, EC2, VPC, EBS, EKS 등
2. PaaS(Platform as a Service): 애플리케이션 개발, 실행, 관리를 위한 클라우드 기반 플랫폼을 제공한다.
ex. Azure, AWS, Google App Engine 등
3. SaaS(Software as a Service): 제공업체 100% 관리하는 애플리케이션을 제공한다.
ex. Dropbox, Google Apps, Salesforce 등
인프라 엔지니어의 업무
1. 설계
2. 구축
3. 운영
인프라를 구성하는 요소 3가지
1. 퍼실리티(Facility)
- 물리적/비기능적 장치. 시설, 설비라고 생각하면 된다.
예. 렉, 에어컨, 발전기, 변압기, 소화 설비, 환풍기 등
2. 서버 및 스토리지
- 서버: 아이디 서비스 제공. 클라이언트와 응답을 주고 받는 역할을 가진다.
- 스토리지: 데이터를 저장해주는 물리 장치, 장비
3. 네트워크
- 서버와 스토리지 연결, 인터넷 접속
OSI 7 Layer, TCP/IP 4 Layer
* 현업에서는 TCP/IP를 더 많이 사용한다!
인프라를 구축을 위해 필요한 것 2가지
1. 물리적 서버 및 스토리지
2. 물리적 네트워크
-> 시간과 비용에 많은 투자가 필요하다.
하지만 논리적으로 만들 수 있다 -> 가상화
컴퓨터의 구성요소
- 서버: 서비스를 제공하는 역할 -> 365일 구동되어야 함. 보안과 성능(cpu, 메모리 등)이 중요하다. 1U, 2U, 4U와 같은 렉에 넣어놓고 사용하는 것이 서버이다.
- 데스크탑: 서비스를 제공하는 프로그램이 설치되어 있는 장치
- 랩탑: 서비스를 제공하는 프로그램이 설치되어 있는 휴대용 장치
인프라의 주요 자원 4가지
CPU, Memory, NIC(네트워크 인터페이스 카드), Disk
cpu, memory 내부 동작과정에 대해 잘 알아야 한다.
사용자 요청을 Kernel에 전달 > 라이브러리 전달하여 메모리에 적재 > cpu에 쓰레드 전달 > 프로세스 실행
Kernel이 하는 일: 프로세스 실행
CPU에 Thread 요청 -> 데이터 처리할 수 있게끔
메모리 전달을 위해서는 서버가 메모리를 많이 확보하고 있어야 한다.
이러한 사용자 요청에 따라 프로세스를 실행하는 커널을 가지고 있는 것은 OS(Operating System)
OS
- Unix: 분산 애플리케이션 시스템을 사용한 운영체제(3tier Architecture). 유료 서비스. 라이센스 구매.
- Linux: 오픈 소스를 통해 무료로 사용할 수 있는 분산 애플리케이션 운영체제. 분산 시스템 발전에 큰 기여를 함.
- Window
* 3tier Architecture

분산 서비스가 생기면서 네트워크를 각각 레이어에 연결해야 하는데 연결해야 할 것이 너무 많아져서 관리가 힘듦
이에 따른 네트워크 관련 문제가 많이 생겨났고 네트워크 지식이 많이 필요할 것이다.
* mainframe computer: 서버, 요청, 프로세스 실행 등 모든 작업을 이것으로 다 한다.
- 단일 시스템이기 때문에 비용이 아주 비싸다.
* CloudNative Computing Foundation(CNCF)
요즘은 오픈 소스를 이용한 인프라 구축도 괜찮은 방법이다.
* Kubernetes distribution(배포판)
- EKS/GKE/AKS
- vm tanzu
- redhat Openshift
* Linux Distribution란?
리눅스 커널 + GNU Project
* 리눅스 배포판 종류
- ubuntu
- Debian
- CentOS
- RHEL
- rocky
* L4, L7의 요청 방법
L4> IP:TCP Port
L7> Hostname
L3
L2
* 서브넷 마스크 이론
172.16.0.1/24 -> 24는 서브넷 마스크 -> 255.255.255.0이란 뜻
이진수로 표현하면 11111111.11111111.11111111.0
서브넷 마스크를 통해 같은 네트워크 영역에 포함되어 있는지 파악할 수 있다.
네트워크 영역은 172.16.0.0~172.16.0.255
하지만 사용할 수 있는 네트워크 대역은 1~ 254
왜?
네트워크 주소(첫 주소)와 브로드캐스트 주소(마지막 주소)는 사용자가 쓸 수 없음!
네트워크 대역대
같은 네트워크 대역인가? 다른 네트워크 대역인가?를 잘 확인해야 함.
통신하는 방법이 다르다.
같은 네트워크 대역일 경우 라우팅 테이블이 필요하지 않다.
다른 네트워크 대역일 경우 라우팅 테이블을 설정하여 서로 연결해줘야 통신이 가능하다.
IP address = network address + host address
네트워크에서 서브넷 마스크에 따라서 사용할 수 있는 네트워크 개수가 달라지기 때문에
필요한 요청과 서비스에 따라 서브넷 마스크를 잘 설정할 수 있도록 유의해야 한다.
이진수 밖에 모르는 컴퓨터가 ip를 보고 같은 네트워크라는 것을 어떻게 알 수 있을까???
> ARP를 사용하여 ip를 mac 주소로 변경하여 컴퓨터상에서 시스템이 같다고 파악함
가상 환경 구축 및 리눅스 실습
실습 내용: 가상 머신을 이용해 서버를 구축하고 터미널 프로그램을 이용하여 ssh 원격 접속
- virtualbox 6.1 다운로드
https://www.virtualbox.org/wiki/Download_Old_Builds_6_1

가상화 시스템을 제공해주는 솔루션, 가상화 머신(추상화 개념)
AWS에서도 virtualbox와 같은 가상화 서버를 제공하고 자원을 사용할 수 있음
Locky 9 설치
- rocky9-minimal.iso 다운로드
https://rockylinux.org/download


호스트 키 조합 변경
리눅스에서 한영 변환 키 지원되지 않기 때문에 호스트 키를 변경해준다.
파일 > 환경 설정 > 입력 > 가상 머신(상단 탭) > 호스트 키 조합 Ctrl + Alt로 변경하기


Memory: 2048MB

디스크 vdi, 동적할당, 20GB 설정하면 생성 완료

CPU: 1 vCPU(default)

가상 NIC(Network Interface Card) 추가
* 여러 개의 네트워크로 분리하는 이유: 서버를 24시간 동안 제공해야 하기 때문에 다른 수단이 필요함 => 네트워크 이중화
NIC 종류 2가지
1. NAT(Network Address Transformation) (default): external network. 외부 데이터를 내부로 들여오기 위해 사용된다.
2. host-only: 내부에서 이루어지는 데이터 통신을 하는 경우 생성할 수 있다.
내 컴퓨터 환경에서만 데이터를 주고 받을 것이기 때문에 host-only로 설정한다.
* 폐쇄망: 내부 시스템에서만 데이터를 받아 사용하며, 외부와 연결되지 않음
NIC 설정 방법
설정 > 네트워크 > 어뎁터 2

IP 변경 -> 172.16.0.1
파일 > 호스트 네트워크 관리자

OS 설치
설정 > 저장소 > CD 아이콘 클릭 후, 디스크 파일 선택 > 다운로드 받은 Rocky 선택

언어 설정
rocky 가상 머신 접속 후 언어 영어(US)로 설정

Installation Destination 설정
파티션: 디스크를 나눈 논리적 단위
파티셔닝: 디스크를 나누는 행위
리눅스는 디스크 이름으로 파티션을 나눔

Root 사용자 설정
간단한 테스트를 하기 위해서 root 계정의 원격 접속을 패스워드 인증으로 허가할 수 있도록 설정한다.


유저 생성

재부팅 후 root 계정으로 로그인

ip a(= ip addr) 명령어를 통해 각 어댑터의 주소 확인

1. lo: looopback 인터페이스. 데이터를 전달하려고 하는 로직 프로세스를 가짐. A 프로세스가 컴퓨터(커널) 쪽으로 정보를 전달할 때, 루프백 인터페이스가 B 프로세스로 데이터를 전달
127.0.0.1/8 < 루프백 인터페이스를 가리키는 ip (본인)
2. enp0s3: nat. 주소가 자동으로 생성됨. dhcp 프로토콜이 사용됨.
3. enp0s8: host-only. 가상 머신 시작 전, 네트워크 대역을 172.16.0.1/24로 변경
nmcli 명령어 이용하여 enp0s8 주소 변경 -> 172.16.0.200/24
# nmcli con mod enp0s8 ipv4.address 172.16.0.200/24 ipv4.method manual
-> enp0s8 ip 주소를 172.16.0.200/24로 변경 후 재부팅한다.
* nmcli con mod(NetworkManager Connection modify: 현재 네트워크에 연결된 아이피를 변경(Modify)한다.

네트워크 연결 확인


ssh 실행하기 위한 MobaXterm 터미널 프로그램 설치
https://mobaxterm.mobatek.net/download.html
shell과 terminal 이론
명령어를 바이너리로 바꿔주는 역할을 하는 것은 Shell
쉘을 interpreter라고 부른다.
인터프리터란?
프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경
binary file > kernel
interpreter(shell) > kernel
리눅스는 C언어로 컴파일되어 있음
리눅스에서는 기본적으로 bash shell을 사용함.
윈도우는 PowerShell
속도는 바이너리 파일이 더 빠르다 왜? 이미 다 빌드되어 있음
바이너리 파일과 인터프리터의 차이점은?
바이너리 파일: 고정된 실행 파일
인터프리터: 유연한 작동
터미널이란? 사용자가 명령어를 입력하고 출력된 결과를 볼 수 있는 물리적 장치
terminal 입력 > shell > kernel > process > terminal
이 터미널 장치는 키보드와 모니터가 보급회되면서 사용하지 않게됨
하지만? 터미널은 꼭 필요하다!
tty라는 명령어로 터미널을 사용할 수 있따.
MobaXterm 실행하여 SSH 세션 생성



echo $SHELL
현재 어떤 쉘을 사용하고 있는지 확인할 수 있는 명령

bash shell을 사용할 수 있는 것을 확인할 수 있다.
bash 쉘 프로그램도 프로세스로 커널에 의해 실행(/bin 디렉터리에 저장되어 있음)이 되었음.
메모리 특정 부분에 적재되어 메모리를 사용하고 있는 중이다.
'클라우드 컴퓨팅 > 인프라 기초' 카테고리의 다른 글
[24.07.04] 인프라 기초 4 Docker와 컨테이너, 레지스트리 (0) | 2024.07.04 |
---|---|
[24.07.03] 인프라 기초 3 (0) | 2024.07.03 |
[24.07.02] 인프라 기초 2 (0) | 2024.07.02 |