Cloud 01 - VMware, Hypervisor, centOS, AWS-EC2

TonyHan·2021년 12월 30일
0

21) Cloud

목록 보기
1/1

한국정보교육원 | K-digital (keduit.com)

한국정보교육원 - K-digital 교육과정
한국정보교육원의 K-digital 교육과정 프로젝트 관리 페이지
kdigital.keduit.com

bt78kim@gmail.com

010-6313-4166

VMware

https://drive.google.com/file/d/1trHTFYa5QM0qh5Hkbba2vl1uJC_2p4jj/view?usp=sharing

이제 우리는 VM을 만들어낼 것이다.

컴퓨터를 살피어보면 가장 아랫쪽에 물리자원들이 존재하고 그 위에 OS가 있다. OS 내부에는 또 물리자원에 직접 접근하기 위해 kernel이 존재하고 kernel을 사용하기 위해 Application program(API)가 존재한다. 그런데 사용자는 이런것까지 신경써서 사용하기 어렵기 때문에 그 위쪽에 application들이 존재한다. 우리는 바로 이 application 바로 옆에 VMware을 이용하여 새로운 가상머신을 만들 것이다.

이때 OS를 따라 물리자원에 접근하고 요청을 던지는 놈을 Hypervisor이라고 부른다. 하이퍼바이저가 물리자원의 일부를 때와서 vcpu, ram, volume(vdisk), vnic등을 만들어 내고 그 위에 새로운 OS를 설치한다. 그리고 또 똑같이 그 위에 application을 설치한다. 이렇게 만들어진것을 보고 VM이라고 부른다.

이 하이퍼바이저는 AWS, GCP, AZURE 등등 모든 곳에서 사용되어진다.

이렇게 되니 OS가 2개가 된다. 이를 구분하기 위해서 물리계층에 가까운 OS를 HOST OS, VM 의 OS를 GUEST OS라고 부르기로 한다.

이러한 VM을 2개 만들 수 있을까? 할 수 있다. 그리고 같은 물리자원의 일부를 때와서 사용하는 것이기 떄문에 상호통신도 가능해진다.

그런데 하이퍼바이저가 물리 자원까지 가서 자원을 요청해야한다. 이 가상의 자원을 만들어주는 것이 커널이다. 이때 한계는 물리자원의 영역까지만이다.

예를 들어서 여러개의 가상 머신에 2코어 cpu 가 코어를 최대 2개까지 여러 가상머신에 나누어줄 수는 있다. 하지만 한녀식이 코어 3개 이상을 가져가는 것은 못한다.

그런데 RAM은 정확하게 딱딱 나누어서 VM별로 나누어 주어야 한다.

그런데 또 HDD, SSD 는 프로비저닝을 이용해서 원하는 크기로 나누어줄 수 있다. 씬프로비전, 씩프로비전이라고 부른다. 이건 즉 원하는만큼 준다고는 하지만 실재로는 사용하는 용량만큼만 준다.

이제 OS를 직접 다운받으러가보자

Download (centos.org)

이제 VMware을 설치해보자

들어가서 change settings를 클릭하자

Bridged 부분만 바꾸어서 apply 하자. NIC관련이다보니 다른 것이 나올 수 있다. 일단 강의장에 있는 Realtek을 사용하자.

위와같이 Subnet만 나(192.168.1.0)로 바꾸어놓자. 이렇게하면 나한테 붙어있는 NIC이 설정된다.

마지막으로 VMnet8도 IP만 192.168.8.0으로 바꾸어놓자.

나머지는 그냥 진행하자

그럼 위와같이 가상머신이 만들어진것을 확인할 수 있다.

이제 이미지를 끼워넣자

이제 여기에다가 우리가 다운 받은 ISO 이미지를 집어넣자.

VMnet8로 바꾸어주자. 이건 192.168.8.0으로 설정하는 것이다.

USB, sound card, printer은 Remove해주자

이제 Power on 해서 켜주자 그리고 마우스를 검은 화면을 클릭해주면 마우스가 VM 안에 갇히게 된다.

했더니 이런게 뜬다. 아마도 BIOS 설정을 해주지 않아서 이렇게 된거 같다.

잠시 BIOS 설정해주고 오자

CPU Configuration > Virtualization을 Enable로 바꾸어주면 잘 작동해진다.


그리고 설정을 해주자.

시간은 서울로

SOFTWARE SELECTION은

Server with GUI 만 선택해주자

디스크를 선택해주자.

네트워크는 위와같이 webserv라는 이름으로 설정해놓자. 그리고 꼭 Apply 버튼을 눌러주자.

오른쪽 위로 가보면 위와같이 DHCP가 자동으로 네트워크를 할당해준다. 이것을 우리는 고정해주자.

