1. 실습 순서
1) AWS VPC 생성
2) AWS EC2 생성
3) PPK 변환 및 서버 접속 확인
4) EC2 - EBS 연동
5) EC2 - S3 연동
6) ASG 생성 및 부하에 따른 테스트
7) Clear 작업
2. AWS VPC 생성
목표:
- 가상의 네트워크 VPC를 생성
- VPC 의 공간을 서브넷으로 영역 분리
- 인터넷 게이트웨이를 VPC 공간 내 서브넷과 연결

사용할 리전 선택

AWS vpc dashboard 에서 vpc 생성

리소스, 이름, CIDR 등을 설정

VPC 메뉴 중 서브넷 > 서브넷 생성 클릭
* 서브넷: 네트워크에서 주소 공간을 분할하는데 사용. 네트워크를 장치/시스템/접근권한 별로 구분

- 서브넷 이름 설정: test-subnet-01
- 가용 영역: 기본 설정없음 > us-east-2a (vpc 리전 오하이오인 상태)
- IPv4 CIDR 블록 : 10.0.1.0/24

가용영역이 다른 새 서브넷 추가 후 서브넷 생성
- 서브넷 이름 설정: test-subnet-02
- 가용 영역: 기본 설정없음 > us-east-2b
- IPv4 CIDR 블록 : 10.0.2.0/24

test-igw 이름의 인터넷 게이트웨이 생성
* 게이트웨이: vpc 내 리소스 연결에 사용

게이트 웨이 생성 후 vpc 연결 클릭

사용할 vpc 선택 후 인터넷 게이트 웨이 연결 클릭

라우팅 테이블에서 vpc 확인 후 해당하는 라우팅 테이블 ID 클릭

라우팅 편집 > 라우팅 추가 클릭 > 라우팅 편집 후 변경사항 저장
- 0.0.0.0/0 선택: 해당 VPC의 리소스가 모든 대상으로 트래픽을 전달
- 인터넷 게이트웨이 선택
- 생성한 igw 선택

서브넷 연결 클릭 > 우측 서브넷 연결 편집 > 이전에 만든 서브넷 2개를 선택 후 연결 저장 클릭
3. AWS EC2 생성
목표:
- EC2 생성
- 네트워크 설정 (인바운드 규칙, VPC 등) 을 통해 외부 액세스 제어
- 보안 그룹 설정을 통해 SSH는 내 IP로만 접근 가능하고, HTTP 는 모든 IP로 허용해 검색 가능하도록

인스턴스 시작 버튼 클릭

이름 설정: test-server

AMI Amazon Linux를 선택, 인스턴스 유형을 t2.micro 를 선택
*AMI (Amazon Machine Image): 인스턴스를 구성하는데 사용되며 운영체제와 소프트웨어를 구성하는 가상머신

인스턴스를 안전하게 연결하기 위한 키페어 생성
반드시 따로 저장해둘 것!

네트워크 설정 > 편집 > VPC 및 서브넷 정보 설정
- VPC : test-vpc 선택
- 서브넷: test-subnet-01 선택
- 퍼블릭 ip 자동 할당: 활성화
* 퍼블릭 ip: 활성화시 외부 인터넷과 통신 가능, 비활성화시 외부에서 액세스 불가

보안그룹 생성 선택 > 보안 그룹 관련 설정 변경
- 보안 그룹 이름: test-server-sg
- 설명: 2023.11.02 test server secret group

인바운드 보안 그룹 규칙 설정
- 보안 그룹 규칙 1 유형 : ssh Source : 내 IP
- 보안 그룹 규칙 2 유형 : ssh Source : 10.0.0.0/16
- 보안 그룹 규칙 3 유형 HTTP Source type : Anywhere
* 인바운드 보안 그룹 규칙: EC2로 진입하는 네트워크 트래픽 제어, 특정 IP 주소에서의 연결만을 허용

