[AWS] EIP 사용하여 Applicaton Load Balancer IP고정 할당하기

https://aws.amazon.com/ko/premiumsupport/knowledge-center/alb-static-ip/

아마존 자습서를 참고하여 만들었습니다.


VPC 구성

VPC setting에서는 VPC and more을 선택한다.
이름은 원하는 이름으로 만들고
IPv4 CIDR block 172.31.0.0/16을 넣는다.

퍼블릭 서브넷과 프라이빗 서브넷은 각각 두개씩하고
VPC 엔드포인트는 안만들어도 된다.
그리고 create VPC!

그러면 이렇게 순서대로 저 많은 항목들이 초록색으로 바뀌면서 만들어 질 것이다.


EC2 instance

EC2 instances에서 현재 가동되고있는 인스턴스가 없어서, 오른쪽 위 오렌지색 눌러서 새로 만들어 준다.

Quick Start에서 우분투를 눌러준다. 그리고 밑에 AMI를 토글해서 버전을 20.04로 설정한다.
그리고 인스턴스 타입은 t2.micro로 설정한다.

키페어는 미리 만든게 있으면 선택하고, 없으면 오른쪽 Create new key pair를 눌러서 새 키 페어를 만들어준다.
vpc는 미리 만들어준 것으로 설정하고,보안그룹은 새로 만들어준다.

보안그룹 이름은 알아서 설정해준다.
그리고 ssh접속 anywhere로 설정하고 HTTP 80 My IP로 설정한다.

그리고 보안그룹에 HTTP 설정 custom 에서 내 보안그룹을 참조하게 설정한다.(default도 자기 자신을 참조함 하지만 모든 트레픽인데 나는 80번 포트만 오픈할 생각임)


Application 로드밸런서

로드밸런서 선택화면인데 처음에는 Application 로드밸런서부터 만들거다. 왼쪽 밑 create를 눌러서 시작할 수 있다.

로드밸런서 이름은 마음대로 정하면 된다. 다른건 건드릴 필요 없다.

 

Vpc 는 내가 만들었던 것으로 설정되었는지 확인한다. 맵핑은 두개 다 체크한다. 혹시 안넘어가는 부분이 있다면, 퍼블릭으로 바꿔주면 넘어갈거다.

보안그룹은 아까 만들었던 보안그룹을 넣으면 된다.
그리고 타겟그룹을 넣어야하는데, 미리 안만들었으면 밑에있는 create target group을 넣어서 만들어준다.


Application 로드밸런서 타겟그룹만들기

타겟 타입은 instances로 선택한다.
그리고 이름은 구분하기 쉽게 알아서 잘 지어준다. 나는 mock-alb-tg로 설정했다.

HTTP와 VPC 내가 설정한것이 맞는지 잘 확인 더 건드릴게 없다. 만들어주면 된다.

 

이렇게 그 다음화면에 타겟을 등록하는데, 미리 만들어둔 인스턴스를 클릭하고 include as pending below를 하면 된다.

이렇게 잘 생성이된다. 지금은 아직 이 타겟그룹을 애플리케이션 로드밸런서에 붙이지 않아서 None associated 상태이다.

타겟그룹 생성을 완료했으면 다시 로드밸런서 화면으로 돌아가서 타겟그룹을 선택하고, 로드밸런서를 만들면 된다.


Network 로드밸런서

두번째 그림에 있는게 네트워크 로드밸런서이다. Create를 눌러서 진행하자.

 

적당히 구분될 이름으로 지어주면 된다. 다른건 이 화면에서 건드릴게 없다.

Vpc가 내가 만든게 맞는지 확인한다.
그리고 매핑을 해야한다.
여기서 중요한건 IPv4 settings에서 IPv4 address옵션에서 Use an Elastic IP address를 선택해야한다. 그래야 로드밸런서를 고정 아이피로 사용 가능하다.


Elastic IP

만약에 미리 안만들었다면 Elastic IP address에서 오른쪽 주황색 버튼을 눌러서 생성할 수 있다.

지역만 잘 확인해주면 된다. 나는 북 버지니아여서 'us-east-1'이 맞다.


