-
aws - EC2, VPC, 2-Tier, 3-Tier ArchitectureCloud/aws 2022. 6. 13. 01:23
Note
클라우드의 핵심
- Self-service : 고객이 직접 설정하고, CSP에서 지원을 하거나 담당자를 할당하지 않음 > 교육 비용 발생(고용) : 교육시장 존재 cf. 자격증 : AWS, GCP, MS에서 발행하는 클라우드 자격증을 취득하려는 수요가 계속 증가할 것
- 종량제 : 사용한 만큼 지불 (합리적)
- Multi-Tenancy : 복수 점유 (여러 클라우드 고객들이 클라우드 기반 인프라를 공유하는 것)
- 규모의 경제 : 더 큰 업체가 더 저렴한 비용을 제공한다. (대량 구입하면 할인)
EC2 : Elastic Compute Cloud
- Elastic (탄력적) : 외부로부터 영향을 받더라도 항상 그 상태를 유지하는 것 > 고정적인 의미
- 다양한 운영체제를 가상머신에 설치해서 빌려주는 서비스
- 운영체제가 유료인 경우 : MS - Windows, 무료인 경우 : Linux 계열 (Red hat 계열과 Debian 계열)
Red hat 계열 : 자동 설치할 때, 옛날 버전은 yum, 최신 버전 dnf (Amazon Linux는 yum을 사용)
Debian 계열 : 자동 설치할 때, 옛날 버전은 apt-get, 최신 버전 apt (Ubuntu는 apt를 사용)
EC2 실습
AMI (Amazon Machine Image)
- 가상 머신을 아마존에서 미리 만들어놓은 것
- 아마존에서 만든 버전만 사용 가능 (Ubuntu의 경우, 16.04 LTS, 18.04 LTS, 20.04 LTS, 22.04 LTS)
인스턴스 유형
- 가상 머신의 하드웨어 스펙이라고 볼 수 있습니다.
- 좋을수록 많이 비용 비 비쌈 (프리티어는 t2.micro 지원)
AWS에서 사용하는 방화벽
- 보안 그룹 (Security Group) : 호스트 방화벽 ex) Windows 방화벽
- NACL (Network ACL) : 네트워크 방화벽
프로비저닝 된 IOPS SSD는 속도가 빠르며 주로 은행 등에서 사용되고, 콜드 HDD는 속도가 느린 편입니다.
사실 이 부분까지는 했는데 VPC를 설정하지 않아서 인스턴스를 생성할 수가 없습니다.
아래는 VPC를 생성하는 과정을 실습해보도록 하겠습니다.
VPC (Virtual Private Cloud, 가상 개인 클라우드)
- 데이터 센터를 빌려서 사용하는 것과 비슷한 방식
- 가상화된 데이터 센터를 AWS에 구축하는 것
- 네트워크를 만들어야 합니다. (사설 IP Network로 만들어집니다.)
cf. 사설 IP : 10.X.X.X, 172.16.X.X ~ 172.31.X.X, 192.168.X.X CIDR : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
인터넷 게이트웨이 (Internet Gateway, IGW)
VPC와 IGW 연결
* 이해를 돕기 위한 모형도 *
서브넷 (Subnet)
라우팅 테이블 (Routing Table)
EC2 생성
* 스팟 인스턴스 요청 후 실패 기록 *
혹시 따라 하고 계신다면 이 부분은 따라 하지 않으셔도 됩니다. 그리고 왜 안됐는지 이유는 파악 못했는데 아신다면 피드백 부탁드립니다.
스팟 인스턴스 요청을 끄고 다시 진행했습니다.
cd /intel #저는 키 페어, pem 파일을 저 경로에 저장했기 때문에 경로를 여기로 옮겼습니다. ssh -i "hsh.pem" ubuntu@54.183.179.149
sudo apt update #ubunto@ip-10-5-10-31 sudo apt install apache2 #apache2 설치, 물음에 대한 질문은 Y cd /var/www/html sudo mv index.html index.old sudo touch index.html sudo vi index.html #VI창에 들어가서 작성했던 index.html의 코드를 그대로 붙여넣습니다. 확인해보고 오류가 있다면 직접 수정
2-Tier Architecture - GNU Board 설치
sudo apt update sudo apt install vim sudo apt install apache2 #Web Server 설치, 질문의 답은 y sudo apt install mysql-server #Database 설치 (MySQL 설치) sudo muysql -u root -p #MySQL 접속 create database gnuboard; #mysql로 접속되면서 gnuboard라는 DB를 생성 show databases; #DB 확인 create user board@localhost identified by '비밀번호'; grant all privileges on gnuboard.* to board@localhost; #board에게 gnuboard의 모든 테이블에 대한 권한 부여 exit #MySQL 나오기 sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git #필요 언어 설치 cd /var/www/html #게시판 소스 다운로드 시작 sudo git clone http://github.com/gnuboard/gnuboard5 #github에 있는 gnuboard 복제 cd gnuboard5 sudo mkdir data #사용자들이 업로드 할 데이터 디렉토리 생성 sudo chmod 707 data #누구나 읽고 쓰기 가능하도록 설정 sudo apt install net-tools ifconfig sudo service apache2 restart
설치 시 사용자는 board, 비밀번호는 info12#$, DB명은 gnuboard로 입력합니다.
public IPv4 주소 뒤에 /gnuboard5/입력하면 정상적으로 접속이 되는 것을 확인하실 수 있습니다.
3-Tier Architecture - Apache2, MYSQL
Subnet (서브넷)
Public과 Private 두 가지를 만들어 줍니다.
VPC를 선택하는 것은 같지만 아래의 설정이 차이가 있습니다.
Web - GNU Board 설치
sudo apt update sudo apt install apache2 sudo install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git cd /var/www/html sudo git clone http://github.com/gnuboard/gnuboard5 cd gnuboard5 sudo mkdir data sudo chmod 707 data # 사용자 및 다른 사용자에게 읽고 쓰기 실행 권한 설정 sudo apt install net-tools ifconfig sudo service apache2 restart
Database - MySQL 설치
sudo apt update sudo apt install mysql-server sudo mysql -u root -p #MySQL 접속, Password 없으므로 엔터로 진행합니다. create user board@'%'identified by 'info12#$'; #외부 접속이 가능하도록 '%'로 설정 grant all privileges on gnuboard.* to board@localhost; #board에게 gnuboard의 모든 테이블 권한 부여 cd /etc/mysql/mysql.conf.d #MySQL 외부 사용 설정 sudo vi mysqld.cnf #내부의 bind-address 127.0.0.1 부분을 주석 처리 sudo service mysql restart
Host : Public IP:3306
'Cloud > aws' 카테고리의 다른 글
aws - IAM (0) 2022.06.17 aws - Auto Scaling, Load Balancer - 오토 스케일링, 로드 밸런서 (0) 2022.06.17 aws - CLI를 이용한 EC2(Ubuntu) 생성 (0) 2022.06.16 aws - Amazon Luinux, Windows, RDS (0) 2022.06.14 Cloud, aws - S3 (0) 2022.06.09