본문 바로가기
Development(Web, Server, Cloud)/Cloud : 정리

3. GCP와 AWS

by tonyhan18 2022. 1. 18.
728x90

COMMON(공통)

NFS(Network File System)

NFS는 데이터 스토리지이다. 스토리의 종류는 세가지가 있다.

 

1. File Storage(NFS, SMB/CIFS)

트리형태로 되어 있는 가장 기본적인 파일 스토리지

디렉토리를 다른 디바이스 디렉토리에 마운트해서 사용

공유 디바이스이기 떄문에 다른 사람이 파일을 접근할 가능성이 많다면 사용해도 됨.

멀티 프로젝트를 구현하는 클라우드 환경(멀티 테넌시)에서는 사용하기 어려움

 

2. Block Storage(ISCSI)

aws의 EBS(Elastic Block Storage)와 같은 것으로 스토리지의 일정 공간을 볼륨으로 생성하고 이를 원격지에 있는 서버에 연결해주는 방식. 스토리지의 가상의 디스크(volume)을 만들고 해당 볼륨을 서버에 sda 또는 vda 처럼 디스크를 마운트해서 사용

사용시 SAN이라는 도구를 이용해야하기도 함

ISCSI가 대표적인 프로토콜

 

3. Object Storage(S3)

계정별로 일정공간을 제공하는 방식

 

- DAS : Direct Access Storage : 그냥 연결해서 쓰는 거(블록단위 전송으로 빠름)

- NAS : Network Access Storage : 네트워크로 연결해서 데이터를 받아 쓰는 거(얘만 OS 탑제됨 - 포토 스테이션 등)

- SAN : Storage Area Network : 광케이블을 연결하는 제품(SAN Switch를 통해 공유되는게 아닌 SAN의 스토리지 공간을 각각 할당해주는 것이다 - 실제 스토리지에서 데이터를 볼 수 없고 서버를 통해서만 볼 수 있다 - 블록단위 전송으로 빠름) 원래 공유되지 않지만 공유를 시킬 수 있는 솔루션도 있다.

ISCSI : IP 기반의 스토리지 네트워크

 

VMWare

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

 

1. 컴퓨터 구조

- 물리자원

 

- OS(HOST)

- Application

 

2. VM 구조

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

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

- Application 설치

 

PPK 만들기

 

 

= GCP =

 

= AWS =

vpc(virtual private cloud) : public cloud 환경안에 개인의 프라이빗 서비스(환경)

AWS EC2(0113)

 

볼륨 스토리지는 위와같이 있다.

보면 종류도 다양한데 내려갈수록 가격이 높아진다.

자주 넣고 빼는거면 SSD

장기보존은 마그네틱을 쓰면 좋다.

 

태그

보안그룹 : AWS의 firewall이다.

AWS Security Group : firwall

 

key-pair을 통해 private key를 생성할 수 있다.

 

 

.

AWS load balaner(0113)

똑같은 EC2 바로 옆에 있다.

가장 아래쪽에 가려져있는 Classic Load Balancer을 클릭해서 만들자

들어오는것과 어떻게 내보낼지를 결정하자

보안그룹은 위와같이 설정해놓자

서버가 죽었는지 살았는지 체크하는 기능이다

 

만들어진 EC2들을 추가해서 관리하자

load balancer의 VPC ID를 클릭해서 사설 IP 대역을 알아온다.

 

EC2 보안그룹은 들어오는건 VPC IP 대역과 ssh로 접근하는 내 ip만 살리고 나가는건 전부다

load-balancer 보안그룹은 들어오는건 내 IP 나가는건 전부다로 설정해주자

 

 

DB

1. RDBMS

- 고전적인 형태의 DB관리는 관계형 데이터베이스(RDBMS) -> 데이터를 액셀 형태의 테이블에 저장한다. 테이블들은 관계를 형성하고 유의미한 데이터를 얻을 수 있다. 클라이언트는 이를 통해 유의미한 데이터를 얻을 수 있다.

- 정형화된 데이터 담기

(Oracle, MySQL, MariaDB, Postgresql)

- 관계형 DB

- 확장 어렵고

- 시간 오래걸림

 

2. NOSQL

- key:value 형태로 데이터를 저장하며 

- 그래프, 사진등과 같은 비정형 데이터를 보관하기에 유리하며 빠른 속도의 처리가 필요한 곳에서 주로 사용됨(MongoDB, DynamoDB)

 

RDBMS와 NoSQL은 모두 중앙집중형 형태를 띈다. 보완에 취약함

 

3. 블록체인(BlockChain)

데이터 통신에 참여하는 각 클라이언트들이 각각 원장을 보유하고 전체 데이터의 작성, 수정 등의 내용을 공유하는 형태이다. 모든 원장은 동일하게 데이터가 기록되어야한다. 이를 통해 데이터의 무결성을 보장 받을 수 있다.

 

aws에서는 RDBMS 서비스를 RDS 라는 서비스 명으로 제공중

