수업 40일차 AWS 다중서버환경 구축

유동우·2022년 11월 13일
1

홈페이지
┌ 정적 : 글자,그림
└ 동적 : 값입력 -> 결과

┌ 웹서버
└ 웹 애플리케이션서버

웹 애플리케션 구축해보기

클라이언트 정적 웹서버 웹
동적 애플리케이션서버
└---------┘
NGINX

asdf 버전관리 / asdf : 소스관리해줌

호환성,의존성

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

[실습] Ngnix,Phusion Passenger 설치 및 서비스

cd /var/www

wget http://s3.amazonaws.com/phusion-passenger/releases/passenger-6.0.12.tar.gz

※ ┌ wget : 파일
└ curl : 웹문서

sudo mkdir /var/passenger

sudo chown ec2-user /var/passenger

tar -xzvf passenger-6.0.12.tar.gz -C .var/passenger

asdf plugin add ruby

sudo yum install gcc gcc-c++ glibc glibc-common gd gd-devel openssl-devel libcurl-devel -y

asdf install ruby 3.1.1
asdf global ruby 3.1.1

echo export PATH=/var/passenger/passenger-6.0.12/bin:$PATH >> ~/.bash_profile

※ > : 새로만들기

: 마지막에 추가

source ~/.bash_profile

passenger-install-nginx-module

enter

!누르고 스페이스 바를 이용해서 Node.js만 설정

sudo dd if=/dev/zero of=/swap bs=1M count=1024

sudo mkswap /swap

sudo swapon /swap

passenger-install-nginx-module

enter

!누르고 스페이스 바를 이용해서 Node.js만 설정

1enter

enter

export ASDF_DATA_DIR=/home/ec2-user/.asdf
export ORIG_PATH="PATH"sudosEexportPATH="PATH" sudo -sE export PATH="ORIG_PATH"
asdf global ruby 3.1.1

passenger-install-nginx-module

enter

!누르고 스페이스 바를 이용해서 Node.js만 설정

enter

1 enter

enter

enter

exit

sudo vi /opt/nginx/conf/nginx.conf

worker_processes 1;

events {
worker_connections 1024;
}

http {
server_names_hash_bucket_size 128;
passenger_root /var/passenger/passenger-6.0.12;
passenger_ruby /home/ec2-user/.asdf/installs/ruby/3.1.1/bin/ruby;

include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;

server {
    listen       80;


    server_name 3.34.47.133;

    root /var/www/aws-exercise-a/public;

   passenger_enabled on;

    passenger_app_type node;

    passenger_startup_file /var/www/aws-exercise-a/app.js;


   error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}

:wq

sudo /opt/nginx/sbin/nginx //재시작하려면 뒤에 -s reload 붙이면됨

브라우저로가서 http://3.34.47.133 치면

=> AWS exercise의 A project입니다.라고 결과값이 나옴

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

[실습] nginx, Phusion Passenger 서비스 명령어 추가

cd / etc/init.d

sudo vi nginx

nginx 시작 스크립트의 내용을 복사 및 붙여넣기해서 저장

https://git.io/JeMFD 에있음

sudo chmod 755 nginx

sudo service nginx start/stop/restart/reload/status

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

[실습] 시스템 시작 시 자동 시작 서비스에 등록

sudo chkconfig --add nginx

sudo ntsysv

nginx 체크한 후 확인선택 체크는 버튼이동은

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

다중서버환경 구축

				Auto Scaling 
				    │
				    │	
				    └      서버
					  애플리케이션

클라이언트 -- 로드밸런서 -- -- 데이터베이스
서버
애플리케이션

※ Auto Scaling : 인스턴스들의 수를 자동으로 늘리고 줄여준다
ex) 사용자가 많이몰릴땐 서버의수를 늘리고 적을땐 서버의수를 줄인다

※ AMI를 만들때 EC2는 중지 시켜야됨

■ AMI만들기

● aws08 이미지및템플릿에서 이미지 생성하기

  이미지명 aws08-exercise-image으로 만들기

  ※ AMI 와 스냅샷은 작업종료시 종료시켜줘야됨
	AMI ID가 노출되면 안됨

● 시작 템플릿 생성하기

  aws08-exercise-launch-template
  initial version
  내 소유 aws08-exercise-image 선택

  인스턴스 유형 - t2.micro

  키 페어 - aws08-key

  보안그룹 - SSH , WEB

● Auto Scaling 그룹 생성
    
  AWS08-EXERCISE-GROUP

  시작 템플릿 - aws08-exercise-launch-template 선택

  네트워크 가용 영역 및 서브넷 - 2a , 2c 선택하고 다음

  그룹 크기조정 원하는 용량 : 1 , 최소 : 1 , 최대 : 2
  
  대상 추적 크기 조정 정책 선택

  대상 값 : 60

  축소 비활성화

  태그 추가 

  Name / aws08-exercise-group 

  생성

  

[실습] Auto Scaling을 통한 인스턴스 자동 추가,제거

인스턴스 연결

sudo amazon-linux-extras install epel -y

sudo yum install stress -y

stress --cpu 1 --timeout 600

※ 실습을 끝낸 후 그룹내의 인스턴스들을 모두 종료하고 싶다면 목표 용량을 0으로 변경하면됨

■ AWS Elastic Load Balancing을 이용한 서버 트래픽 분산관리

[실습] Auto Scaling 그룹 , 대상 그룹 , 로드 밸런서 구성

● 로드밸런서 생성

aws08-exercise-lb

네트워크 가용 영역 및 서브넷 - 2a , 2c 선택

보안그룹 - SSH , WEB , default

작업 중간에 대상 그룹생성

● 대상 그룹 생성

aws08-exercise-target-group

상태 확인 경로 - /health 넣고 다음

aws08-exercise-group 지정해주고 포함시키고 생성

대상그룹선택 - aws08-exercise-target-group

생성

DNS 주소 복사해서 브라우저에 붙여넣으면

=> AWS exercise의 A project입니다.라고 결과값이 나옴


● 도메인으로 접속하기

Route 53
호스팅영역 클릭
busanit-lab.com 클릭
레코드 생성	
별칭 선택
Application/Classic Load Balancer에 대한 별칭 선택
아시아 태평양(서울)
dualstack.aws08-exercise-lb-1928292237.ap-northeast-2.elb.amazonaws.com 선택
생성
aws08.busanit-lab.com 도메인주소에 치면

=> AWS exercise의 A project입니다.라고 결과값이 나옴
profile
클라우드 엔지니어가 되고싶은 클린이

0개의 댓글