tonyhan18 2022. 1. 4. 14:10
728x90

참고한 자료

 

더북(TheBook): 오픈스택을 다루는 기술

 

더북(TheBook): 오픈스택을 다루는 기술

 

thebook.io

 

리눅스

더북(TheBook): 모던 리눅스 관리

 

더북(TheBook): 모던 리눅스 관리

 

thebook.io

더북(TheBook): 리눅스 서버를 다루는 기술

 

더북(TheBook): 리눅스 서버를 다루는 기술

 

thebook.io

 

0. 클라우드란?

 

1. 정의와 종류

 

2. 컴퓨트와 스토리지

파티션과 볼륨

볼륨 : 그냥 드라이브

파티션 : 공간을 나눈다는 뜻. 나누어진 볼륨을 파티션이라고 부르기도 함

리눅스에서 20GB를 할당하면 일부는 메모리와의 SWAP 스페이스 즉 가상 메모리로 할당하고 나머지는 루트 파티션으로 이용하여 그 하위 디렉토리들이 존재하게 된다.

 

이때 공간을 필요에 따라 수동 파티션닝을 하게 될것인데 다음과 같은 경우들이 존재한다.

1. 사용자를 위한 저장공간 제공

2. VM 운영을 위한 별도 공간

3. 원격 스토리지 끌어다쓰기 : 특히나 외부 EMC 스토리지같은 곳에서 끌고오는 디스크를 볼륨이라고 부른다. 나중에 NFS라는 것을 통해서 해볼 수 있다.

 

블록 스토리지와 오브젝트 스토리지

 

3. 하이퍼바이저의 정의와 종류

 

VMWare

대충 VMWare로 가상머신을 만들면 위와같이 만들어진다.

 

1. 컴퓨터 구조

- 물리자원

 

- OS(HOST)

- Application

 

2. VM 구조

- 하이퍼바이저가 커널을 통해서 물리자원 요청 -> VCPU, 

- 만들어진 자원위에 OS(GUEST)

- Application 설치

 

4. 네트워크 상식

일반 IP : NIC에 할당된 주소

- private IP : 자체적으로 사용하는 IP주소 -> ifconfig.me를 주소창에 검색하면 내가 접속하고 있는 ip(NAT의 ip)가 나온다.

- public IP : ISP에게 비용을 지불하고 공인IP를 하나 할당 받음

- 127.0.0.1 : localhost ip

- x.x.x.0 : ip 문패

- x.x.0.255 : broadcast ip. 작동시 같은 네트워크내에서의 ip들 전체와 통신

- static / dynamic : ip 할당방식들. static은 관리자나 사용자가 ip/subnet mask등을 직접 입력 - 한번 입력시 고정, dynamic은 DHCP가 자동으로 IP 할당

- MAC : NIC제조사에서 부여한 물리적 주소

- 서브넷마스크 : IP 주소의 네트워크 영역과 호스트 영역 구분용

- 기본 게이트웨이(Default Gateway) : 다른 네트워크로 가기 위한 출구 주소(허브 같은거)

- IPv4 : 32bit

- IPv6 : 128bit

 

개발자를 꿈꾸는 프로그래머 :: DHCP란? (tistory.com)

 

- DHCP 작동방식 : 

1) DHCP DIscover : 기계가 브로드캐스팅을 하여 DHCP서버에 DHCP Discover을 보냄

2) DHCP Offer : DHCP서버가 브로드캐스트/유니캐스트로 메시지를 보고 단말에게 쓸 수 있는 ip를 전달함

3) DHCP Request : 단말이 DHCP 서버의 정체와 사용가능한 IP를 알았기에 DHCP 서버에 해당 ip를 쓰겠다고 보냄

4) DHCP Ack : DHCP 서버가 알겠다고 하고 임대기간을 설정해준다.

 

클라우드의 IP

- 고정 IP : 클라우드 컴퓨트 서비스의 가상 인스턴스는 IP를 할당 받는다. 보통 IPTime과 같은 기본 게이트웨이가 DHCP를 이용해서 할당해준다. 가상 머신 간 내부 통신만 가능

- 유동 IP : 인터넷에 접속하기 위해 ISP로 부터 할당받은 인터넷 IP가 필요하다. 이게 유동 IP이다.

 

 

Wireshark

- 패킷조사가능

 

호스트네임, 도메인 네임

- 도메인네임이란 네트워크 상에서 컴퓨터를 식별하는 호스트명을 이야기한다.