기존의 데이터베이스 사용방법은

- 물리 서버준비 -> OS 설치 -> DBMS설치 -> 환경구성(사용자생성) -> 클라이언트가 접속

 

aws에서는 서비스 신청시 즉시 제공해줌. 단 클라이언트는 OS 설치등을 하지 않는다.

 

위와같은 서비스를 신청하면 OS 설치등의 단계를 생략하고 즉시 서비스가 제공되는 형태를 "완전관리형 서비스"라고 한다.

 

대충 위와같이 있다.

 

대충 RDS에 들어가자

버전은 그냥 선택된 걸로 MySQL 프리 티어를 선택하자. 프리 티어가 Multi-Available Zone이 안된다. 즉 백업용 DB를 만들어 서로 sync 하는게 안되고 하나만 사용할 수 있다.

 

패스워드는 test1234로 해놓았다.

 

 

스토리지 자동 조정이 보이는데 자동으로 scale up을 1TB 까지 하겠다는 건데 쓰지 말자

 

 

퍼블릭 액세스는 인터넷에서 접근허용을 묻는건데 아니요를 누르면 공인IP 설정없이 만들어진다. 우리는 외부 접근이 되도록 예를 눌러놓자

 

참고로 DB는 한번 만들면 바꾸기 힘드니 신중하자

 

VPC 보안 그룹도 새로 생성하자 이름은 mydbms1-securitygroup으로 설정하자

가용 영역은 기본 설정 없음이다.

 

추가구성 DB 포트는 마리아나 mysql은 TCP 3306을 이용한다.

 

DB 접근 방법도 그냥 암호인증으로하자

 

초기 DB를 생성하고 이름은 testdb

백업절대하지말자 잠깐쓸거기 떄문이다.

 

마이너 버전 자동 업그레이드하지말고

 

DB 생성하면 된다.

 

생성까지 개 오래걸리니 밥먹고오자

 

들어가면 대충 요런개 나온다.

 

엔드포인트가 우리가 접속하 주소이다. 여기는 퍼블릭 접속이 일단은 가능하다.(우리가 아까 설정해 놓았다)

 

보안그룹으로 가보면 대충 이런게 적혀있다. 3306번 포트가 열려있다.

소스라는 부분도 있는데 자동으로 우리가 쓰는 컴퓨터의 IP가 적혀있다.

 

일단 앞에서 보았던 엔드포인트를 복사하자

 

그리고 lbdns 에

```

yum -y install mysql

```

```

mysql -h 도메인주소 -u admin -p

```

로 접근하자 그럼 패스워드를 입력하라고 한다. 입력해주고 db에 들어가자

 

보면 우리가 만들어달라고 했던 testdb를 확인할 수 있다.

 

일단 서버db와의 연결은 가능한데... 웹으로 연결도 되도록 해보자

 

check.php를 우선만들자

 

.

<?php

	echo "MYSQL Connection TEST";
	
	$dbhost='mydbms1.cn9clbedaqgr.ap-northeast-1.rds.amazonaws.com';
	$dbname='testdb';
	$dbuser='admin';
	$dbpass='test1234';

	$db = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

	if($db) {
		echo 'CONNECTION <span style="color:green">SUCCESS</span> <br>';
	}else {
		echo 'CONNECTION <span style="color:red">FAIL</span> <br>';
	}

?>

대충 연결이 잘 되었다.

 

물론 이렇게 연결하면 두가지 문제가 있다.

1. 속도문제

2. 보안문제

 

그래서 이렇게 연결하는건 좋은 선택이 결코아니다.

 

현재 구성에서 보완해야할 사항

1. 서버(RDS)와 클라이언트(웹서버) 사이의 데이터는 clear text이므로 보안상 결함이 있어 이를 중간에 있는 인터넷 사용자들이 알아볼 수 없는 형태로 전송/수신해야함.

(VPN이 필요하다 -> 사설 주소 - RDS 사설 주소로 직접 통신 가능)

 

2. 만약 데이터베이스가 파괴되었다면 복구할 수 있는 방법이 현재는 없는 상태이므로 이를 보완해야 하는데 AWS에서 제공하는 multi-az를 이용하는 방법을 선택할 수 있다.

 

위와같이 DB1, 2를 나누어서 클러스터링 하는 것이다.

대표적으로 '갈레라 클러스터'가 존재한다.

Galera Cluster에 대해 알아보자 (tistory.com)

 

Galera Cluster에 대해 알아보자

도입 현재 다니는 회사에서 RDBMS로 MariaDB를 사용하고 있습니다. 서비스가 규모가 있다보니 단일 DB로는 버틸 수 없기 때문에 Galera Cluster로 클러스터를 구성하여 사용하고있습니다. 오늘은 MariaDB/

sightstudio.tistory.com

참고로 db가 가장 돈이 많이 나온다 빨리 삭제하자

 

스냅샷 필수 삭제

자동 백업 필수 삭제

 

728x90