Network 로드밸런서 타겟그룹 만들기

네트워크 로드밸런서 타겟그룹은 Application Load Balancer를 선택한다.
그리고 타겟 그룹 이름은 구분이 되게 지어준다. 나는 mock-nlb-tg로 설정했다.

그리고 다음 화면으로 넘어가면 이미 만들어놓은 application 로드밸런서를 선택할 수 있게 되어있다. 미리만든 로드밸런서를 넣어주자.

 

타겟 그룹에서 위에서 만든 nlb용 타겟 그룹을 넣어준다.


EC2 instance 안에 nginx를 설치 후 정적파일 올리기

그리고 다시 인스턴스로 돌아온다.

퍼블릭 IPv4 DNS 주소를 복사한다.

그리고 VS code 에서 ssh 접속을 한다. HostName에 위에서 복사한 DNS 주소를 붙여넣고. pem키 경로를 확인한다.


EC2 instance 안에 nginx를 설치 후 정적파일 올리기

참고

https://amuse.tistory.com/10

 

1. NGINX 정적(static)파일 연결하기

NGINX - 정적 파일 연결하기 | Serving Static Content 먼저, Nginx 로 Static 파일을 반환하는 웹서버를 만들어보자. 먼저 웹서버가 하는일을 생각해보자! 포트를 listen 해야한다. 정적파일이 존재하는 곳에

amuse.tistory.com

sudo nano index.html

인스턴스 SSH 접속을 하면 index.html 파일을 만든다.
나중에 이 파일을 nginx.conf 파일을 수정해서 서버에 올릴거다 경로를 잘 확인하자. 나는 /home/ubuntu경로에서 만들었다.

sudo apt update
sudo apt install nginx

이 커맨드들로 nginx를 설치한다.

 

sudo find / -name nginx.conf

그리고 이 명령어로 nginx.conf 파일을 찾는다. 수정해줄거다.
/etc/nginx 디렉토리 안에 있다.

 

sudo vim nginx.conf

저 경로에 들어가서 nginx.conf 파일을 수정할건데, 그냥 vim nginx.conf를 하면 저장이 안된다. 꼭 sudo 를 붙여서 해야한다.

그리고 HTTP 라인 밑에

server {
        listen     80;
        server_name  localhost;

        location / {
            root /home/ubuntu;
            index index.html;
        }
    }

이 부분을 넣어줘야한다. 80번 포트에서 서버가 돌고있다는 말이다. 그리고 index.html 파일이 /home/ubuntu에 있으니 저렇게 설정한다

그리고 조금 내리면 include /etc/nginx/sites-enabled/* 이 부분이 보이는데 주석 처리를 해줘야한다. 아니면 이게 우선이라서 위에서 설정한 index.html 파일내용이 표시 안된다.

sudo service nginx start

이 명령어를 사용해서 nginx를 가동할 수 있다.


로드밸런서 Health check

 

그리고 인스턴스에 퍼블릭 IPv4 주소로 들어가면 Hello world! 를 반환해줄 것 같았는데! ㅜ 403 Forbidden이 뜬다.

찾아보니 부모 폴더의 권한도 중요하다고 한다.

현재 index.html 파일은 /home/ubuntu 경로에 있다. 그래서 ubuntu 폴더의 권한을 확인했다.

chmod 755로 권한을 바꾸고 ls -al로 다시 확인한다.

그리고 다시 403이 표시 되었던 화면에서 새로고침을 해주면, hello world!를 표시해준다. 

 

어플리케이션 로드밸런서에 붙어있는 타겟 그룹을 보면 잘 붙어서 인스턴스 내부에서 80번 포트에 서버가 잘 돌고 있으니   healthy를 반환해주는 것을 볼 수 있다.


로컬 hosts에 등록

/etc/hosts 에 들어가서 

sudo vim hosts

이렇게 수정을 해주고 저장하고 나오면

devops.hanatour.com 주소로 들어갔을때 이렇게 이쁘게 hello world가 떠주는 것을 알 수 있다.

mock-alb-1169964323.us-east-1.elb.amazonaws.com

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/AWS 다른 글

    이전 글

    다음 글