https://radiant515.tistory.com/565
해당 포스팅과 이어지는 포스팅입니다!
앞선 포스팅까지는 로드밸런스를 활용하여 부하 분산 아키텍처를 구현하는 실습을 진행했고
해당 포스팅에선 외부와 데이터를 주고 받기 위해 아웃바운드를 추가하고자 한다.
❗서비스 설명
from flask import Flask
from flask import request
import requests
import re
import socket
app = Flask(__name__)
# 컴퓨터 이름, ip
hostname = socket.gethostname()
hostip = socket.gethostbyname(socket.gethostname())
#외부 IP, 아래 사이트 호출 후 결과에서 추출
req = requests.get("http://ipconfig.kr")
out_ip = re.search(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1]
@app.route("/")
def home():
return '컴퓨터 이름 : {0}<br>내부 IP : {1}<br>외부 IP : {2}<br><br> 당신의 IP :{3}<br><br>Hello'.format(hostname, hostip, out_ip, request.remote_addr)
해당 코드는 외부 사이트에서 정보를 받아와서 이를 우리 서비스에 보고자 하는 코드이다!
❗VMSS 생성
VMSS를 새로 생성
아까와 다르게 이번엔 네트워크 인터페이스에서 공용IP 할당을 취소한다!
만들어둔 가상 네트워크와 로드밸런서를 연결한다.
그러고 나서 공용 IP로 접근하면 실행 안 되며 이는 당연하다.
로드밸런스는 리버스 프록시의 일종으로 클라이언트의 요청을 받아 적절한 백엔드 서버로 전달하는 역할을 한다.
그래서 같은 포트로 정보를 요청, 응답을 하는 웹 통신과는 다른 점을 가지고,
이전 포스팅에서는 VMSS를 생성 후 IP로 접근하면 바로 접속이 됐지만 이번 과정에서 되지 않는 이유는 공용 IP 할당 여부이다.
아까는 공용IP가 할당되어 있었기 때문에 자동으로 해당 IP를 통해 데이터를 전달해 주었는데, 이번엔 그 루트를 막았기 때문에 서비스로 접근할 수 없던 것이다.
❗NAT 게이트웨이
위 문제를 해결하기 위해 NAT 게이트웨이를 생성한다.
NAT 게이트웨이 이름 설정
외부 정보가 지나다닐 공용IP를 새로 할당해 준다.
VNet과 받은 데이터를 전달할 서브넷 체크
❗공용 IP 접속
이제 다시 IP를 접속하면 잘 실행되는 것을 볼 수 있다!
728x90
반응형
'🔻DevOps > Cloud' 카테고리의 다른 글
[Auzre] Bastion 서버 생성 후 서브넷 접속하기 (0) | 2024.07.12 |
---|---|
[Cloud] Bastion Server (0) | 2024.07.12 |
[Azure] 로드밸런스 수정해서 80번 포트로 연결 (0) | 2024.07.12 |
[Azure] 로드밸런싱을 사용하여 VMSS와 연결하기 (0) | 2024.07.12 |
[Azure] 우분투 서버 구축 후 이미지 생성 (0) | 2024.07.11 |