서울로 선택ec2메뉴 접속후 대상그룹 메뉴 선택 -> 우측 상단 대상 그룹 생성 클릭

대상 유형 : 이전에 생성했던 EC2 인스턴스에 연결할 목적이니 인스턴스 선택
대상 그룹 이름 : 직관적인 이름으로 작성
트래픽 전달 방식 : 현재 EC2 인스턴스는 IPv4 주소를 가지며, 백엔드 서버는 80 포트를 사용중이고, HTTP로 통신한다. 이에 맞춰 설정해준다.


상태 검사 설정
대상에 일정한 주기로 전송할 상태 검사를 설정하는 단계. HTTP에 /health 입력

이렇게하면 대상 그룹의 EC2 인스턴스에 HTTP 프로토콜을 사용하여 GET /health 요청을 일정한 주기로 전송.
정상적으로 작동하기 위해서는 따로 API를 구축해야함
나머지는 그대로 두고 다음 클릭.
대상 등록
등록할 인스턴스 좌측 체크박스 클릭후.
선택한 인스턴스를 위한 포트는 ELB로 들어온 요청을 대상에 추가한 인스턴스의 80번 포트로 전달하겠다는 의미.
하단의 아래에 보류 중인 것으로 포함을 눌러 인스턴스 대상에 추가.

다음 클릭
지금까지 등록한 내용을 전체적으로 보여주는 것이니 확인 후 이상이 없다면 대상 그룹 생성 클릭
좌측 대상 그룹 메뉴에서 확인

서울로 선택EC2 메뉴에서 로드 밸런서 메뉴 클릭 -> 우측 상단 로드 밸런서 생성 클릭
Application Load Balancer 선택

가용영역 및 서브넷 모두 체크
새 보안 그룹 생성 클릭


보안그룹 생성 클릭후 다시 돌아오기보안 그룹 에서 방금 추가한 보안 그룹 선택리스너 및 라우팅에서 대상그룹은 우리가 이전에 추가했던 그룹으로 선택
로드밸런서 생성 클릭
로드밸런서 메뉴에서 항목 추가된걸 확인
이전에 로드밸런서를 생성할때 상태검사를 할 수 있도록 경로를 지정하였다.
하지만 상태 검사에 사용되는 API를 추가하지 않으면 로드밸런서는 서버가 현재 정상적이지 않다고 판단합니다.
예제 파일 다운로드
git clone https://github.com/JSCODE-BOOK/aws-elb-springboot.git
코드 확인(GET /health 요청시 응답하도록 되어있음)
AppController.java
@RestController
public class AppController {
// GET /health 요청 시 이 메서드 호출
@GetMapping(“health”)
public ResponseEntity<String> healthCheck() {
// HTTP 200 OK 응답과 메시지 반환
return ResponseEntity.ok().body(“Success Health Check”);
}
}
$ sudo lsof -i:80 # 80번 포트에서 실행되는 프로세스 확인
$ sudo kill {PID 값} # 80번 포트에서 실행되는 프로세스가 있다면 종료
$ cd ~/aws-elb-springboot
$ ./gradlew clean build -x test # 스프링 부트 프로젝트 빌드
$ cd build/libs
$ sudo nohup java -jar aws-elb-springboot-0.0.1-SNAPSHOT.jar & # JAR 파일 실행
$ sudo lsof -i:80 # 80번 포트에서 실행되는 프로세스 조회

좌측 로드밸런서 메뉴 클릭후 로드밸런서 이름을 클릭

세부정보가 나타나는데 우측 하단의 DNS 이름을 통해서도 접속이 가능하다.
http://<dns 이름>/health

정상적으로 Success Health Check 가 뜬다면 성공.

레코드 편집 클릭


AWS에서 ACM(AWS Certificate Manager)라는 서비스를 활용하여 인증서 발급.
ACM을 통해서 발급받는 인증서는 대부분 무료.
자세한건 공식페이지 를 통해서 확인
ACM 콘솔 접속

리전을 서울로 꼭 설정하세요.
인증서 요청 클릭

그대로 퍼블릭 인증서 요청에 두고 다음 클릭

이전에 만들어뒀던 도메인 주소 입력

나머지 그대로 둔 후 요청 클릭

좌측인증서 나열 메뉴 클릭후 항목 추가된 것 확인
(정상적인 사용자가 발급한 것인지 확인 후 완료됨)

인증서 목록에서 ID 클릭후 상세화면으로 넘어가기.
도메인 소유자라는 사실을 인증하기 위해 ACM에서 제공하는 CNAME 이름과 값을 도메인의 레코드에 입력해야함.
레코드 생성 클릭을 통해서 쉽게생성할 수 있지만 직접 레코드를 수동으로 생성.

ROUTE 53 메뉴에서 호스팅 영역 클릭후 나오는 도메인 주소 항목중 하나의 ID 클릭후 우측의 레코드 생성클릭

레코드 생성 화면에서 레코드 유형을 CNAME으로 선택.
이전 과정에서 ACM에서 제공되는 CNAME이름을 레코드 이름에 CNAME값을 값 에 작성한 후 생성.
주의점 :
CNAME 이름을 복사 붙여넣기 할때, 전부다 붙여넣으면 안되고 도메인이 정상적으로 되도록 해야함.
예를들어,CNAME 이름이2343535_A.B.C.com이라고 치자. 그렇다면 레코드 생성때 뒤에B.C.com이런식으로 편집 불가능한 메인 도메인이 작성되어 있을 것이다.
그럼CNAME 이름에서2343535_A부분만 붙여 넣으면 된다.CNAME 값은 그대로 작성.

ACM 메뉴로 들어와서 검증이 완료되었는지 확인.
EC2 콘솔에서 로드밸런싱 -> 로드 밸런서 메뉴 이동. 이전에 생성한 로드 밸런서 이름 클릭리스너 추가 클릭


추가 버튼 클릭으로 생성 마무리.리스너 규칙항목에 추가 됨.


리스너 추가 클릭
추가 버튼으로 생성 마무리