ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws - EC2, VPC, 2-Tier, 3-Tier Architecture
    Cloud/aws 2022. 6. 13. 01:23

    aws

    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 실습

    EC2 검색
    인스턴스 시작을 눌러줍니다.
    사용할 OS를 선택, ubuntu를 선택해줍니다. 버전은 20.04 LTS를 선택합니다.

    AMI (Amazon Machine Image)

    - 가상 머신을 아마존에서 미리 만들어놓은 것

    - 아마존에서 만든 버전만 사용 가능 (Ubuntu의 경우, 16.04 LTS, 18.04 LTS, 20.04 LTS, 22.04 LTS)

     

    기본적으로 선택 되어있는 t2.micro 사용

    인스턴스 유형

    - 가상 머신의 하드웨어 스펙이라고 볼 수 있습니다.

    - 좋을수록 많이 비용 비 비쌈 (프리티어는 t2.micro 지원)

     

    키 페어 이름이 비어있을텐데요. 새 키 페어 생성을 눌러줍니다.
    RSA 공개키, 프라이빗 키 파일 형식은 .pem 선택해줍니다.
    파일이 다운 받아지는 것을 확인합니다.

     

    아직 이 부분은 기본 설정입니다.보안 그룹 설정에 체크를 하면 인바운드 보안 그룹 규칙이 활성화 됩니다.
    보안 그룹 규칙 1의 유형은 ssh, 소스 유형은 내 IP로 설정하고, 규칙 2의 유형은 HTTP, 소스 유형은 위치 무관으로 설정해줍니다.

    AWS에서 사용하는 방화벽

    - 보안 그룹 (Security Group) : 호스트 방화벽 ex) Windows 방화벽

    - NACL (Network ACL) : 네트워크 방화벽

     

    범용 SSD gp2 기본으로 설정된 것을 일반적으로 사용하며 이번에도 사용할 예정입니다.

    프로비저닝 된 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

    VPC를 검색 후에 선택해줍니다.
    Create VPC를 선택해줍니다.
    IPv4 CIDR를 설정해줍니다.
    성공적으로 생성된 것을 확인할 수 있습니다.

     


     

    인터넷 게이트웨이 (Internet Gateway, IGW)

    좌측에 인터넷 게이트웨이 선택
    현재는 없는 것으로 표시됩니다. 인터넷 게이트웨이 생성을 눌러줍니다.
    알아볼 수 있도록 이름을 설정해줍니다.
    성공적으로 생성 되었습니다.

     


     

    VPC와 IGW 연결

    인터넷 게이트웨이를 선택하고 우측에 작업 버튼을 누르고 VPC에 연결 버튼을 눌러줍니다.
    사용 가능한 VPC에서 아까 만들었던 hsh_vpc를 선택 후 인터넷 게이트웨이 연결을 눌러줍니다.
    성공적으로 연결이 완료되었습니다.

     

    * 이해를 돕기 위한 모형도 *

    IP를 설정할 때 Public은 10.N.10.0을 사용하고, Private은 10.N.20.0을 사용합니다.

     


     

    서브넷 (Subnet)

    좌측의 서브넷을 선택합니다.
    서브넷 선택 후 서브넷 생성 버튼을 눌러줍니다.
    VPC를 선택해줍니다.
    서브넷 이름을 설정해주고 public이기 때문에 IPv4 CIDR 블록도 위의 내용에 따라 10번을 사용하는 구조를 입력해줍니다.
    성공적으로 서브넷이 생성되었으며, 우측의 작업 버튼을 눌러 서브넷 설정 편집을 눌러줍니다.
    자동 할당 IP 설정에 퍼블릭 IPv4 주소 자동 할당 활성화를 체크해주면 Public 서브넷으로 변환됩니다.

     


     

    라우팅 테이블 (Routing Table)

    좌측의 라우팅 테이블을 눌러줍니다.
    좌측의 라우팅 테이블 생성을 누르고, 이름 설정, VPC를 선택 후 라우팅 테이블 생성을 눌러줍니다. 그리고 아래 서브넷 연결 메뉴를 눌러줍니다.
    명시적 연결이 없는 서브넷이 있는데 우측에 서브넷 연결 편집을 눌러줍니다.
    이용 가능한 서브넷을 선택하고 하단의 연결 저장을 눌러줍니다.
    명시적 서브넷 연결에 표시되며 서브넷 연결을 업데이트 합니다.

     


     

    EC2 생성

    VPC와 서브넷을 넣어줍니다. 아래의 조건들은 위의 내용과 동일합니다.

     


    * 스팟 인스턴스 요청 후 실패 기록 *

    혹시 따라 하고 계신다면 이 부분은 따라 하지 않으셔도 됩니다. 그리고 왜 안됐는지 이유는 파악 못했는데 아신다면 피드백 부탁드립니다.


     

    스팟 인스턴스 요청을 끄고 다시 진행했습니다.

    성공적으로 인스턴스를 시작했습니다.
    인스턴스의 상태가 실행 중인 것을 확인할 수 있습니다.
    인스턴스에 대한 요약
    연결 탭을 클릭해줍니다. 그리고 아래 4개의 메뉴 중에 SSH 클라이언트를 클릭해줍니다.
    키 파일의 이름과 위치를 확인합니다.
    권한 설정을 위해 키 파일 우클릭 > 속성 > 보안 > 고급으로 들어갑니다.
    상속을 모두 제거합니다.
    추가를 눌러 사용하고 있는 PC의 계정 ID를 입력하고 이름 확인을 눌러줍니다..
    성공적으로 입력되었으며 확인 버튼을 눌러줍니다.
    기본 권한을 읽기 및 실행, 읽기만 체크해줍니다.
    그룹 또는 사용자 이름에 입력했던 ID가 들어간 것을 확인하고 확인 버튼을 눌러줍니다.
    아래의 Public IP를 복사합니다.
    라우팅 테이블에 다시 들어가서 대상 IP는 0.0.0.0/0을 입력하고 인터넷 게이트웨이를 대상으로 활성화 시켜줍니다. 변경 사항 저장
    라우팅이 활성화 된 모습

     


     

    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의 코드를 그대로 붙여넣습니다. 확인해보고 오류가 있다면 직접 수정

    EC2 public IPv4 주소를 주소창에 넣어주시면 됩니다. 접속 완료.


    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/입력하면 정상적으로 접속이 되는 것을 확인하실 수 있습니다.

    성공적으로 GNU Borad에 접속하는 것을 확인할 수 있습니다.

     


     

    3-Tier Architecture - Apache2, MYSQL

    SSH의 CIDR은 0.0.0.0/0으로 설정, 22번 포트는 내 IP로 설정
    MYSQL/Aurora의 CIDR은 10.5.10.0/24로 설정, 3306번 IP는 Public으로 설정 10.N.10.0/24 - Web Server의 IP를 알 수 없기 때문에

     

    Subnet (서브넷)

    Public과 Private 두 가지를 만들어 줍니다.

    VPC를 선택하는 것은 같지만 아래의 설정이 차이가 있습니다.

    IPv4 CIDR의 차이가 있습니다 pulic은 10을 사용하며 webserver에 배치합니다.
    private은 20 사용을 사용하며 db에 배치합니다.

     

    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

    Public IP/gnuboard5/ 접속, 3-Tier Architecture 완료

    '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

    댓글

Designed by Tistory.