- 호스트네임이란 네트워크에 연결된 장치들에게 부여되는 각각의 고유한 이름

 

 

 

6. 리눅스

'CloudETC - 리눅스 기본적인 명령어들 pwd/cd/mkdir/rmdir/touch/mv/rm/ls/chown/chmod/cp/cat/more/less/head/tail/file/find/grep/locate/sed/vi/alias/poweroff/shutdown/halt/init/sudo' 수정하기 (tistory.com)

 

https://tonyhan18.tistory.com/manage/newpost/176?type=post&returnURL=https%3A%2F%2Ftonyhan18.tistory.com%2F176

 

tonyhan18.tistory.com

여기에 다 적어놓음

 

리눅스 부팅과정

- 1st, 컴퓨터를 켜는 것과 동시에 POST(Power on Self Test) 과정에 의해 우리가 사용하는(리눅스) 시스템이 초기화된다.

- 2nd, 초기화가 되는 동시에 부트 레코드나 하드인 경우엔 MBR(Master Boot Record)을 읽어들인다.

- 3rd, MBR(Master Boot Record)을 읽어들인 뒤 LILO(LInux LOader)가 실행되는데, 이때 만약 디폴트인 리눅스가 로딩되기 전에

Ctrl, Shift, Alt중 하나를 눌으고 있으면, LILO는 부팅할 운영체제를 물어본다.

- 4th, Kernel이 메모리로 로딩되며, 만약 커널이 압축되었다면 압축을 해제하는 과정까지이다.

- 5th, 커널은 하드, 네트워크 어댑터, 플로피 등을 검사하며, 장치 드라이버(Device Driver)를 설정한다. 즉, 하드웨어 부분을 검사하고

장치 드라이버까지 설정한다.

- 6th, 이렇게 하드웨어 설정뒤 리눅스는 프로세서를 보호 모드로 전환시키는데 화면상으로의 변화는 나타나지 않는다.

- 7th, 루트 파일 시스템을 Mount시키는 것인데 루트 파일 시스템은 "rdev"나 LILO에 의해 설정되어 있으며. 파일 시스템의 형태는

자동적으로 검출된다.

- 8th, 커널은 /etc/init를 백그라운로 실행한다. "init"는 "inittab" 파일의 내용에 따라 실행된다.

- 9th, "init"는 /etc 디렉토리 아래의 rc.sysinit를 실행한다.

- 10th, "init"는 /etc/ 디렉토리 아래의 rc.local이나 rc를 실행시킨다.

- 11th, "init" 프로그램은 가상 콘솔을 위해 /etc/gettytabs에 의해 설정된 직렬 라인으로 getty를 실행한다.

- 12th, 계정을 입력한다(ID 와 Password)

- 13th, shell이 작동하고 Bash이면 .bashrc를, tsh면 .profile을 불러들인다.

