Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot 
19. 중간프로젝트 (1M)
10. Linux 명령어
11. AWS(v)
12. React JS [Front-end]
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)

AWS

AWS ELB(Elastic Load Balancing)

로드밸런스 종류

  1. 어플리케이션 로드밸런서(ALB) - Http 전용 로드밸런서
  2. 네트워크 로드밸런서(NLB)
  3. 게이트웨이 로드밸런서(GLB)

ALB 로드밸런서

  1. URL에 따른 라우팅이가능
  2. URL호스트에 따른 라우팅이 가능
  3. 쿼리스트링과 헤더에 따른 라우팅이 가능

로드밸런스 만들기

  1. EC2인스턴스 2개 생성
  2. 보안그룹 새롭게 생성 - http, ssh 허용
  3. user data에는 아래구문 추가
#!/bin/bash
sudo apt-get update
sudo apt-get install -y apache2
apache2 -version
sudo service apache2 start
sudo chmod 777 /var/www/html/index.html
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
  1. 브라우저를 통해 EC2동작 확인
  1. 로드밸런싱 탭으로 들어간 후 ALB클릭
  2. 이름은 소문자로 입력
  3. 네트워킹은 가용영역이 최소 2개이 상 필요하며 서브넷은 모두 선택
  • 없다면 생성
  • VPC로 들어가서 서브넷으로 들어가서 가용영역 설정
  1. 로드밸런서의 보안그룹
  • HTTP만 허용하는 보안그룹 새롭게 생성
  • demo-elb-security / 인바운드 0.0.0.0/0
  1. 리스너 라우터 그룹설정
  • 대상그룹은 로드밸런서가 연결할 뒤에 있는 서버
  • 대상그룹 생성 (EC2-Instance)
  • 대상그룹설정에 Instance를 설정
  • 프로토콜은 HTTP 80으로 유지
  • 대상그룹으로 들어간 후 대상그룹에 EC2인스턴스 추가
  • 등록된 대상그룹에서 인스턴스를 추가하는 작업 필요
  1. 로드밸런서 생성
  2. 엔드포인트 주소(DNS Name)를 확인하고 브라우저에서 연결

ALB로드밸런서 (특정 요청 처리)

  1. 로드밸런서로 들어오는 요청
  2. 퍼블릭 IP를 통해 접근하는 요청
  1. EC2의 보안그룹으로 이동
  2. EC2의 기존 Http요청의 0.0.0.0/0을 삭제
  3. 새로운 Http요청을 만드는데 아래쪽에 있는 로드밸런서 그룹 허용
  4. 브라우저에서는 EC2를 통해서 접근할 수 없음
  5. 오직 로드밸런서를 통해서 접근 가능
  1. 로드밸런스로 들어간 후 Listeners항목 선택
  2. Rules(규칙) 탭 접근
  3. Manage rules에선 추가적인 규칙편집 가능
  4. 규칙 추가
  5. 이름 error에 대한 요청 추가
  6. 규칙조건 - 경로/error
  7. 대상그룹으로 전달 선택
  8. 규칙작업정의 - 고정 응답반환
  • ResponseBody에 잘못된 요청 메시지 추가
  1. 브라우저에서 결과 확인

로드밸런서 고정세션

  1. 애플리케이션 기반 쿠키(토큰) : 애플리케이션에서 직접 쿠키를 생성하고, 로드밸런서에 입력하여 유지시키는 방식
  2. 로드밸런서 발행 쿠키 : 로드밸런서가 자동으로 쿠키를 생성하고, 유지시키는 방식
  1. 대상그룹 > 속성 탭 > 편집
  2. 대상 선택 구성고정으로 활성화
  3. 로드 밸런서 생성 쿠키 선택
  • 만약 application기반 쿠키를 사용하려면, 이름을 지정하고 프로젝트에서 해당 쿠키 발행
  1. 쿠키 수명주기동안 동일한 클라이언트에서는 이제 동일한 EC2로 연결됨

오토스케일링(Auto Scaling)

  1. 로드밸런서만 남기고, 기존의 EC2는 모두 중단
  2. 대상그룹에서는 고정세션 해제
  3. Auto Scaling탭 - Auto Scaling 그룹
  4. Auto Scaling그룹 생성
  5. 시작템플릿 생성
  • userData에 추가
#!/bin/bash
sudo apt-get update
sudo apt-get install -y apache2
apache2 -version
sudo service apache2 start
sudo chmod 777 /var/www/html/index.html
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
  1. 오토스케일그룹에서 위에서 만든 템플릿을 선택하고 다음으로 넘어감
  2. 인스턴스 시작옵션
  • 기본 VPC, 서브넷은 생성가능한 곳만 선택 (서브넷 public ip자동 할당은 필수)
  1. 고급옵션
  • 기존 로드밸런서에 연결
  • 대상그룹은 EC2-Instance선택
  • 상태확인 활성화 - EC2가 다운되면 자동으로 꺼주는 기능
  1. 그룹 크기 및 크기 조정 정책 구성
  • 크키 전부 1로 설정
  1. 오토 스케일링 그룹 생성
  2. 오토 스케일링 그룹의 활동탭에 들어가면, 자동으로 인스턴스 생성
  3. ALB에서 엔드포인트 주소(DNS Name)을 확인하고 브라우저에서 연결

AWS RDS(Relation database service)

  1. 데이터 베이스 생성, 설정 완전 자동화
  2. 백업기록
  3. 성능을 모니터링
  4. 다중 AZ설정 가능
  5. 수평확장(인스턴스 수 증가), 수직확장(능력치 증가) 가능

다중AZ 데이터베이스

다중AZ + RDS프록시

  1. 다중AZ데이터베이스 환경에서, 특정 DB 인스턴스에 장애가 발생해도 예비 DB인스턴스에 자동으로 연결하여 다운타임(off시간)을 최소화
  2. RDS Proxy의 두번째 장점은 Connection Pool제공