2024. 11. 25. 10:37ㆍAWS
계정 ID : 347382469393 , IAM USER : sk207-001 , rM5+*')b, region : 서울
서비스 아키텍처
- 서울
이 계정에서 한달동안은 다 주는것이 아니다.
- 수업을 하는 동안은 (2주일) 이 계정이 전부 살아 있다.
> 다음주가 지나면 팀당 하나의 계정만 남긴다.
>> region이 서울로 되어있는 계정만 남아잇다.
>>> 프리티어로 제공되는게 있어서 그걸 사용하면 어느정도는 커버가 된다.
>>>> 나머지는 없어질거다.
>>>>>실습할때 에러가 많이 발생한다.
EC2를 만들어서 푸티라든가, 인텔리제이로 연결한다.
> 수업시간에 하는건 2명꺼에서 연습
>> 실습 : 남은 계정으로 실습
>>> 도메인 구입 : 하루정도 이야기하고 결정.
https서비스 : ACM, Route53이 필요하다.
Load balancer : 분기해주는 것
EC2 : 가상 컴퓨터 환경하나, 인프라 환경하나 제공하는것 ( 리눅스 하나만드는 것)
S3 Bucket : 파일 업로드 서버역할이 필요해서 빼주신다.
RDS : 외부에서도 사용가능 ( cost가 높다 )
[ EC2 ]
1. git, JDK, 프로젝트 설치
2. git, node ...
3. ....
- 이거 하나하나가 public IP가 있다.
- 외부에서 브라우저로 띄워놓고 사용하는것도 가능하다. ( 연결해서 )
문제점 : 인스턴스를 죽였다가 살리면 IP가 바뀐다. > 그래서 ' 탄력적 IP라는 것이 있다. ' 하지만 도입안함
EC2 연결 -> 설치 -> 확인
RDS : mariaDB설치 > EC2에서 연결해서 사용할거다 > RDS를 외부로 노출시킬거다
파일 업로드 : S3 -> 파일 업로드 하면 업로드된것이 올라가고 https링크가 만들어진다.
2가지를 해야한다.
1. AWS설정
2. Java Application 파일업로드하면 올라가야하는것 설정
EC2앞에 ELB를 붙여서 어떤 경로로 들어오면 (ex)api/v1/product ...> 이런것을 분기할 수 있다. )
즉, 원하는 경로에 따라 원하는 동작을 하게끔 설정
-> 그 후 , 도메인 구매 Route53을 도입해서 기존의 시스템 만들어놓은 구조에
ELB와 Route53을 연결할거다.
https는 안되고 http까지는 된다.
-> Route53을 만들어놓은이유 : ACM (인증 매니저) https 인증서비스 발행해주는것을 붙여준다 (고맙게도 공짜)
> 이걸 사용하면 https가 된다.
>> browswer에서 구매할 도메인 치고들어가면 올린 프로젝트가 뜬다.
----------------------------------------------------------------초급---------------------------------------------------------------------------
----------------------------------------------------------------중급---------------------------------------------------------------------------
ECS - docker supported
EKS - kubernetes supported
두 개념 모두 container orchestration service
1. 테라폼
2. 쿠버네티스
- 인프라를 자동으로 구축해주는 풀
- yml하나만 작성해놓는다.
> 알아서 이 시스템 다 깔아준다.
>> 네트워크 다 설치하고
>>>모니터링 할거야 -> 모니터링 다 해준다.
- 엔서블 : 인프라 전문가 , 조금 애매하다 (사용하기에)
> 본인 영역이 아닌이상 사용하기 어렵다
>> 이런쪽에 대세이긴한데.
"이번 프로젝트는 나중에 MSA구조를 가고싶어 했던 프로젝트이다. 그래서 처음부터 도커를 사용했다"
ECS를 사용하면 도커 이미지를 바로 사용할 수 있다.
> 도커 허브에 올라간 이미지를 컨테이너로 바로 등록할 수 있다.
>> 여기에 ELB를 여기 붙여준다. = https로 서비스가 된다.
ECR : 이미지를 만들면 도커허브에 올리는데 이이 이미지를 AWS에 올린다.
> aws내에서 이 이미지를 써야하는 상황에서 전부 사용가능하다.
Fargate : 인프라 없어 : 도커 바로 실행해서 사용가능한데 , 정액제이다
EKS : 완전 관리형 : 쿠버네티스의 인증을 받아서 쿠버네티스의 서비스를 사용할 수 있다.
- aws들어가면 region설정부터 해야한다.
비용자체가 달라지고 네트워크망 자체가 달라진다.
> global로 쓰는애를 제외하고 region체크부터 해야한다.
- 아주중요함
교육 끝나고 혼자 공부하기위해선
구글 계정을 여러개 만들어서 그 계정으로 프리티어를 신청해서 쓰다가 계정을 해지하면된다.
[ AWS 사용 ]
1. 로그인
2. region 정보 수정
3. EC2 - 인프라 환경만 만들어주는것 : 컴퓨팅 환경
- ECS, EKS - 플랫폼 쪽으로 들어가는것 여기 들어가는게 아님
4. 인스턴스 - 내가 어떤 컴퓨터를 만들고싶어~
5. ECS설정에서 가장 중요한것 : 로드발란스, 오토스케일링(시스템 모자랐을때 확장어떻게 할거냐하는것)
6. 인스턴스 보면 아무것도 없다 > 인스턴스 시작
>> Quick Start에 있는것이 template이다.
= 가장 많이 사용하는것 : 리눅스
7. 인스턴스 유형에 보면 t2, t3 등등이 있는데 요금제가 다르다. t2.micro
t2.micro
8. 키페어 : 원격에서 접속할 때 사용한다.
> 윈도우 : 쁘띠? 를 사용해서 사용가능하다.
> 인텔리제이 : ssh로 바로 연결이 가능하다.
키가있어야지만 연결된다.
9. D드라이브 : aws 폴더 생성
10.
새로운 키페어 생성 RSA : MyKey
- 윈도우 : ppk만 사용가능
- 인텔리제이도 연결해서 사용하고, 리눅스나 어디서든 막 쓰고싶다 : .pem을 가져다가 변환해서 사용하는것이 좋다.
11. pem이 자동으로 다운로드된다. ( aws폴더에 넣어놔라 )
12. SSH트래픽허용, 위치무관
- VPC설정해야한다.
> 에러 : VPC설정
>> 새 기본 VPC 생성 > 네트워크 기본 생성
>>> vpc가 하나 만들어진다.
>>>> 이상태에서 아래 진행, VPC지우면 복구안됨 ( 로드발란서 쓸때도 필요하다 )
>>>>> VPC : 가상 네트워크
13. 인스턴스 생성
14. 인스턴스를 시작했습니다.
15. 인스턴스를 다시 확인해보면 이름없는 것이 하나 만들어져있다.
- MyServer로 명명하고 클릭
> 인스턴스 정보가 나온다.
public IPv4주소가 있다. 인스턴스를 내렸다 올렷다 하면 바뀐다.
>> 실행중인지 확인
>>>연결 > 연결 유형 EC2 Instance Connect를 사용하여 연결
>>>> 사용자 이름 잘 기억해놔라 ec2-user > 연결
>>>>> 터미널 환경이 뜬다.
>>>>>> pwd : 현재 경로 확인
>>>>>> 여기에 폴더 생성, 설치도 가능
>>>>>>> 인스턴스에 문제가없다.
윈도우로 사용할때 putty 다운
- 다운 X86
만약, 자신이 없다면? IntelliJ 오픈
> Tool/SSH Start
>> host : 인스턴스 - 퍼블릭 IPv4주소
>> userName : ec2-user
>> Authentication type : Key pair
>> private key file - 아까 저장한 폴더에 넣어놓은 MyKey.pem
ok를 누르면 밑에 뜬다. 터미널에 새한마리
- 윈도우 인텔리제이가 없을때 : putty를 써야한다.
- 맥 : ssh -i ~/Downloads/my-key.pem ec2 user@S4.123.456.78 > 맥은 이렇게 써야함
16. putty설정
윈도우에서 연결하려면 .ppk파일이 필요하다
- 메모장에 인스턴스 정보를 적어놔라
> puttyGen
- Load - 모든파일보기 Mykey -> MyKey.ppk로 저장할 것이다.
- private Key로 저장할거다 : Save private Key
- 폴더 살펴보면 MyKey.ppk파일이 만들어져있다.
여기까지가 ppk파일 만들어준거다
17. putty실행 > PuttyConfiguration -> SSH/Auth/Credential : private key file = aws/Mykey.ppk
> 인스턴스 public IP : Session/Host Name 에 입력
>> Open : Accept -> login해라 : ec2-user로 로그인하면 리눅스에 로그인한거다.
일단 닫고 Putty를 실행해보면 다 지워져있을거다. 이럴떄는 나중에 연결했을때 제대로 되었다면
Credential에 키넣고 Session에 IP추가했던것 넣고 Save해준다. MyServer > 그리고 Putty를 띄우면 보인다.
윈도우 연결이 바로됨 그리고 로그인하고 사용하면됨
- GPT물어보자 EC2에 nginx설치해서 띄우고싶어
17. sudo yum update -y 명령어 입력
> sudo yum install -y nginx
>> sudo systemctl start nginx
>>> sudo systemctl enable nginx > 실행
>>>> 세션을 죽여도 nginx는 살아있다.
인스턴스에 보면 퍼블릭 IP를 사용해서 브라우저에 띄워도 아무것도 안뜸
> 왜그렇냐? 얘가 기본적으로 열려있는게 22번 쁘띠연결하는것 ssh연결하는 포트만 열려있고 나머진 닫혀있다.
>> 인스턴스/보안이라는 탭이 있다.
>>> 22번만 보인다. > 인바운드 규칙은 22번만 받아들이게 되어있다.
>>>> 이 보안을 80포트를 열어줘야한다. ( nginx 포트는 80 )
>>>>> 그룹들어가서 인바운드 규칙, 아웃바운드 규칙이 나온다.
>>>>>> 인바운드 규칙 편집 -> 규칙 추가
>>>>>>> 사용자 지정 TCP 포트번호 80 AnyWhere 0.0.0.0/0 -> 규칙 저장
>>>>>>>> 다시 IP주소로 호출하면 nginx 초기화면이 떠있는걸 볼 수 있다.
>>>>>>>>> 보안그룹으로 들어가서 확인하면
여기까지가 EC2에 인스턴스 만들고 인스턴스 생성하고 외부에서 연결하는것까지
만들어놓은 인스턴스 지우고 실습
> 키페어는 지우지마라
- 탄력적 IP : EC2 서버 이용시 IP변경 문제(stop -> 재시작)
Elastic IP를 이용하면 고정적 IP(유료)
> 아이피를 고정시켜준다.
- 탄력적 IP주소 할당/ 네트워크 경계 그룹 : region 설정 > 이 아이피를 외부에 노출하겠다.
> 탄력적 주소 연결 = 인스턴스와 연결할거다 > 탄력적 IP주소가 공개 IP가 된다. > 인스턴스를 올렸다 내려도 IP가 변경되지 않는다. > 개인적으로 실습할때만 사용하면 된다.
- EBS : 쉽게말하면 하드디스크이다.
> EC2인스턴스를 만들면 범용SSD, 프로비저닝된 SSD 등등> 크기를 늘리거나 유형을 변경하거나 할 때 사용.
- AutoScailing Group : 자동으로 크기를 조정해주는 기능
> 배포할때 여러개 방법이 있는데 빈즈토크라는것이 있다. Beanstlak
>> 이것을 이용해서 도커를 사용할 수 있다.
>>>이것을 하면 RDS나 이런것을 다 포함한다.
- 플랫폼에 보면 어디다 뿌릴건지 선택할 수 있다.
> Boot로 된 프로젝트가 있다? => Java -> .jar파일 주면 돌아간다.
> React = node로 설정하고 올려주면 실행된다.
>> 이것을 설정할 때 DB까지 선택할 수 있다.
>>>즉, 한방에 원스톱 설정이다.
>>>> 그런다음 framework바꿔치기 해줄 수 있다.
>>>>> 그런데 10월부터 바뀌었다. > elestic beans를 이용해서 배포를할때 오토 스케일링을 어떻게 할지 명시를 해줘야한다. 즉, auto Scaling설정이 필요하다. > 플랫폼에 Docker가 있다. > 도커를 이용할 수 있음 ( 이미지를 여기에 사용가능 )
>>>>>>작은 규모의 프로젝트를 배포할때는 Elestic beans를 이용해서 배포하면된다.
< React의 경우 >
- 비용이 많이 나와서 권장하는 방법은 아니다.'
> AWS Amplify
>> 깃헙주소만 하나 해주면 https까지 자동으로 만들어준다.
>>> update도 자동으로 한다. CI/CD필요없다.
>>>> 자동으로 다 해줌
>>>>>비용도 만만치 않고 추가할 수 있는것이 별로 없다.
>>>>>> 프로젝트만 연결해주면 배포까지 다 된다.
>>>>>>> 디버깅이 잘안보인다.
- AWS lightsail = 웹어플리케이션에서 AWS를 시작하는 가장 쉬운 방법
> 제일 저렴하고 편리하다.
>> 얼마전에 서울이 추가가되어서 이것을 이용하면 설정해주고 비용설정하면 된다.