- 14th, 프롬프트(실행된 shell에 따라 다르지만 $나 #)가 표시된다.

 

쉘 스크립트 만들기

뒤에 확장자 .sh를 붙여주어야 구별하기 쉽다. 사실 안해도 되기는 한데 vim이 얘가 무슨 파일인지 인식못해서 색깔 대충넣어주니 해주자

```

touch a.sh

chmod 755 a.sh

```

대충 위처럼 적어주면 된다.

중요한건 최상단에 #!/bin/bash를 적어주자. bash 쉘의 명령어를 쓴다는 말이니까

 

디스크 및 장치관리

보통 디스크는 sda(물리장치), sda1(sda 파티션 첫번째), sda2(sda 파티션 두번째)에 할당된다. 각 디바이스들은 논리장치인 디렉토리에 마운트되어 사용한다.

해서 마운트 된 정보를 보면 위와같다. sr0는 CD-ROM을 의미하고 마운트 위치는 on 뒤쪽에 있는 /run 부터 시작하는 부분이다. 괄호 친 부분은 속성값이다.

 

마운트란

HW를 OS에 인식시키는 작업. 특정 장치를 하나의 디렉토리처럼 사용하기 위한 작업이다.

 

사용자와 그룹 관리

root : 슈퍼 유저

아무 닉넴 : 일반 사용자

```

cat /etc/passwd

sudo

su 유저이름

```

root -> user id

x -> passwd -> /etc/shadow에 암호화되어 담기기 때문에 보이지 않는다.

0 -> uid -> root는 0번 -> 일반사용자는 1000번부터 자동으로 할당됨

0 -> gid -> 그룹 root는 0/일반사용자는 1000

root -> group name

/root -> home dir

/bin/zsh -> 사용하는 쉘

7. DB 설치

DB

```

yum -y install mariadb mariadb-server php-mysql -> 필요한거 설치하기

systemctl start mariadb -> mariadb시작

mysql_secure_installation

mysql -u root -p -> 접속

```

 

db 명령어들

```

show databases;

create database testdb;

use testdb;

create table testtbl (

-> id int primary key,

-> name CHAR(30));

show tables; : 이걸로 모든table들을 볼 수 있다.

desc testtbl; : 테이블 내부를 내림차순으로 볼 수 있다.

```

 

쿼리문

```

INSERT INTO testtbl VALUES(1, 'gildong');

INSERT INTO testtbl VALUES(2, "TonyHan");

```

 

DNS(Domain Name System) : IP주소를 알아들을 수 있는 주소로 바꾸어주는 시스템

 

8. 웹서비스

방화벽

네트워크 QoS “대기시간·지터를 줄이자” - 데이터넷 (datanet.co.kr)

- 방화벽은 두개가 있다고 한다. 처음들어올때는 웹 방화벽 그리고 서버안쪽 방화벽이다.

- 방화벽이 늘어나면 속도가 준다. 그러면 병목현상이 생기며 latency(대역폭 포화), jitter(대기시간 변동) 이 늘어난다.

- 해결방법은 bandwidth를 늘리는 방법이 있다. 혹은 서버를 scale out하는 방법도 있다. 보통 scale out으로 처리하고 서버가 많아지면 load balancer을 사용한다.

 

3-tier

가장 앞에 web server 뒤에 web application server 마지막에 DB Server가 배치된다.

 

웹서비스가 제공되는 과정

1. 클라이언트 ip가 NAT로 변환되어 라우터, ISP, DNS를 거쳐 서버감

2. 웹방화벽 - 방화벽 - 서버 - DBMS를 거치어 Disk에서 필요한 정보를 클라이언트에게 보냄

 

 

9. AWS

키 페어

퍼블릭키는 서버가 프라이빗키는 클라이언트가 가짐

서버에 프라이빗키와 데이터를 가지고 접속시도

 

0. 실습들

 

VM에 NAT 설정하기

 

httpd, firewall 사용/실행/정지

```

yum -y install httpd

systemctl restart firewalld

systemctl stop firewalld

systemctl disable firewalld

 

systemctl restart httpd

systemctl stop httpd

systemctl enable httpd

```

 

접속 로그 확인하기

```

cat /var/log/httpd/access_log

```

 

httpd 접속 경로 설정, 접속 포트 설정

```

gedit /etc/httpd/conf/httpd.conf

```

대충 DirectoryIndex 뒤에 오는거 수정해주면 된다.

대충 Listen으로 시작하는거 바꾸어주면 된다.

 

만약 했는데 접속이 안된다면

```

setenforce 0

systemctl restart httpd

```

해주면 일단은 된다.

 

 

 

php

외부 패키지 설치할것들

```

yum -y install php

```

 

hostname 바꾸기

```

gedit /etc/hostname

```

에서 바꾸면 됨

 

네트워크 정보 전부 보기/수정

```

vi /etc/sysconfig/network-scripts/ifcig-ens32

```

 

CD-ROM으로 마운트 체험하기

마운트라는 것이 결국에 모든 물리자원들은 바이너리로 /dev아래에 저장되어 있다. 이것들을 사용할 수 있는 파일형태로 바꾸는 과정을 보고 마운트라고 부른다.

 

```

mount | grep sr0

unmount /dev/sr0

mkdir /mycdrom

mount /dev/sr0 /mycdrom

```

하면 cdrom이 mycdrom 폴더에 마운트된다.

 

NFS 마운트하기

NFS(Network File System) : 네트워크 연결을 이용한 파일 시스템으로 원격지에서 접근이 가능하도록 해주는 프로토콜.

 

- Server 측

```

yum -y install net-tools  # ifconfig 가 안될때 사용

yum -y install nfs-utils

systemctl stop firewalld

systemctl disalbe firewalld

mkdir /test

chmod 777 /test   # 외부에 공개할 디렉토리 생성

vi /etx/exports  #해당 디렉토리에 접근할 ip 지정

systemctl restart nfs-server  # 서버를 가동한다

```

- Client 측

```

systemctl stop firewalld

systemctl disalbe firewalld

mkdir /external

mount -t nfs 192.168.8.102:/test /external

```

 

728x90