인스턴스 생성완료 화면
4. PPK 변환 및 서버 접속 확인
목표:
- putty 키타입인 .ppk 키파일 생성
- 앞서 만든 서브넷 환경의 서버 접속 확인
- 웹 서버 구현
1) PPK 변환
1) puttygen을 검색하고 실행
2) Load 버튼을 클릭 후 우측 Putty Private key files 를 클릭하고 All Files 선택
3) 키 페어 파일 선택후 확인 클릭
4) Save Private key 클릭 후 이름을 test-server-key.ppk 로 입력 후 저장
2) 서버 접속 확인

putty 실행 후 Putty Hostname 란 입력
- Putty Hostname: ec2-user@[인스턴스 IP]
- Hostname 은 선택한 AMI 에 따라 다르며 ubuntu 환경에선 ec2-user 대신 ubuntu 입력

좌측 SSH 선택 > Auth 클릭 > Browe > 이전에 저장된 test-server-key.ppk 파일 선택 (실행마다 확인)
$ sudo yum update -y : 시스템 패키지 업데이트
$ sudo yum install httpd -y : Apache HTTP 서버 소프트웨어를 설치, 웹 어플리케이션 설치
$ sudo service httpd start : Apache HTTP 서버를 시작
$ sudo -i : 슈퍼 유저 또는 root 사용자로 로그인, 모든 명령어 사용 가능
$ echo Web Server 1 > /var/www/html/index.html : 텍스트 "Web Server 1"을 /var/www/html/index.html 파일에 쓰는 명령어
웹 서버 구현 명령어

퍼블릭 IPv4 주소를 검색하면 "Web Server 1" 텍스트가 표기된 모습

실습 결과
5. EC2 - EBS 연동
목표:
- 앞서 만든 서브넷 환경의 서버 접속 확인
- 웹 서버 구현

EC2 좌측 메뉴 중 EBS 볼륨 클릭 후 볼륨 생성 클릭
연결할 서브넷과 가용영역 선택

리소스를 구분할 수 있도록 키에는 Name 값에는 test-ebs 을 입력

볼륨 선택 > 우측 작업 클릭 > 볼륨 연결 클릭

인스턴스 선택 후 볼륨 연결 클릭
$ sudo -i : 슈퍼 유저 또는 root 사용자 권한 로그인
$ lsblk : 사용 가능한 블록 장치 표시
$ mkfs -t xfs /dev/xvdf: /dev/xvdf 장치 XFS 파일 시스템 생성
$ mkdir /data : data 디렉토리 생성
$ mount /dev/xvdf /data : EBS 볼륨이 /data 디렉토리에 연결, /dev/xvdf 장치 /data 디렉토리에 마운트. 완료 후 EBS 볼륨의 내용이 /data 디렉토리에 나타남
$ df -h : 디스크 정보 및 사용량 표시
인스턴스 접속 후 명령어를 통해 EBS 설정

실습 결과
6. EC2 - S3 연동
목표:
- 앞서 만든 서브넷 환경의 서버 접속 확인
- 웹 서버 구현

서비스 검색창에서 S3 검색 > 버킷 만들기 클릭
버킷이름, AWS 리전 설정

객체 소유권 설정 수정
ACL 활성화됨 / 버킷 소유자 선호 선택
* ACL: ACL 을 통해 S3 버킷 내 객체에 대한 권한을 정의, 객체에 대한 액세슥 권한 (CRUD 수행권한) 결정

모든 퍼블릭 엑세스 차단 선택 후 버킷 만들기 선택
우리가 테스트할 버킷은 퍼블릭한 자료를 업로드할 테스트 용으로 외부 엑세스 허용
보안이 필요한 자료의 경우 엑세스 차단을 해지해선 안됨!!!

생성한 버킷 이름 클릭 > 파일추가 후 사진 업로드 > 우측 하단 업로드 클릭

사진 클릭 > 객체 작업 > ACL 로 퍼블릭으로 설정

객체 URL 을 통해 사진 접근 성공
sudo -i
echo "<html>" > /var/www/html/index.html
echo "<body>" >> /var/www/html/index.html
echo "<img src=\"[객체URL]">" >> /var/www/html/index.html
echo "</body>" >> /var/www/html/index.html
echo "</html>" >> /var/www/html/index.html
EC2 인스턴스로 접속한 뒤 명령어로 웹서버 설정

