Cloud 정리1(01~07)
참고한 자료
더북(TheBook): 오픈스택을 다루는 기술
thebook.io
리눅스
더북(TheBook): 모던 리눅스 관리
thebook.io
더북(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. 리눅스
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
```