해당 형태의 서버를 구축해 보고자 한다.
현재 필요한 리소스는 차례대로 공용IP 1개, LB, 서브넷과 네트워크 보안 그룹, VM 2대로 이를 만들 것이다.
❗Flask앱 자동 배포하기
같은 형태의 VM을 2대 만들고 이 안에는 플라스크 앱이 자동으로 실행되게 하고자 한다.
이를 위해 이미지를 생성하는 과정이다.
(이 부분은 추후 포트를 통해 접속 테스트를 하기 위한 사전 작업으로 다른 서비스를 자동 실행시키거나 VM을 만든 후 각각 직접 테스트를 위한 환경을 구축해도 된다!)
서버를 만든 후 실행하고자 하는 앱을 깃허브를 통해 클론 받고, 해당 디렉토리로 이동한다.
sudo mv /home/yujin/skt-fly-ai-flaskapp /usr/bin
실행할 서비스의 디렉토리로 이동
sudo vi /lib/systemd/system/flask.service
[Unit]
Description=flask simple server. python-flask
After=syslog.target network.target
[Service]
Type=idle
User=bit1010
WorkingDirectory=/usr/bin/flaskapp
ExecStart=python3 -m flask run --host=0.0.0.0 --port=5000
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable flask.service
sudo systemctl start flask.service
active로 상태가 바뀌면 정상적으로 실행된 것이다. 이후 서버를 재부팅한다.
sudo reboot
다시 서버 접속 후 5000번 포트로 curl 명령을 수행해 보면 정상적으로 실행된 것을 볼 수 있다!
curl 127.0.0.1:5000
❗가상 머신 이미지 만들기
이미지 생성 후 이미지를 만들기 위해 만든 가상 머신 관련 리소스는 삭제
참고: https://radiant515.tistory.com/558
❗VNet만들기
가상 네트워크 이름 설정
10.1.0.0/16으로 공간을 분리 후 '서브넷 추가' 클릭
flaskSubnet를 10.1.0.0/24로 생성해 준다. 이 서브넷 안에 가상머신을 추가할 예정이다!
❗가상머신 만들기
가상 머신 생성 시 이미지는 상단에서 만든 이미지를 선택하고, 암호는 이 이미지를 생성할 때 사용한 암호 방식과 동일해야 한다.
네트워킹에서 가상 네트워크를 'flaskSubnet' 설정하고, 네트워크 보안 그룹은 없음으로 설정한다.
이와 같은 조건으로 VM을 2개 생성한다.
❗부하 분산 장치 생성
로드밸런스라고 부르며 네트워크 트래픽을 여러 서버나 리소스 간에 분산하여 애플리케이션의 가용성과 성능을 최적화하는 역할을 합니다.
위와 같이 조건 설정
맨 앞에서 출입구 역할을 해줄 로드밸런스의 프론트엔드의 설정으로 공용IP를 할당해 준다.
프론트엔드로 받아온 패킷을 백엔드로 전달하기 위해 설정하는 부분으로
위에서 만든 2개의 VM이 속한 서브넷을 선택 후 가상머신을 전부 추가해 준다.
부하 분산 규칙 추가를 통해 로드밸런스의 프론트엔드 5000포트에서 받은 패킷을 백엔드 5000번 포트로 전달할 수 있도록 설정한다.
상태 프로브에서 추가적으로 설정해 준다.
상태 프로브란 이를 통해 로드 밸런서는 백엔드 인스턴스가 요청을 처리할 수 있는지 확인하고, 비정상적인 인스턴스를 자동으로 트래픽 분산에서 제외하는 역할을 한다.
로드밸런스에 할당된 공용IP를 확인한다.
❗네트워크 보안 그룹
이름 설정 후 만들기 클릭
생성된 네트워크 보안 그룹에서 '인바운드 보안 규칙'에서 추가 클릭
대상 포트에 5000번 포트를 입력 후 추가
설정에서 서브넷 설정 페이지로 이동 후 '연결' 클릭 후
해당 네트워크 보안 그룹을 아까 만든 flaskSubnet과 연결한다.
이렇게 설정해 주면 자동으로 서브넷 아래에 생긴 가상머신들은 같은 네트워크 보안 그룹에 속하게 된다.
❗공용IP로 접근
공용IP로 접근하면 로드밸런스가 알아서 가상머신 1이나 2로 자동으로 배정해 준다!
위 과정이 끝나면 생성된 리소스 현황이다.
❗VMSS로 만들어보기
위의 과정에선 같은 기능을 하는 VM을 각각 2대 만들었지만 이번엔 VMSS(가상 머신 확장 집합)으로 가상 머신을 생성하고자 한다.
이까 만든 이미지 개요에서 'VMSS 만들기' 클릭 후 캡쳐와 같은 설정으로 입력 및 선택
암호는 마찬가지로 이미지 생성 시 사용한 암호 방식과 동일해야 한다.
가상 네트워크는 위에서 만든 VNet을 선택한다.
네트워크 인터페이스는 네트워크 보안 그룹 '없음'으로 선택 후 VMSS를 생성한다.
생성된 VMSS에서 '상태+크기 조정 > 확장 중'에서 인스턴스 수를 조정할 수 있고 이를 2개로 수정한다.
이처럼 VMSS는 인스턴스 수만 늘리면 자동으로 로드밸런스 백엔드 풀로 추가시켜주는 것을 알 수 있다.
❗공용IP로 접근
공용 IP로 접근하면 아까와 같이 자동으로 로드밸런싱 처리가 되는 것을 볼 수 있다!
'🔻DevOps > Cloud' 카테고리의 다른 글
[Azure] NAT 게이트웨이 생성 후 외부 데이터 주고 받기 (0) | 2024.07.12 |
---|---|
[Azure] 로드밸런스 수정해서 80번 포트로 연결 (0) | 2024.07.12 |
[Azure] 우분투 서버 구축 후 이미지 생성 (0) | 2024.07.11 |
[Azure] 우분투 서버 만들기 및 Public IP로 접속하기 (0) | 2024.07.08 |
[AWS] S3 생성 (0) | 2024.03.10 |