수업37일차 AWS EC2 , RDS , Network , ELB

유동우·2022년 11월 6일
0

※ 인스턴스 중지하면 퍼블릭만 주소 바뀜

vim config

Host web01
Hostname 프라이빗IP
User ec2-user
IdentityFile ~/.ssh/키.pem
ProxyCommand ssh.exe bastion -W %h:%p

Host web02
Hostname 프라이빗IP
User ec2-user
IdentityFile ~/.ssh/키.pem
ProxyCommand ssh.exe bastion -W %h:%p

리눅스에서 사용

Host bastion
Hostname 퍼블릭IP
User ec2-user
IdentityFile ~/.ssh/키.pem

Host web01
Hostname 프라이빗IP
User ec2-user
IdentityFile ~/.ssh/키.pem
ProxyJump bastion

Host web02
Hostname 프라이빗IP
User ec2-user
IdentityFile ~/.ssh/키.pem
ProxyJump bastion

#리눅스에서 ProxyJump를쓰면 bastion에 aws08-key.pem 없어도 됨.

==================================

● 대상 그룹 추가 -> 인스턴스 -> HTTP 3000 -> VPC -> sample-vpc -> web01 , web02 대상그룹추가하고 보류중인것으로 포함 누르기

● 로드 밸런서 생성 -> 애플리케이션 로드밸런서 생성 -> VPC -> sample-vpc -> 가용범위 2a , 2c 모두체크하고
서브넷은 외부로 나올 수 있는 NAT가 존재한 public으로 설정 -> 보안그룹 default , sample-WEB
리스너 및 라우팅에 포트 HTTP ( 80 ) 해주고 대상그룹 aws08-sample-tg 설정 -> 생성

● web01 , web02 에 보안 그룹 3000번 port 추가

● ssh로 web01 , web02 에 들어가서 vim index.html 만들어주기

Welcome to WEB01

>

web01 , web02 에 python -m SimpleHTTPServer 3000

로드밸런서 만든거 DNS 이름 복사해서 web주소에 치면 라운드 로빈되는 웹서버 만들기 끝

※ 상태검사 : 주기적으로 web01 , web02가 잘돌아가고있는지 체크함

■ 로드 밸런싱

클라이언트 --( http 80port )--> 로드 밸런서 --( 3000 port )--> web01 , web02

보안그룹 ssh ( 22 )
HTTP ( 80 )
HTTPS ( 443 )
default ( 3000 )

====================================

데이터베이스 생성

● 파라미터 그룹 생성
RDS -> 파라미터 그룹 생성 -> mysql8.0 -> aws08-sample-db-pg -> sample para group -> 생성

● 옵션 그룹 생성
옵션 그룹 생성 -> aws08-sample-db-og -> mysql -> 8.0 -> 생성

● 서브넷 그룹 생성
서브넷 그룹 생성 -> aws08-sample-db-subnet -> VPC -> sample-vpc ->
가용 영역 2a , 2c 추가 -> private 서브넷 64 , 80 추가 -> 생성

● 데이터베이스 생성
데이터베이스 생성 -> 표준 생성 -> MySQL -> 템플릿 프리 티어 -> aws08-sample-db -> busanit1 ->
인스턴스 구성 버스터블 클래스 db.t2.micro -> 스토리지 20 GiB -> 컴퓨팅 리소스 연결 안함 ->
Virtual Private Cloud -> sample-vpc -> 서브넷 aws08-sample-db-subnet ->
추가구성 파라미터 aws08-sample-db-pg-> 옵션 aws08-sample-db-og -> 생성

================================================

ssh로 web01 , web02 들어가서 mysql 수정

sudo yum install mysql -y // mysql 패키지 설치

데이터베이스 원격 접속하기위해서 데이터베이스 엔드포인트 주소 복사
mysqladmin ping -u admin -p -h aws08-sample-db.cw3czwdcv6oy.ap-northeast-2.rds.amazonaws.com

================================================

스케일업 : 용량이 커지는것

스케일아웃 : 같은용량으로 개수 늘리는것

인스턴트 생성 aws08-exercise-instance -> 키페어 삽입 -> 기존 보안그룹 SSH Accept -> 생성

보안규칙그룹에 WEB Accept 추가 (http , https)

==============================================

● 샘플 프로젝트를 실행하기 위한 서버 환경 구성

ubuntu에서

sudo yum install git -y // asdf를 설치하기 위해 yum 패키지 매니저를 이용하여 Git을 설치한다

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.9.0 // asdf를 GithHub에서 다운받고 설치
echo . $HOME/.asdf/asdf.sh >> ~/.bashrc

source ~/.bashrc // 업데이트 된 bash shell의 설정 파일을 현재 터미널 세션에서 바로 사용가능하게함.

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git // asdf에 Node.js 플러그인을 추가한다.

asdf install nodejs 16.14.0 // asdf를 이용해 Node.js 16.14.0 버전을 설치하고 기본 버전으로 지정
asdf global nodejs 16.14.0

node -e "console.log('Running Node.js ' + process.version)" // 설치한 Node.js 버전이 올바르게 설치되었는지 출력하여 확인.

● Git으로 EC2 인스턴스에 코드 배포

cd /var

#mkdir 명령어를이용해 소스코드를 배포할 디렉터리 생성
#이떄 sudo를 이용해 root 권한으로 명령어를 실행하게 되는데, 이는 /var 디렉터리의 소유권한이
#root로 돼 있기 떄문에 해당 디렉터리에 파일이나 디렉터리를 추가하기 위해서는 root 권한이 필요하기 때문

sudo mkdir www

#코드 관리는 일반 유저인 ec2-user로 처리할 것이므로 /var/www 경로를 ec2-user의 소유로 변경

sudo chown ec2-user www

cd /var/www

#깃허브에서 샘플 프로젝트를 내려받는다
#/var/www/aws-exercise-a 경로에 소스코드를 내려받게된다.

git clone https://github.com/deopard/aws-exercise-a.git
cd aws-exercise-a

cat app.js

#npm은 node package manager로서 Node.js에서 사용하는 의존성 패키지를 쉽게 관리할수있게 도와주는 프로그램
#샘플 애플리케이션을 실행하기위해 package.json 파일에 명시돼 있는 필요한 외부 라이브러리들을 설치

npm install

profile
클라우드 엔지니어가 되고싶은 클린이

0개의 댓글