Study/seSAC 금천 4기

클라우드_3일차_241007

지찬씌 2024. 10. 11. 09:11

웹 서비스 환경 구성

 

 

 

1. 루트 사용자로 로그인 후 IAM 사용자 생성

 

 

 

2. 새로 생성한 admin 계정으로 로그인 후 네크워크 생성(=VPC 생성)

 

 

 

 

 

 

=> 현재까지 완료한 내용.

     이처럼 VPC 생성 마법사를 통해 VPC 내부 서브넷, igw, 라우팅을 설정하는 방법도 알아야 하지만,

     저번처럼 직접 설정하는 방법 또한 아는 것이 중요.

 

 

 

3. 보안그룹 생성 - HTTP(80), SSH(22) port 에서의 접근을 허용하도록 생성

 

 

 

 

 

4. 웹 인스턴스 생성

 

 

 

 

 

 

 

- 사용자 데이터에 아래 내용 입력

   => 사용자 데이터 : 인스턴스 최초 생성 시에 실행하는 프로그램. 초기 설정에 대한 내용이 들어간다.

 

#!/bin/sh

amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2         <= lamp == linux aphchi mysqlmariadb php
yum -y install httpd php-mbstring


# Start the web server
chkconfig httpd on
systemctl start httpd

# Install the web pages for our lab
if [ ! -f /var/www/html/immersion-day-app-php7.tar.gz ]; then
cd /var/www/html
wget https://aws-joozero.s3.ap-northeast-2.amazonaws.com/immersion-day-app-php7.tar.gz  
         => 경로에 저장된 php파일 다운.
tar xvfz immersion-day-app-php7.tar.gz
         => tar 명령어로 압축 해제
fi

cat <<EOF > /var/www/html/get-index-meta-data.php
<?php
  \$hostname = gethostname();
  \$results = explode(".", \$hostname);
  echo "<table style='width:100%'>";
  echo "<tr><th style='width:30%'>Meta-Data</th><th style='width:70%'>Value</th></tr>";
  echo "<tr><td>Private IP DNS Name</td><td>".\$hostname."</td></tr>";
  echo "<tr><td>Private IP</td><td>".getHostByName(\$hostname)."</td></tr>";
  echo "<tr><td>Region</td><td>".\$results[1]."</td></tr>";
  echo "</table>";
?>
EOF
        => 압축 해제된 내용에 대해 덮어쓰기 하는 코드

# Install the AWS SDK for PHP
if [ ! -f /var/www/html/aws.zip ]; then
cd /var/www/html
mkdir vendor
cd vendor
wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip
unzip aws.zip
fi

# Update existing packages
yum -y update

 

 

 

- 인스턴스의 퍼블릭 IPv4 주소로 접속이 가능함을 확인.

 

 

 

 

 

 

5. 인스턴스로 SSH 접속

 

- 과정

  SSH 클라이언트 실행 -> 키 페어 등록 -> 인스턴스의 public IP / 22포트로 접속 

 

- 기본 사용자 이름

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/managing-users.html

 

 

 

 

 

6. (웹 서버 설정이 모두 끝난 상태에서) AMI 생성

 

 

=> 생성한 webserver-ami 이미지를 이용해서 웹 서버 인스턴스를 public-subnet-c 서브넷에 추가로 생성하면...

     사용자 데이터 항목에 입력했던 스크립트(프로그램 설치 및 설정)를 생략할 수 있다!

 

 

 

 

 

7. 로드밸런서 구성

 

- 동일한 기능(내용)을 제공하는 인스턴스가 현재 2개 실행되고 있다.

  그러나 개별 인스턴스 주소로 접속하는 경우, 이용의 불편과 부하 집중되는 문제가 발생할 수 있다.

   => 이는 로드밸런서를 이용해서 서비스 되도록 수정하면, 부하 분산과 서비스 편의를 제공할 수 있다.

 

 

 

- 애플리케이션 로드밸런서 생성

 

 

 

 

- 보안 그룹 신규 생성

 

 

 

 

- 대상 그룹(target group) 생성 후 로드밸런서 생성

 

 

 

 

- 로드 밸런서가 활성화되면 로드 밸런서의 DNS 주소로 접근 (두개의 인스턴스가 교대로 응답하는 것을 확인)

 

 

 

 

 

 

8. 로드 밸런서를 통해서만 서비스를 이용할 수 있도록 제한

 

- 현재 사용자가 로드 밸런서를 이용하지 않고 개별 인스턴스로 직접 접근이 가능하다.

  => 모든 요청을 로드 밸런서를 통해서만 처리하도록 제한하기 위해서는....

       개별 인스턴스에 로드 밸런서로부터 오는 HTTP(80)만 허용하도록 수정한다.

       이 말은 보안 그룹(webserver-sg)를 수정해야 한다는 것이다.

 

 

 

 

 

 

9. 모니터링 기능을 추가

 

- Amazon CloudWatch 

https://aws.amazon.com/ko/cloudwatch/

 

 

- Amazon SNS (Simple Notification Service)

https://docs.aws.amazon.com/ko_kr/sns/latest/dg/welcome.html

 

 

 

- SNS 콘솔에서 topic(주제)을 설정하고 구독, 구독자에게 메세지 발송

 

 

 

 

 

- webserver 인스턴스에 경보를 설정

 

 

 

 

- 브라우저를 통해 로드밸런스 주소로 접속한 후 LOAD TEST 를 클릭.

   => CPU사용률이 증가하는지 확인하고, 경보 이메일이 오는지 확인

 

 

 

 

 

10. 오토 스케일링(Auto Scailing)

 

- 앱의 부하(load)를 처리할 수 있도록 EC2 인스턴스를 자동으로 증가 또는 감소시켜주는 서비스

 

 

 

 

- 시작 템플릿 생성

 

 

 

 

- 대상 그룹(target group)에 등록된 대상을 제거

   => 로드밸런서의 대상 그룹을 오토 스케일링으로 자동으로 생성되는 인스턴스를 사용할 것이기 때문에

        로드밸런서의 대상 그룹을 지정할 필요는 없다.

 

 

 

 

- Auto Scailing 그룹 생성

 

 

 

 

- 브라우저로 로드밸런스 주소로 접근하여 LOAD TEST 클릭

 

 

 

 

 

11. 리소스 정리 (순서 중요!!!!!)

 

- Auto Scailing 그룹 용량을 0으로 조정

 

 

 

- Auto Scailing 그룹 삭제

 

 

 

 

- 시작 템플릿 삭제

 

 

 

- 로드밸런서 삭제

 

 

 

 

- 대상 그룹 삭제

 

 

 

 

- 인스턴스 종료

 

 

 

 

- (AMI) 이미지 삭제

 

 

 

 

- AMI와 연결된 스냅샷 삭제

 

 

 

 

- 키페어, 보안그룹 삭제 

 

 

 

 

- VPC 삭제

 

 

 

 

- SNS 구독 삭제

 

 

 

- SNS 주제 삭제

 

 

 

- 경보 삭제

 

 

 

- 사용자(admin) 계정 삭제

'Study > seSAC 금천 4기' 카테고리의 다른 글

클라우드_4일차_241008  (1) 2024.10.15
클라우드_5일차_241010  (0) 2024.10.14
클라우드_2일차_241002  (0) 2024.10.10
클라우드_1일차_241001  (0) 2024.10.08
컨테이너 Orchestration_3일차_240926  (3) 2024.09.30