Configuration을 클릭하면 페이지가 나오는데 거기에서 General에서 Automatically로 시작하는 것을 클릭해주자

IPv4 Settings로 가서 위와같이 설정해주자.

이제 다 끝났으니 Begin Installation을 해주자

하면 ROOT PASSWORD를 입력해달라는 것이 나온다. 이걸 test123 으로 해주자.

ROOT는 전체 관리자이고 USER는 사용자로 접근하게 된다.

USER은 모든걸 user1 으로 넣어주자

설치가 다 되었다면 LICENSING에서 LICENSING INFORMATION으로 들어가서 정책에 동의한다는 것을 클릭한다.

NOT LISTED > root입력 > test123입력

하고 나머지 창들은 그냥 NEXT로 넘기면 위와같이 나오는 것을 확인할 수 있다.

왼쪽 위 Application에서 terminal과 firefox를 켜주자

터미널에 다음과 같이 입력해서 핑 테스트를 해보자

ping -c 3 [www.google.com](http://www.google.com)

서버와 매우 잘 연결되었다.

자 우리는 이렇게해서 linux 설치를 완료했다. 그런데 이 linux가..... 흠.... 족보가 굉장히 크고 넓다.

어찌되었든 리눅스가 만들어진 이유는 사용자에게 서비스를 제공해주는 것이다.

이제 직접 페이지를 만들어서 서버에 올려보자

yum -y install httpd
cd /var/www/html/

curl https://www.naver.com > index.html
systemctl restart httpd

하면 네이버페이지가 파일로 들어오게된다.

이제 검색창에 우리의 주소 192.168.8.101을 엔터치면 이런 페이지가 뜬다.

???

하지만 서버는 현재 위와 같은 상태이기 떄문에 외부에서 접근이 불가능하다.

이를 가능하게 하기 위해서

systemctl stop firewalld

하면 위와같이 서버에서 페이지에 접속이 가능해졌다.

그럼 이 서버에 외부 컴퓨터가 접근 가능할까? 지금은 안된다. 이건 NAT를 Bridge로 변경해주어야만 접근이 가능하게 된다.

이번에는 우리의 사이트를 띄어보자

echo "Hello" > index.html

한다음 다시 사이트에 접속해보면 위와같은 상태이다.

systemctl stop httpd
systemctl start httpd

를 입력하면 아예 웹서버 연결이 멈추어버린다.

그런데 이런 서버가 5000개 넘는 곳에 일일히 다할 수 있을까? 아니다. 우리가 이걸 쉽게하기 위해서 클라우드를 써야한다.


다수의 서버를 만들기 위해서 우리는 AWS를 사용할 수 있다.


웹 서비스

이제 백신신청페이지를 만들어서 배포까지해보자

웹서버가 있다고 하더라도 데이터를 저장할 데이터베이스 서버를 외부에 두어야 한다. DB 서버를 외부에 두어야 보안에 보다 안전해질 수 있기 때문이다.

그냥 서버는 누구나 접근할 수 있어서 위험하다.

DB를 만들때 주의해야 하는 것이 다른 데이터들과 구분이 가능한 PK(primary key)를 만들어야 한다. 그리고 이걸 또 구분한 SK(Super Key)

서비스 제공자 : 서버(서버용 OS - LINUX)

서비스 이용자 : 클라이언트(윈도우)

다수의 client가 서버로 접근한다면 서버는 단 하나의 DB와 연결해준다. 다른 DB와 연결되면 문제가 생길것이다. 이때 DB는 RDB로 정의되어있다고 하자. 그리고 사용자가 서버로 부터 받은 페이지에서 query를 받아다가 서버로 보내고 서버는 DB로 query를 보내서 데이터를 가지고 온다. 이때 이러한 DB와의 통신과정을 위해 프로그래밍 언어가 사용될 것이다.

우린 여기서 더 나아가 서버가 3대가 있다고 하자. 뒤에는 DB가 있다. 외부에서 client가 접근할때 1-3번 사용자가 위쪽 서버로 간다고 하면 서버 2대가 논다. 이러면 자원을 낭비하는 결과가 된다. 그래서 클라이언트가 접속을 할때 서버를 분배해주는 것이 필요해진다. 이것을 해결하고자 load balancer(부하분산기)를 설치해준다.

그런데 서버들 전체를 관리할 수 있는 것이 필요하다. 이것을 웹페이지를 통해서 관리를 한다. 우리가 해야하는 것이 바로 이 서버 전체를 관리하는 방법을 학습하게 된다. 이러한 방법을 위해서 load balancer부터 서버까지 모두 cloud에 올려버린다. 문제는 이렇게하면 너무 비싸다. 그래서 값싼 open source로 만들어낼 필요가 있다.

profile
신촌거지출신개발자(시리즈 부분에 목차가 나옵니다.)

0개의 댓글