들어가기 앞서 . . .
EC2에 배포한 Spring Boot 애플리케이션에 로드 밸런서를 연동하고자 했다.
로드 밸런서는 트래픽 분산 역할 외에도 연결된 서버가 정상인지 주기적으로 확인하는 헬스 체크 기능이 있다.이번 글에서는 Spring Boot 서버에 헬스 체크 API를 설정하고, 로드 밸런서가 이 API를 통해 인스턴스의 상태를 확인하도록 구성하고, 로드 밸런서를 통해 연결한 EC2 서버로 접속해보자.
ELB 헬스체크하기
전에 배포해두었던 EC2 인스턴스를 연결해서 들어가자.
우선 상태체크를 하는 api를 만들어야하기때문에 Build.gradle에 아래 코드를 추가해준다.
#터미널에서 build.gradle 파일을 수정
$ vim build.gradle
i를 누르면 파일에 문자를 삽입할 수 있다.
아래의 코드를 dependencies에 추가해주자.
implementation 'org.springframework.boot:spring-boot-starter-actuator'
:wq! 를 입력해 파일을 저장하고 나온다.
이후 yml파일에 아래 코드를 추가해준다.
yml파일은 아래 경로에 존재한다
~/ec2-spring-boot-test/src/main/resources
yml파일도 vim 명령어를 통해서 수정해주면 된다.
management:
endpoints:
web:
exposure:
include: /actuator/health
이후 꼭 다시 메인 프로젝트 파일로 들어가서 ./gradlew build를 해주자!
스프링부트 서버를 실행시키고 /actuator/health라는 요청을 보내보자.
status가 up이라면 헬스 체크가 잘 된것이다!
로드밸런서에 들어가서 DNS이름을 확인해보자. 로드밸런서의 특징은 IP가 없고, 도메인 주소로 접속을 할 수 있다.
DNS 이름에 뜨는 주소로 접속을 해보자.
들어가보면 EC2 인스턴스에서 떴던 페이지가 뜬다.
ELB와 EC2 인스턴스가 성공적으로 연결되었다는 것을 알 수 있다!
ELB에 도메인을 연결해보자
ELB도 결국 하나의 컴퓨터이다. 그 전에는 사용자들이 직접 EC2에 요청을 보내도록 하였지만 이제 ELB로 요청을 보내도록 해야하기때문에 ELB에도 도메인을 연결해주어야한다.
실습 예제에서는 route53을 사용하지만, 유료이기때문에 저번에 사용했던 무료 도메인을 사용 할 예정이다.
근데 강사님이 작성해주신 커뮤니티글을 보고 따라하니 오류가 발생한다.
ELB는 A 레코드가 아닌 별칭인 CNAME 레코드로 설정해주자.
ELB 도메인 연결을 끝냈으면 다시 EC2 인스턴스를 실행한 뒤, ELB 주소로 연결한 api.haennni.kro.kr로 접속해보도록 하자!
ELB로 연결해주었던 api.haennni.kro.kr로 접속하니 잘 뜨는 것을 확인할 수 있다.
직접 EC2 서버로 접근하려고 하니 오류가 발생한다.
이렇게 ELB를 셋팅하고 ELB에 도메인 연결까지 해보았다. 다음 포스팅에는 HTTPS를 연결하고 적용해보도록하자.
마무리하며
Spring Boot를 통해 로드 밸런서에서 상태 확인이 가능하도록 설정했다.
또한 ELB와 EC2를 성공적으로 연결하며 ELB에 도메인까지 연결해 실제로 도메인으로 접속되는지 확인했다.
로드 밸런서라는 용어를 처음 들어서 막막했는데 막상 해보니 흥미롭고, 트래픽을 분산 처리 해주도록 도와준다는 점이 흥미로웠다.
확실히 왜 이러한 기능이 생겨났는지부터 알고나니까 더 기술들이 와닿으면서 빠르게 습득이 되는 것 같았다.
다음 글에서는 HTTPS를 적용해 보안을 강화하는 과정을 정리할 예정이다.
'AWS' 카테고리의 다른 글
[AWS] HTTPS 적용하기 (1) | 2025.06.07 |
---|---|
[AWS] ELB 셋팅하기 (0) | 2025.06.06 |
[AWS]ELB와 SSL/TLS & HTTPS 기초지식 (0) | 2025.02.26 |
[AWS]AWS EC2 설정하기 (0) | 2025.02.14 |
[AWS] AWS EC2 기초지식 (0) | 2025.02.13 |