웹 서버 출력 완료
7. ASG 생성 및 부하에 따른 테스트
목표:
- ASG 에 적용될 시작템플릿 생성
- EC2의 가용성을 자동으로 관리하는 ASG 생성
- ELB 적용해 트래픽 증가시 서버를 증설하도록 설정
- 과한 트래픽을 가하고 서버가 증설되는지 테스트

EC2 > 시작 템플릿 > 시작 템플릿 생성 > 다음과 같이 설정
시작 템플릿 이름 설정: test-tem
템플릿 버전 설명: test-tem
Auto Scaling: 체크

더 많은 AMI 찾아보기 클릭 > 기본 Amazon 리눅스 선택

인스턴스 유형에 프리티어 유형 선택 > 이전에 사용한 키페어 선택

아래와 같이 네트워크 설정
- 시작 템플릿: 포함되지 않음
- 보안그룹: 보안그룹 생성 > 보안 그룹 이름 "test-asg-sg" 입력
- 설명: ssh
- vpc: 기존에 생성한 vpc 선택 (test-vpc)

인바운드 보안 그룹 규칙 ssh 선택, Source type 에 Anywhere 선택

하단 고급 네트워크 구성 클릭 > 네트워크 인터페이스 추가 클릭> 디바이스 인덱스 0 입력 후 생성 클릭

EC2 > Auto Scaling > Auto Scaling 그룹 생성
- ASG 그룹 이름: test-asg
- 시작 템플릿: 앞서 생성한 템플릿 (test-tem)

기존에 생성한 VPC 와 subnet 선택 후 다음 클릭

새 로드 밸런스 연결 > ALB 선택 > Internet-facing 선택

리스터 및 라우팅 설정 > 대상 그룹 생성
새 대상 그룹 / Name 태그: test-asg-lb-tg 입력 후 다음 버튼 클릭

그룹 크기 지정 (최대 용량 5)

대상 추적 크기 조정 정책 클릭, 평균 CPU 사용률, 대상값 50 확인 후 하단 다음 클릭

태그 추가에서 키 : Name, 값: test-asg 입력 후 Auto Scaling 그룹 생성

인스턴스 목록 중, 본인이 생성한 ASG가 배포한 인스턴스의 ID를 복사 후 메모장에 저장

탄력적 IP 클릭 > 탄력적 IP 주소 할당 클릭> 태그 키: Name: test-EIP 입력> 할당 클릭

EIP 선택 후 우측 상단 작업 클릭, 탄력적 IP 주소 연결 클릭

이전에 생성한 test-asg 선택 후 연결 클릭
# 1. 슈퍼 유저 로그인
$ sudo -i
# 2. # Amazon Linux Extras로 EPEL 저장소를 설치
$ amazon-linux-extras install -y epel
# 2-1. 위 명령어 안되면 명령어
$ yum install epel-release
# 3. stress 패키지를 설치 / CPU나 메모리 부하 줄 때 사용
$ yum install -y stress
# 4. 2개의 cpu 코어에 600 초간 부하 생성
$ stress –c 2 –t 600
# 4-1. 안되면
$ sudo stress --cpu 2 --timeout 600s
putty 로 EIP 접속 후 부하 발생

인스턴스가 증가함을 확인
8. Clear 작업
목표:
- 테스트에 사용한 이제는 불필요한 자원 제거
1. 오토스케일링 그룹 삭제
2. 로드밸런서 삭제
3. 시작 템플릿 삭제
4. 인스턴스 삭제
5. 키페어 삭제
6. 볼륨 삭제
7. VPC 삭제
'백앤드 개발 > Infra' 카테고리의 다른 글
[AWS] Putty Fatal Error: No supported authentication methods available (2) | 2023.11.02 |
---|---|
[AWS] AWS Certified Practioner 합격 후기 (비전공, 독학) (1) | 2021.03.07 |
[AWS] AWS 프리티어 한도 / AWS 요금 조회 (0) | 2021.03.05 |