-
Notifications
You must be signed in to change notification settings - Fork 6
AWS
egoing edited this page Oct 23, 2020
·
78 revisions
https://bit.ly/_AWS_ 을 브라우저에 입력해서 이곳으로 올 수 있어요.
- aws에 회원가입합니다.
- git을 설치합니다. https://git-scm.com/
- vscode( https://code.visualstudio.com/ )를 설치합니다. portable 버전은 설치하지 마세요.
https://seomal.org 를 통해서 온라인 강의를 찾을 수 있습니다.
<html>
<body>
<h1><a href="index.html">CLOUD</a></h1>
<ul>
<li><a href="s3.html">S3</a></li>
<li><a href="ec2.html">EC2</a></li>
<li><a href="cf.html">CF</a></li>
</ul>
Welcome Cloud
</body>
</html>- https://4.bp.blogspot.com/-ZhQYKf2ZjRA/WOcKP0GEoAI/AAAAAAAABpI/wfTtsdubGlU-sXvezTAR-Fof0i7wXKI9gCLcB/s1600/20170406CloudModels.png
- https://qph.fs.quoracdn.net/main-qimg-f52c3833504e879de23bc9ebcc7344e5.webp
- PaaS에 대한 이해
- 클라우드의 편의성에 대한 공감
- 버킷을 생성한다.
- 버킷으로 파일을 업로드 한다.
- 파일을 다운로드 한다.
- 파일을 누구나 다운로드 할 수 있도록 한다. => 권한 : 모든 퍼블릭 엑세스 차단 해제 => 퍼블릭으로 지정
- 웹서버로서 s3를 사용한다.
- 요금체계 : https://aws.amazon.com/ko/s3/pricing/
- 클래스별 요금 체계 : https://docs.google.com/spreadsheets/d/114szGETmz8zKz0gPPaHBPmx5n0CO5fMzcNbmO0zOc4k/edit?usp=sharing
- 가용성과 내구성
- S3의 클래스 변경
- IaaS에 대한 이해
- 컴퓨터를 임대하는 개념에 대한 이해
- CLI 학습 - https://opentutorials.org/module/3747
- 인스턴스를 생성한다. (ubuntu 20 이상 버전을 사용해야 EC2 instant connect를 설정없이 사용할 수 있습니다)
- EC2 instance connect로 접속한다.
- sudo apt update; sudo apt install apache2 : Apache2 설치
- cd /var/www/html : 웹페이지가 위치하는 폴더로 이동한다.
- 웹사이트에 접속해본다. => 접속이 안된다.
- Security Group을 설정한다. => http, https의 인바운드를 80번 포트로 변경한다.
- 웹서버에 접속한다. => 접속이 된다.
- sudo rm index.html : 웹페이지를 삭제해본다. => 페이지를 찾을 수 없다고 나온다. 이 파일이 홈페이지임을 확인한다.
- sudo nano index.html : 웹페이지를 만들고 다시 접속해본다.
- EC2의 가격 정책을 확인한다.
https://github.com/egoingsb/offline/blob/master/cloudfront.png?raw=true
- Distribution 생성
- Origin : 도메인 지정
- Cache and origin request settings => Create a new policy => Minimum TTL => 300
- http load test global 과 같은 검색어로 도구를 찾아서 속도 테스트를 한다.
- ex : https://tools.keycdn.com/performance
- 직접 EC2에 접속하는 것과 cloud front를 통해서 접속하는 것 사이의 성능 차이를 확인해본다.
- 가격 정책을 확인한다. (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/images/Charges.png)
- sudo chmod 400 key.pem : 윈도우 외의 경우 key.pem 파일의 권한을 400으로 한다.
- remote development 확장 기능을 설치한다. https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
- 왼쪽 하단의 >< 를 클릭한다.
- Remote-SSH : Connect Current Window to Host... 를 선택한다.
-
- Add New SSH Host ... 를 선택한다.
- /Users/username/.ssh/config 파일을 선택한다.
- ssh -i key.pem ubuntu@ip -A 입력 후 엔터
- /User/username/.ssh/config 파일에 저장
backend, middle, php, application server의 개념을 이해한다.
- tail -f /var/www/apache2/error.log : apache, php의 오류를 출력한다.
<html>
<body>
<h1><a href="/index.php">CLOUD</a></h1>
<ul>
<li><a href="index.php?id=S3">S3</a></li>
<li><a href="index.php?id=EC2">EC2</a></li>
<li><a href="index.php?id=CF">CF</a></li>
</ul>
<?php
if(empty($_GET['id'])){
?>
Hello is ..
<?php
} else if($_GET['id'] === 'S3'){
?>
S3 is ...
<?php
} else if($_GET['id'] === 'EC2'){
?>
EC2 is ...
<?php
} else if($_GET['id'] === 'CF'){
?>
CF is ..
<?php
}
?>
</body>
</html>RDS - Database - MySQL
- RDS 인스턴스 생성
- 제품 : MySQL
- 모드 : 프로덕션
- 마스터 사용자 이름과 마스터 암호 입력 - admin, qwertyuiop 권장 (절대로 실제 서비스에 이런 아이디/비밀번호를 이용하면 안됩니다)
- DB 인스턴스 크기 : 버스터블 클래스 - micro
- 스토리지 : 마그네틱
- 가용성 및 내구성 : 대기 인스턴스를 생성하지 마십시오.
- 접속
- apt install mysql-client : mysql client 설치
- EC2 인스턴스의 보안그룹 이름을 RDS VPC 보안 그룹의 허용 엑세스 포인트로 등록
- mysql -uadmin -p -hdatabase-1.cdbrt00yi2pa.ap-northeast-2.rds.amazonaws.com
- 데이터베이스 생성
- CREATE DATABASE mydb;
- 테이블 생성
CREATE TABLE topic(id int NOT NULL, title char(20) NOT NULL, description TINYTEXT);
- 데이터 입력
INSERT INTO topic VALUES(1, 'S3', 'S3 is ..');
INSERT INTO topic VALUES(2, 'EC2', 'EC2 is ..');
INSERT INTO topic VALUES(3, 'CF', 'CF is ..');
# PHP & MySQL
1. sudo apt install php-mysql : php & mysql 연동
1. sudo service apache2 restart : apache2 재시작 - index.php
<?php
$conn = mysqli_connect('database-1.cdbrt00yi2paz.ap-northeast-2.rds.amazonaws.com', 'admin', 'qwertyuiop', 'mydb');
$sql = 'SELECT * FROM topic';
?>
<html>
<body>
<h1><a href="/index.php">CLOUD</a></h1>
<ul>
<?php
$query = mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($query)){
?>
<li><a href="index.php?id=<?php echo $row['id'];?>"><?php echo $row['title'];?></a></li>
<?php
}
?>
</ul>
<?php
if(empty($_GET['id'])){
?>
Hello is ..
<?php
} else {
$query = mysqli_query($conn, "SELECT * FROM topic WHERE id = ".$_GET['id']);
$result = mysqli_fetch_array($query);
?>
<h1><?php echo $result['title'];?></h1>
<?php echo $result['description']; ?>
<?php
}
?>
<?php
print($_SERVER['SERVER_ADDR']);
?>
</body>
</html>- EC2 인스턴스를 이미지를 만든다.
- 더 높은 사양의 인스턴스로 교체한다. 이때 ip 주소가 변경되는데 도메인 주소를 부여하는 것을 통해서 ip 주소의 변동성에 대응 할 수 있다.
- Scale up VS Scale out의 비교
- EC2
- AMI 이미지를 이용해서 인스턴스 두개를 만든다.
- 웹페이지의 내용을 구분할 수 있도록 하나는 1, 하나는 2가 웹으로 출력되도록 한다.
- Target group
- 타겟그룹을 생성한다.
- 타겟 그룹은 ELB에 장착될 인스턴스들을 지정한다.
- 그룹의 이름을 지정한다.
- 인스턴스 2개를 타켓으로 지정한다.
- Elastic Load Balancer
- ELB 생성버튼을 누른다.
- Application Load Balancer를 선택한다.
- ELB의 이름을 지정한다.
- Listener의 포트를 81로 지정한다. : 80번 포트를 여러 요소에서 쓰고 있으므로 차이를 비교 할 수 있게 일부러 80번 포트를 쓰지 않았다.
- VPC는 기본, 기용 영역은 모든 곳을 지정한다.
- 새로운 보안 그룹을 생성한다. 이떄 81번 포트가 개방되어 있는지 확인한다.
- 라우팅 단계에서 대상 그룹을 기존 대상 그룹으로 지정한다.
- 타겟그룹을 지정한다. 이 때 포트가 80인 것에 주목한다. 여기서 80은 origin 쪽의 인바운드 포트의 번호이다.
- ELB가 생성되었는지 상태를 확인한 후에 접속해본다. 이 때 81번 포트로 접속해야 한다. 예: http://hana-elb-578601292.ap-northeast-2.elb.amazonaws.com:81/
- 타겟그룹
- 타겟그룹을 두개 만든다. 그룹 이름은 TG1, TG2
- 각 타겟그룹별로 인스턴스를 하나씩 배정한다.
- ELB
- ELB를 생성한다.
- 리스터에 2개의 타겟 그룹을 붙인다. 이때 가중치를 50%씩 부여한다.
- 가중치를 조절하면서 서비스되는 애플리케이션을 전환한다.
자동으로 인스턴스의 숫자가 변경되도록 하는 기능
-
Launch Configuration
- 시작구성 생성
- 이름, AMI, 인스턴스유형 지정
- 보안그룹은 생성되는 인스턴스의 인바운드 트래픽을 제어하는 것이기 때문에 80번 포트를 지정한다.
-
EC2 AutoScaling
- AutoScaling 생성
- 시작구성으로 전환, 앞에서 생성한 시작구성 지정
- 모든 서브넷 선택
- Configure advanced optionsInfo
- Health check type - ELB도 체크 : EC2는 인스턴스의 건강 상태를 인스턴스 자체적으로 체크하는 것이고, ELB는 ELB에서 request를 해서 정상적으로 리턴하지 않으면 건강하지 않은 것으로 간주하는 설정
- 원하는 용량 1, 최소 용량 1, 최대 용량 2로 지정
- 대상 조정 정책 : 평균 CPU 사용률 50%
-
Launch configuration을 생성한다. - 자동으로 만들어지는 인스턴스의 성능을 설정하는 기능이다.
- 인스턴스 유형은 nano를 사용한다.
- 보안그룹은 특별한 설정을 하지 않는다.
- 키페어를 선택한다.
-
Auto Scaling Group을 생성한다.
- 시작 템플릿으로 되어 있다면 시작구성(launch configuration)으로 전환해서 위에서 만든 Launch configuration을 지정한다.
- 서브넷은 모두 선택한다.
- 원하는 용량은 1, 최소 용량은 1, 최대 용량은 2로 한다.
- 조정정책 => 대상 추적 조정 정책 : 지표유형 평균 CPU 사용률, 대상값 50
- 설정을 완료하면 인스턴스 1개가 자동으로 생성된다. ELB와 상관없이 AutoScaling에 의해서 인스턴스는 만들어진다.